借助HuggingFace轻松实施一个端到端名目

  • 电脑网络维修
  • 2024-11-15

本文引见了经常使用FastAPI和Docker生成一个随时可用的Hugging Face模型。

​构想一下,应用Hugging Face模型来确定评论的心情。在过去,第一步是制造这样一个模型,并确保它反常上班。

但是,当天的预训练模型让咱们只有花很少的精神,就能预备好这样的大言语模型(LLM)。

一旦咱们预备好经常使用这个模型,重要指标是让公司的共事能够经常使用这个模型,而不须要下载或从头开局成功它。

为此,咱们将创立一个端点API,经常使用户能够独立地调用和经常使用模型。这就是咱们所说的从头到尾构建的端到端名目。

当天,咱们将经常使用Hugging Face、FastAPI和Docker部署一个便捷的模型,演示如何有效地成功这个指标。

第1步:选用咱们的Hugging Face模型

首先要做的是选用一个适宜咱们须要的Hugging Face模型。咱们可以经常使用以下命令在咱们的环境中轻松装置Hugging Face:

pip install transformers# remember to work with transformers we need either tensorflow or pytorchinstalled as wellpip install torchpip install tensorflow

如今,咱们须要导入Transformer库的管道命令。

from transformers import pipeline

而后,经常使用pipeline命令,咱们可以轻松生成一个模型来定义特定文本的心情。咱们可以经常使用两种不同的方法来做到这一点:经过定义义务“心情剖析”或经过定义模型,如上方的代码所示。

# Defining directly the task we want to implement.pipe = pipeline(task="sentiment-analysis")# Defining the model we choose.pipe = pipeline(model="model-to-be-used")

值得一提的是,不倡导经常使用基于义务的方法,由于它限度了咱们对所经常使用的特定模型的控制。

在本文例子中,我选用了“distilbert-base-uncase-fine tuned-sst-2-english”,但你可以轻易阅读HuggingFaceHub,选用适宜须要的任何型号。你可以在上方的文章(中找到HuggingFace的便捷指南。

pipe =pipeline(model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")

咱们已定义了管道模型,只有发送一个便捷的揭示,就可以前往结果。比如说,输入以下命令:

print(pipe("This tutorial is great!"))

咱们将获取[{'label': 'POSITIVE', 'score': 0.9998689889907837}]

构想一下,咱们宿愿咱们的用户获取一个对于这个分类的人造言语句子。咱们也可以实施便捷的Python代码雷同成功这个目的:

def generate_response(prompt:str):response = pipe("This is a great tutorial!")label = response[0]["label"]score = response[0]["score"]return f"The '{prompt}' input is {label} with a score of {score}"print(generate_response("This tutorial is great!"))

重复雷同的实验,咱们会获取:

The 'This tutorial is great!' input is POSITIVE with a score of0.9997909665107727

如今咱们有了一个实际可行的模型,可以继续定义咱们的API。

第2步:经常使用FastAPI为模型编写API端点

为了定义API,咱们将经常使用FastAPI。它是一个用于构建高性能WebAPI的Python框架。首先,经常使用pip命令装置FastAPI库,并将其导入到咱们的环境中。此外,咱们将应用pydantic库来确保输入是所需的类型。

上方的代码将生成实际可行的API,咱们的共事可以间接经常使用。

from fastapi import FastAPIfrom pydantic import BaseModelfrom transformers import pipeline# You can check any other model in the Hugging Face Hubpipe =pipeline(model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")# We define the appapp = FastAPI()# We define that we expect our input to be a stringclass RequestModel(BaseModel):input: str# Now we define that we accept post requests@app.post("/sentiment")def get_response(request: RequestModel):prompt = request.inputresponse = pipe(prompt)label = response[0]["label"]score = response[0]["score"]return f"The '{prompt}' input is {label} with a score of {score}"

上方是代码中逐渐出现的事情:

假设咱们口头代码,API将在本地服务器中可用,如下图所示:

简而言之,这段代码设置便捷的Web服务,你可以往该服务发送一段文本,其给出的回复是剖析该文本的心情,经过FastAPI充沛应用HuggingFace模型的弱小性能。

接上去,咱们应该将运行程序容器化,以便可以在任何中央口头,而不只仅是在本地计算机上口头。这将确保更好的可移植性和易于部署。

第3步:经常使用Docker运转咱们的模型

容器化须要将运行程序放入容器中。Docker容器运转Docker镜像的实例,这包括它自己的操作系统和运行程序所需的一切依赖项。

比如说,你可以在容器中装置Python和一切必须的包,这样它可以在任何中央运转,不须要装置这些库。

为了在Docker容器中运转咱们的心情剖析运行程序,咱们先须要创立Docker镜像。这个环节包括写一个Dockerfile,指定Docker镜像应该含有什么。

假设你的系统没有装置Docker,可以从Docker的网站高低载。这是咱们将在这个名目中经常使用的Dockerfile,在存储库中名为Dockerfile。

# Use an official Python runtime as a parent imageFROM python:3.10-slim# Set the working directory in the containerWORKDIR /sentiment# Copy the requirements.txt file into the rootCOPY requirements.txt .# Copy the current directory contents into the container at /app as wellCOPY ./app ./app# Install any needed packages specified in requirements.txtRUN pip install -r requirements.txt# Make port 8000 available to the world outside this containerEXPOSE 8000# Run main.py when the container launches, as it is contained under the appfolder, we define app.mainCMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

而后,咱们只有要在终端中运转以下命令来构建Docker镜像。

docker build -t sentit-app

而后为了口头,咱们有两个选项:

经常使用带有命令的终端。

docker run -p 8000:8000 --name name_of_cointainer sentiment-hf

经常使用docker hub。咱们很容易进入docker hub,点击镜像的运转按钮。

这就是所有细节!如今,咱们有了一个实际可行的心情分类模型,它可以在任何中央上班,并且可以经常使用API来口头。

结语

详细流程如下:

你可以在上方的GitHub代码库中检查我的所有代码:。

原文题目:A Simple to Implement End-to-End Project with HuggingFace,作者:JosepFerrer

链接:

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/6131.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号