Huggingface托管机器学习模型及API提供

在这里插入图片描述

推荐:用 NSDT编辑器 快速搭建可编程3D场景

我想在我的网络和移动应用程序中使用机器学习模型,但要做到这一点,我必须在某个地方托管我的机器学习应用程序。

托管预先训练的 ML 模型称为推理。 我只想添加一些 Python ML 代码并快速获得 REST API,但事实证明找到一种简单的方法来实现这一点比我预期的要困难。

“我只想添加一些 Python ML 代码并获得 REST API”
有很多托管提供商,包括 Amazon AWS 和 Google GCP 等大型提供商,但使用这些提供商的过程很复杂,并且通常需要构建自己的 Flask REST API。

幸运的是,@prundin 和 @abidlabs 有一个解决方案:Gradio 和 Huggingface Spaces。

1、在 Huggingface 上创建一个新空间

Huggingface 就像 GitHub,但适用于 ML 模型和应用程序。 Huggingface 上的“Space”是一个 ML 应用程序,你可以通过 Git 进行更新。 空间根据CPU类型定价,最简单的一个是免费的!

Gradio 是 ML 应用程序的用户界面组件(例如输入字段)库。

通过以下方式创建新空间:

转到 space并单击创建新空间。
如果不确定,请选择 OpenRAIL 许可证。
选择Gradio作为Space SDK。

在这里插入图片描述

2、本地开发设置

转到你的开发文件夹并克隆你的空间:

git clone https://huggingface.co/spaces/USER_NAME/SPACE_NAMEcd SPACE_NAME

设置 Python、Gradio 等:

# Create and activate a “safe” virtual Python environment (exit with command “deactivate”)
python3 -m venv env
source env/bin/activate# Create a .gitignore file to exclude the packages in `env` folder
echo "env/" >> .gitignore# Install Gradio
pip3 install gradio# Update the list of required packages (do this every time you add packages)
pip3 freeze > requirements.txt

3、README 文件中的设置

README.md 包含你的应用程序的一些关键设置。

我在 Huggingface 的实时环境中遇到了一些错误,直到我意识到我必须锁定 Python 版本以使其与我本地使用的版本相同。 通过如下命令查看本地版本号:

python3 --version

然后将版本号添加到 README.md 中,如下所示:

python_version: 3.9.13

4、创建用户界面和 REST API

创建一个空白的 app.py 文件:

touch app.py

编辑app.py:

import gradiodef my_inference_function(name):return "Hello " + name + "!"gradio_interface = gradio.Interface(fn = my_inference_function,inputs = "text",outputs = "text"
)
gradio_interface.launch()

使用 Git 将文件上传到 Huggingface:

git add .
git commit -m "Creating app.py"
git push

5、在 Huggingface 上测试应用

不管你是否相信,你现在已经有了一个带有 REST API 的实用应用程序!

在浏览器中打开如下网址:

https://huggingface.co/spaces/USER_NAME/SPACE_NAME

请参阅此处的示例 。

在这里插入图片描述

  • 用户界面:你可以在名称框中输入内容,然后按提交。
  • REST API 接口:在页面底部有一个名为“Use via API”的链接。 单击它以获取说明,但你现在可以使用 REST 调用应用程序:
curl -X POST -H 'Content-type: application/json' --data '{ "data": ["Jill"] }' https://USER_NAME-SPACE_NAME.hf.space/run/predict

REST API将返回如下结果:

{"data":["Hello Jill!"],"is_generating":false,"duration":0.00015354156494140625,"average_duration":0.00015354156494140625
}

6、在本地测试应用程序

在本地你可以运行:

python3 app.py

现在可以在 http://127.0.0.1:7860/ 上以交互方式测试你的应用程序,并在 http://127.0.0.1:7860/run/predict 上访问 REST API。

修改app.py时需要停止(Ctrl+C)并重新启动应用程序。

7、更进一步

你现在可以探索 Huggingface 上的所有模型,包括 Stable Diffusion 2 和 GPT-Neo,并将它们添加到你的 Spaces 应用程序中。

请参阅完整的 ML 示例,你可以看到调用 ML 模型实际上只需要很少的代码行。
在这里插入图片描述


原文链接:Huggingface托管ML API — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/112515.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【拾枝杂谈】从游戏开发的角度来谈谈原神4.0更新

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,结合最近的学习内容和以后自己的目标,今天又开了杂谈这个新坑,分享一下我在学习游戏开发的成长和自己的游戏理解,当然现在还是一枚…

尚硅谷大数据项目《在线教育之离线数仓》笔记003

