自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

借助HuggingFace輕松實(shí)施一個(gè)端到端項(xiàng)目

譯文
人工智能
今天,我們將使用Hugging Face、FastAPI和Docker部署一個(gè)簡單的模型,演示如何有效地實(shí)現(xiàn)這個(gè)目標(biāo)。

譯者 | 布加迪

審校 | 重樓

本文介紹了使用FastAPI和Docker生成一個(gè)隨時(shí)可用的Hugging Face模型。

想象一下,利用Hugging Face模型來確定評(píng)論的情緒。在過去,第一步是制作這樣一個(gè)模型,并確保它正常工作。

然而,今天的預(yù)訓(xùn)練模型讓我們只需花很少的精力,就能準(zhǔn)備好這樣的大語言模型(LLM)。

一旦我們準(zhǔn)備好使用這個(gè)模型,主要目標(biāo)是讓公司的同事能夠使用這個(gè)模型,而不需要下載或從頭開始實(shí)現(xiàn)它。

為此,我們將創(chuàng)建一個(gè)端點(diǎn)API,使用戶能夠獨(dú)立地調(diào)用和使用模型。這就是我們所說的從頭到尾構(gòu)建的端到端項(xiàng)目。

今天,我們將使用Hugging Face、FastAPI和Docker部署一個(gè)簡單的模型,演示如何有效地實(shí)現(xiàn)這個(gè)目標(biāo)。

第1步:選擇我們的Hugging Face模型

首先要做的是選擇一個(gè)適合我們需要的Hugging Face模型。我們可以使用以下命令在我們的環(huán)境中輕松安裝Hugging Face:

pip install transformers
# remember to work with transformers we need either tensorflow or pytorch 
installed as well
pip install torch
pip install tensorflow

現(xiàn)在,我們需要導(dǎo)入Transformer庫的管道命令。

from transformers import pipeline

然后,使用pipeline命令,我們可以輕松生成一個(gè)模型來定義特定文本的情緒。我們可以使用兩種不同的方法來做到這一點(diǎn):通過定義任務(wù)“情緒分析”或通過定義模型,如下面的代碼所示。

# 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")

值得一提的是,不建議使用基于任務(wù)的方法,因?yàn)樗拗屏宋覀儗?duì)所使用的特定模型的控制。

在本文例子中,我選擇了“distilbert-base-uncase-fine tuned-sst-2-english”,但你可以隨意瀏覽Hugging Face Hub,選擇適合需要的任何型號(hào)。你可以在下面的文章(https://www.datacamp.com/tutorial/what-is-hugging-face)中找到Hugging Face的簡單指南。

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

我們已定義了管道模型,只需發(fā)送一個(gè)簡單的提示,就可以返回結(jié)果。比如說,輸入以下命令:

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

我們將得到[{'label': 'POSITIVE', 'score': 0.9998689889907837}]

想象一下,我們希望我們的用戶得到一個(gè)關(guān)于這個(gè)分類的自然語言句子。我們也可以實(shí)施簡單的Python代碼同樣實(shí)現(xiàn)這個(gè)目的:

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!"))

重復(fù)同樣的試驗(yàn),我們會(huì)得到:

The 'This tutorial is great!' input is POSITIVE with a score of 
0.9997909665107727

現(xiàn)在我們有了一個(gè)切實(shí)可行的模型,可以繼續(xù)定義我們的API。

第2步:使用FastAPI為模型編寫API端點(diǎn)

為了定義API,我們將使用FastAPI。它是一個(gè)用于構(gòu)建高性能Web API的Python框架。首先,使用pip命令安裝FastAPI庫,并將其導(dǎo)入到我們的環(huán)境中。此外,我們將利用pydantic庫來確保輸入是所需的類型。

下面的代碼將生成切實(shí)可行的API,我們的同事可以直接使用。

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

下面是代碼中逐步發(fā)生的事情:

  • 導(dǎo)入必要的庫:代碼先導(dǎo)入FastAPI和Pydantic,確保我們收發(fā)的數(shù)據(jù)結(jié)構(gòu)正確。
  • 加載模型:加載一個(gè)預(yù)訓(xùn)練的情緒分析模型,正如我們?cè)诘谝徊街兴龅哪菢印?/li>
  • 設(shè)置FastAPI應(yīng)用程序:app = FastAPI()初始化FastAPI應(yīng)用程序,使其準(zhǔn)備好處理請(qǐng)求。
  • 定義請(qǐng)求模型:使用Pydantic,定義RequestModel類。該類指定了我們期望輸入字符串,確保API只接受正確格式的數(shù)據(jù)。
  • 創(chuàng)建端點(diǎn):@app.post("/sentiment")裝飾器告訴FastAPI,當(dāng)向/sentiment端點(diǎn)發(fā)出POST請(qǐng)求時(shí),應(yīng)該觸發(fā)該函數(shù)。get_response函數(shù)接受RequestModel對(duì)象作為輸入,輸入含有我們想要分析的文本。
  • 處理請(qǐng)求:在get_response函數(shù)中,從請(qǐng)求中提取文本并傳遞給模型(pipe(prompt))。模型返回帶有情緒標(biāo)簽(比如”POSITIVE”或“NEGATIVE”)的響應(yīng)和表示預(yù)測(cè)置信度的分?jǐn)?shù)。
  • 返回響應(yīng):最后,函數(shù)返回格式化的字符串,其中包含輸入文本、情緒標(biāo)簽和置信度分?jǐn)?shù),為用戶提供一個(gè)清晰而簡潔的結(jié)果。

