企业宣传,产品推广,广告招商,广告投放联系seowdb

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

本文引见了经常使用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

链接:

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender