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_NAME

cd 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 gradio

def 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言:字符函数和字符串函数(一篇拿捏字符串函数!)

目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字…

MR混合现实汽车维修情景实训教学演示

MR混合现实技术应用于汽车维修课堂中,能够赋予学生更加真实,逼真地学习环境,让学生在情景体验中不断提高自己的专业能力。 MR混合现实汽车维修情景实训教学演示具体体现在: 1. 虚拟维修指导:利用MR技术,可…

upgrade pip报错:def read(rel_path: str) -> str: syntaxerror

命令行执行以下命令就可以大功告成! wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python get-pip.py pip install --upgrade setuptools最后大功告成:

Vue3+ts封装一个简单版的Message组件

Vue3ts封装一个Message组件 项目中需要使用信息提示框的功能,ui组件库使用的是字节的arco-design-vue。看了一下,现有的Message不满足要是需求,直接使用message组件的话,改样式太麻烦。Notification组件样式倒是符合了&#xff0c…

使用maven创建springboot项目

创建maven快速启动项目 命令行或者idea、eclipse快捷创建也可以 pom.xml下project项目下导入springboot 父工程 <!--导入springboot 父工程--> <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.bo…

Flink+Paimon多流拼接性能优化实战

目录 &#xff08;零&#xff09;本文简介 &#xff08;一&#xff09;背景 &#xff08;二&#xff09;探索梳理过程 &#xff08;三&#xff09;源码改造 &#xff08;四&#xff09;修改效果 1、JOB状态 2、Level5的dataFile总大小 3、数据延迟 &#xff08;五&…

研华I/O板卡 Win10+Qt+Cmake 开发环境搭建

文章目录 一.研华I/O板卡 Win10QtCmake 开发环境搭建 一.研华I/O板卡 Win10QtCmake 开发环境搭建 参考这个链接安装研华I/O板卡驱动程序系统环境变量添加研华板卡dll Qt新建一个c项目 cmakeList.txt中添加研华库文件 cmake_minimum_required(VERSION 3.5)project(advantechDA…

科技资讯|苹果发布新专利:可在车内定位苹果的智能设备

根据美国商标和专利局近期公示的清单&#xff0c;苹果公司获得了一项名为《车内定位移动设备的系统和方式》专利&#xff0c;概述了在车内狭窄空间内如何定位 iPhone 等移动设备。 Find My 服务现阶段没有使用 UWB 来追踪 iPhone 或者 iPad&#xff0c;而是依赖 GPS 等相关辅…

【Java并发】聊聊对象内存布局和syn锁升级过程

对象存储解析&#xff1a;一个空Object对象到底占据多少内存&#xff1f; 对象内存布局 Mark Word占用8字节&#xff0c;类型指针占用8个字节&#xff0c;对象头占用16个字节。 好了&#xff0c;我们来看一下一个Object对占用多少空间&#xff0c; 因为java默认是开启压缩…

Spring框架知识点汇总

01.Spring框架的基本理解 关键字&#xff1a;核心思想IOC/AOP&#xff0c;作用&#xff08;解耦&#xff0c;简化&#xff09;&#xff0c;简单描述框架组成&#xff1b; Spring框架是一款轻量级的开发框架&#xff0c;核心思想是IOC&#xff08;反转控制&#xff09;和AOP&a…

【C++】输入输出及格式控制

在各类算法竞赛和机试中&#xff0c;对测试数据和输出格式往往会有明确的规定&#xff0c;笔者结合个人刷题经历&#xff0c;得到了以下C语言输入输出控制的方法。 cin&#xff1a;从缓冲区中读取数据 cin>>从缓冲区中读取数据时&#xff0c;若缓冲区中第一个字符是空格…

DBeaver 23.1.5 发布

导读DBeaver 是一个免费开源的通用数据库工具&#xff0c;适用于开发人员和数据库管理员。DBeaver 23.1.5 现已发布&#xff0c;更新内容如下. Data editor 重新设计了词典查看器面板 UI 空间数据类型&#xff1a;曲线几何线性化已修复 数据保存时结果选项卡关闭的问题已解决…

2第一个Java程序

目录 1第一个Java代码 2类class 3运行Java文件 1第一个Java代码 public class Hello {public static void main(String[] args) {System.out.println("Hello, world!");} } 2类class public class Hello {public static void main(String[] args) {System.ou…

Win11搭建 Elasticsearch 7 集群(一)

一&#xff1a; ES与JDK版本匹配一览表 elasticsearch从7.0开始默认安装了java运行环境&#xff0c;以便在没有安装java运行环境的机器上运行。如果配置了环境变量JAVA_HOME&#xff0c;则elasticsearh启动时会使用JAVA_HOME作为java路径&#xff0c;否则使用elasticsearch根目…

以udp协议创建通信服务器

概念图 创建服务器让A,B主机完成通信。 认识接口 socket 返回值&#xff1a;套接字&#xff0c;你可以认为类似fd 参数&#xff1a; domain->:哪种套接字&#xff0c;常用AF_INET(网络套接字)、AF_LOCAL(本地套接字)type->&#xff1a;发送数据类型&#xff0c;常用 …

【校招VIP】校招考点之前端安全和注入

考点介绍&#xff1a; 随着前端的快速发展&#xff0c;各种技术不断更新&#xff0c;前端的安全问题也越来越值得我们重视。千万不要等到项目上线之后才去重视安全问题&#xff0c;到时候被黑客攻击一切都太晚了。今天的专题将讲述前端几大常见安全问题&#xff0c;在校招面试中…

【mysql】MySQL服务无法启动 NET HELPMSG 3534

MySQL服务无法启动 NET HELPMSG 3534 错误描述寻找原因解决方法 错误描述 mysql版本&#xff1a;8.1.0 mysql安装成功之后&#xff0c;使用net start mysql来启动mysql&#xff0c;然后出现了报错 MySQL服务无法启动 NET HELPMSG 3534 寻找原因 1、在cmd中&#xff0c;进入…

OpenCV: cv2.findContours - ValueError: too many values to unpack

OpenCV找轮廓findContours报错 ValueError: not enough values to unpack (expected 3,got 2) 问题指向这行代码&#x1f447; binary, cnts, hierarchy cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE ) 报错的意思是需要3个返回值但只给了两…

RabbitMQ工作模式-路由模式

官方文档参考&#xff1a;https://www.rabbitmq.com/tutorials/tutorial-four-python.html 使用direct类型的Exchange,发N条消息并使用不同的routingKey,消费者定义队列并将队列routingKey、Exchange绑定。此时使用direct模式Exchange必须要routingKey完成匹配的情况下消息才…

CSP的理解与绕过

文章目录 前言CSP简介CSP如何工作CSP指令CSP指令值 例题[AFCTF 2021]BABY_CSP 前言 刚学习完xss&#xff0c;把xsss-labs靶场都通了打算试试水&#xff0c;遇到此题[AFCTF 2021]BABY_CSP&#xff0c;借此机会学习下CSP CSP简介 Content Security Policy (CSP)内容安全策略&am…