如果我們執(zhí)行代碼,API將在本地主機(jī)中可用,如下圖所示:

簡而言之,這段代碼設(shè)置簡單的Web服務(wù),你可以往該服務(wù)發(fā)送一段文本,其給出的回復(fù)是分析該文本的情緒,通過FastAPI充分利用Hugging Face模型的強(qiáng)大功能。

接下來,我們應(yīng)該將應(yīng)用程序容器化,以便可以在任何地方執(zhí)行,而不僅僅是在本地計(jì)算機(jī)上執(zhí)行。這將確保更好的可移植性和易于部署。

第3步:使用Docker運(yùn)行我們的模型

容器化需要將應(yīng)用程序放入容器中。Docker容器運(yùn)行Docker鏡像的實(shí)例,這包括它自己的操作系統(tǒng)和應(yīng)用程序所需的所有依賴項(xiàng)。

比如說,你可以在容器中安裝Python和所有必需的包,這樣它可以在任何地方運(yùn)行,不需要安裝這些庫。

為了在Docker容器中運(yùn)行我們的情緒分析應(yīng)用程序,我們先需要?jiǎng)?chuàng)建Docker鏡像。這個(gè)過程包括寫一個(gè)Dockerfile,指定Docker鏡像應(yīng)該含有什么。

如果你的系統(tǒng)沒有安裝Docker,可以從Docker的網(wǎng)站上下載。這是我們將在這個(gè)項(xiàng)目中使用的Dockerfile,在存儲(chǔ)庫中名為Dockerfile。

# Use an official Python runtime as a parent image
FROM python:3.10-slim
# Set the working directory in the container
WORKDIR /sentiment
# Copy the requirements.txt file into the root
COPY requirements.txt .
# Copy the current directory contents into the container at /app as well
COPY ./app ./app
# Install any needed packages specified in requirements.txt
RUN pip install -r requirements.txt
# Make port 8000 available to the world outside this container
EXPOSE 8000
# Run main.py when the container launches, as it is contained under the app 
folder, we define app.main
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

然后,我們只需要在終端中運(yùn)行以下命令來構(gòu)建Docker鏡像。

docker build -t sentit-app

然后為了執(zhí)行,我們有兩個(gè)選項(xiàng):

使用帶有命令的終端。

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

使用docker hub。我們很容易進(jìn)入docker hub,點(diǎn)擊鏡像的運(yùn)行按鈕。

這就是全部細(xì)節(jié)!現(xiàn)在,我們有了一個(gè)切實(shí)可行的情緒分類模型,它可以在任何地方工作,并且可以使用API來執(zhí)行。

結(jié)語

具體流程如下:

  • 模型選擇和設(shè)置:選擇和配置一個(gè)Hugging Face預(yù)訓(xùn)練模型進(jìn)行情緒分析,確保它滿足你的要求。
  • 使用FastAPI進(jìn)行API開發(fā):使用FastAPI創(chuàng)建API端點(diǎn),實(shí)現(xiàn)與情緒分析模型的輕松交互。
  • Docker容器化:使用Docker容器化應(yīng)用程序,以確??梢浦残院涂绮煌h(huán)境的無縫部署。

你可以在下面的GitHub代碼庫中查看我的全部代碼:https://github.com/rfeers/data-science-portfolio/tree/main/end-to-end-projects/simple-docker-hf-model。

原文標(biāo)題:A Simple to Implement End-to-End Project with HuggingFace,作者:Josep Ferrer

鏈接:

https://www.kdnuggets.com/a-simple-to-implement-end-to-end-project-with-huggingface。

想了解更多AIGC的內(nèi)容,請(qǐng)?jiān)L問:

51CTO AI.x社區(qū)

http://www.scjtxx.cn/aigc/

責(zé)任編輯:姜華 來源: 51CTO內(nèi)容精選
相關(guān)推薦

2020-11-11 09:49:12

計(jì)算架構(gòu)

2017-09-07 12:12:40

戴爾云聯(lián)盟

2016-03-31 12:49:54

戴爾

2022-03-14 09:35:43

Pythonhttpx

2017-04-11 16:16:48

HTTPS互聯(lián)網(wǎng)服務(wù)端

2022-09-02 10:20:44

網(wǎng)絡(luò)切片網(wǎng)絡(luò)5G

2020-10-26 13:51:11

Kafka數(shù)據(jù)端到端

2021-06-30 09:00:00

測(cè)試Web軟件

2021-05-27 14:23:50

加密端到端加密加密技術(shù)

2022-12-27 10:05:03

自動(dòng)駕駛

2024-02-21 09:14:32

端到端自動(dòng)駕駛

2024-04-15 11:40:37

自動(dòng)駕駛端到端

2020-08-03 07:59:12

機(jī)器學(xué)習(xí)開發(fā)數(shù)據(jù)

2024-06-27 09:50:56

2012-02-29 10:58:53

戴爾企業(yè)級(jí)解決方案服務(wù)器

2021-01-26 00:37:12

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)端到端安全

2025-02-20 08:00:00

2025-03-28 07:50:00

端到端測(cè)試Go語言

2025-03-20 07:01:40

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)