视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第8章 数仓开发之DIM层 P039 P040 P041 P042 P043 P044 P045 P046 P047 P048 第8章 数仓开发之DIM层 P039 第8章 数仓开发之DIM层 DIM层设计要点: (1&a…

Docker容器学习:搭建自己专属的LAMP环境

目录 编写Dockerfile 1.文件内容需求: 2.值得注意的是centos6官方源已下线,所以需要切换centos-vault源! 3.Dockerfile内容 4.进入到 lamp 开始构建镜像 推送镜像到私有仓库 1.把要上传的镜像打上合适的标签 2.登录harbor仓库 3.上传镜…

jsp+servlet+mysql阳光网吧管理系统

项目介绍: 本系统使用jspservletmysql开发的阳光网吧管理系统,纯手工敲打,系统管理员和用户角色,功能如下: 管理员:修改个人信息、修改密码;机房类型管理;机房管理;机位…

大数据之linux入门

一、linux是什么 linux操作系统 开发者是林纳斯-托瓦兹,出于个人爱好编写。linux是一个基于posix和unix的多用户、多任务、支持多线程和多CPU的操作系统。 Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单…

Redis五种类型

Redis 基础类型 String 应用场景 缓存功能:string 最常用的就是缓存功能,会将一些更新不频繁但是查询频繁的数据缓存起来,以此来减轻 DB 的压力。 底层实现 如果字符串对象保存的是一个字符串值, 并且这个字符串值的长度大于…

【SpringCloudAlibaba】Nacos服务注册和配置中心配合nginx负载

文章目录 概述注册中心POMYML启动类 CAP配置中心POMYML启动类ConfigClientControllerNacos中的匹配规则三种方案加载配置示例 集群部署概述部署模式修改derby为mysql配置cluster.conf编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口Nginx的配置&#xff…

Android 13 - Media框架(8)- MediaExtractor

上一篇我们了解了 GenericSource 需要依赖 IMediaExtractor 完成 demux 工作,这一篇我们就来学习 android media 框架中的第二个服务 media.extractor,看看 IMediaExtractor 是如何创建与工作的。 1、MediaExtractorService media.extractor 和 media.p…

资源分享| 4种聚类算法及可视化(Python)

在这篇文章中,基于20家公司的股票价格时间序列数据。根据股票价格之间的相关性,看一下对这些公司进行聚类的四种不同方式。 苹果(AAPL),亚马逊(AMZN),Facebook(META&…

Unity打包Windows程序,概率性出现无法全屏或分辨率不匹配

排除代码和Resolution and Presentation面板设置问题 如果程序还是不能按照预期的分辨率运行,应该是系统注册表记录了对应的设置。 解决方案: 打开注册表,使用快捷键“Win” "R"组合快捷键。在打开后面键入命令:Rege…

AR地图微信小程序:数字化时代下地图应用的新突破

随着数字化时代的到来,地图应用成为人们日常生活中不可或缺的工具。而随着增强现实(AR)技术的快速发展,AR地图微信小程序应运而生,为用户提供了一种全新的地图导航体验。本文将深入探讨AR地图微信小程序的专业性和思考…

【网络】多路转接——poll | epoll

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 书接上文五种IO模型 | select。 poll | epoll 🍧poll🧁认识接口🧁简…

java解析html

目录 场景描述一.引入依赖二.调用接口响应回来的html三.测试代码 场景描述 我调用外部接口&#xff0c;但是返回来的数据是html的格式&#xff0c;所以我就需要进行处理来获得我想要的数据。我使用的是jsoup。 一.引入依赖 <dependency><groupId>org.jsoup</gr…

js reverse实现数据的倒序

2023.8.25今天我学习了如何在数组顺序进行倒序排列&#xff0c;如&#xff1a; 原数组为&#xff1a; 我们只需要对数组使用reverse()方法 let demo [{id: 1, name: 一号},{id: 2, name: 二号},{id: 3, name: 三号},]demo.reverse()console.log(demo) 扩展&#xff1a; 当我…

【C语言】每日一题(除自身以外数组的乘积)

添加链接描述&#xff0c;链接奉上 方法&#xff1a; 暴力循环:前缀积后缀积&#xff08;分组&#xff09;: 暴力循环: 暴力循换真的是差生法宝&#xff0c;简单好懂&#xff0c;就是不实用&#xff0c;大多数的题目都会超过时间限制&#xff08;无奈&#xff09; 思路&…

载舟前行——2023跳槽涨薪,Android的1000道面试题

转眼没有口罩的一年&#xff0c;就来到下半年。比起之前几年今天愈发的艰难&#xff1b;今年的金九银十的来到&#xff0c;许多跳槽找工作的也来到了旺季。岗位的减少无疑造成的后果就是竞争大&#xff0c;所以面试优胜劣汰你需要在千百人中脱颖而出。 面试不容小觑&#xff0…

数据结构day07(栈和队列)

今日任务 链式队列&#xff1a; head.h #ifndef __HEAD_H__ #define __HEAD_H__#include <stdio.h> #include <stdlib.h>typedef int datatype; typedef struct link_list{datatype data;struct link_list* next; }link,*linkp; typedef struct circulate_line_t…

【UE 材质】实现角度渐变材质、棋盘纹理材质

目标 步骤 一、角度渐变材质 1. 首先通过“Mask”节点将"Texture Coordinate" 节点的R、G通道分离 2. 通过“RemapValueRange”节点将0~1范围映射到-1~1 可以看到此时R通道效果&#xff1a; G通道效果&#xff1a; 继续补充如下节点 二、棋盘纹理材质 原视频链接&…

Android AGP版本

做个记录&#xff1a; Android AGP版本 https://developer.android.com/studio/releases/gradle-plugin?hlzh-cn