用 Hugging Face 推理端點(diǎn)部署 LLM

開(kāi)源的 LLM,如 Falcon、(Open-)LLaMA、X-Gen、StarCoder 或 RedPajama,近幾個(gè)月來(lái)取得了長(zhǎng)足的進(jìn)展,能夠在某些用例中與閉源模型如 ChatGPT 或 GPT4 競(jìng)爭(zhēng)。然而,有效且優(yōu)化地部署這些模型仍然是一個(gè)挑戰(zhàn)。
在這篇博客文章中,我們將向你展示如何將開(kāi)源 LLM 部署到 Hugging Face Inference Endpoints,這是我們的托管 SaaS 解決方案,可以輕松部署模型。此外,我們還將教你如何流式傳輸響應(yīng)并測(cè)試我們端點(diǎn)的性能。那么,讓我們開(kāi)始吧!
怎樣部署 Falcon 40B instruct 模型
測(cè)試 LLM 端點(diǎn)
用 javascript 和 python 進(jìn)行流響應(yīng)傳輸
在我們開(kāi)始之前,讓我們回顧一下關(guān)于推理端點(diǎn)的知識(shí)。
什么是 Hugging Face 推理端點(diǎn)
Hugging Face 推理端點(diǎn) 提供了一種簡(jiǎn)單、安全的方式來(lái)部署用于生產(chǎn)的機(jī)器學(xué)習(xí)模型。推理端點(diǎn)使開(kāi)發(fā)人員和數(shù)據(jù)科學(xué)家都能夠創(chuàng)建 AI 應(yīng)用程序而無(wú)需管理基礎(chǔ)設(shè)施: 簡(jiǎn)化部署過(guò)程為幾次點(diǎn)擊,包括使用自動(dòng)擴(kuò)展處理大量請(qǐng)求,通過(guò)縮減到零來(lái)降低基礎(chǔ)設(shè)施成本,并提供高級(jí)安全性。
以下是 LLM 部署的一些最重要的特性:
簡(jiǎn)單部署: 只需幾次點(diǎn)擊即可將模型部署為生產(chǎn)就緒的 API,無(wú)需處理基礎(chǔ)設(shè)施或 MLOps。
成本效益: 利用自動(dòng)縮減到零的能力,通過(guò)在端點(diǎn)未使用時(shí)縮減基礎(chǔ)設(shè)施來(lái)降低成本,同時(shí)根據(jù)端點(diǎn)的正常運(yùn)行時(shí)間付費(fèi),確保成本效益。
企業(yè)安全性: 在僅通過(guò)直接 VPC 連接可訪問(wèn)的安全離線端點(diǎn)中部署模型,由 SOC2 類型 2 認(rèn)證支持,并提供 BAA 和 GDPR 數(shù)據(jù)處理協(xié)議,以增強(qiáng)數(shù)據(jù)安全性和合規(guī)性。
LLM 優(yōu)化: 針對(duì) LLM 進(jìn)行了優(yōu)化,通過(guò)自定義 transformers 代碼和 Flash Attention 來(lái)實(shí)現(xiàn)高吞吐量和低延遲。
全面的任務(wù)支持: 開(kāi)箱即用地支持 ?? Transformers、Sentence-Transformers 和 Diffusers 任務(wù)和模型,并且易于定制以啟用高級(jí)任務(wù),如說(shuō)話人分離或任何機(jī)器學(xué)習(xí)任務(wù)和庫(kù)。
你可以在 https://ui.endpoints.huggingface.co/ 開(kāi)始使用推理端點(diǎn)。
1. 怎樣部署 Falcon 40B instruct
要開(kāi)始使用,你需要使用具有文件付款方式的用戶或組織帳戶登錄 (你可以在 這里 添加一個(gè)),然后訪問(wèn)推理端點(diǎn) https://ui.endpoints.huggingface.co。
然后,點(diǎn)擊“新建端點(diǎn)”。選擇倉(cāng)庫(kù)、云和區(qū)域,調(diào)整實(shí)例和安全設(shè)置,并在我們的情況下部署 tiiuae/falcon-40b-instruct
。

推理端點(diǎn)會(huì)根據(jù)模型大小建議實(shí)例類型,該類型應(yīng)足夠大以運(yùn)行模型。這里是 4x NVIDIA T4
GPU。為了獲得 LLM 的最佳性能,請(qǐng)將實(shí)例更改為 GPU [xlarge] · 1x Nvidia A100
。
注意: 如果無(wú)法選擇實(shí)例類型,則需要 聯(lián)系我們 并請(qǐng)求實(shí)例配額。

然后,你可以點(diǎn)擊“創(chuàng)建端點(diǎn)”來(lái)部署模型。10 分鐘后,端點(diǎn)應(yīng)該在線并可用于處理請(qǐng)求。
2. 測(cè)試 LLM 端點(diǎn)
端點(diǎn)概覽提供了對(duì)推理小部件的訪問(wèn),可以用來(lái)手動(dòng)發(fā)送請(qǐng)求。這使你可以使用不同的輸入快速測(cè)試你的端點(diǎn)并與團(tuán)隊(duì)成員共享。這些小部件不支持參數(shù) - 在這種情況下,這會(huì)導(dǎo)致“較短的”生成。

該小部件還會(huì)生成一個(gè)你可以使用的 cURL 命令。只需添加你的 hf_xxx
并進(jìn)行測(cè)試。
你可以使用不同的參數(shù)來(lái)控制生成,將它們定義在有效負(fù)載的 parameters
屬性中。截至目前,支持以下參數(shù):
temperature
: 控制模型中的隨機(jī)性。較低的值會(huì)使模型更確定性,較高的值會(huì)使模型更隨機(jī)。默認(rèn)值為 1.0。max_new_tokens
: 要生成的最大 token 數(shù)。默認(rèn)值為 20,最大值為 512。repetition_penalty
: 控制重復(fù)的可能性。默認(rèn)值為null
。seed
: 用于隨機(jī)生成的種子。默認(rèn)值為null
。stop
: 停止生成的 token 列表。當(dāng)生成其中一個(gè) token 時(shí),生成將停止。top_k
: 保留概率最高的詞匯表 token 數(shù)以進(jìn)行 top-k 過(guò)濾。默認(rèn)值為null
,禁用 top-k 過(guò)濾。top_p
: 保留核心采樣的參數(shù)最高概率詞匯表 token 的累積概率,默認(rèn)為null
do_sample
: 是否使用采樣; 否則使用貪婪解碼。默認(rèn)值為false
。best_of
: 生成 best_of 序列并返回一個(gè)最高 token 的 logprobs,默認(rèn)為null
。details
: 是否返回有關(guān)生成的詳細(xì)信息。默認(rèn)值為false
。return_full_text
: 是否返回完整文本或僅返回生成部分。默認(rèn)值為false
。truncate
: 是否將輸入截?cái)嗟侥P偷淖畲箝L(zhǎng)度。默認(rèn)值為true
。typical_p
: token 的典型概率。默認(rèn)值為null
。watermark
: 用于生成的水印。默認(rèn)值為false
。
3. 用 javascript 和 python 進(jìn)行流響應(yīng)傳輸
使用 LLM 請(qǐng)求和生成文本可能是一個(gè)耗時(shí)且迭代的過(guò)程。改善用戶體驗(yàn)的一個(gè)好方法是在生成 token 時(shí)將它們流式傳輸給用戶。下面是兩個(gè)使用 Python 和 JavaScript 流式傳輸 token 的示例。對(duì)于 Python,我們將使用 Text Generation Inference 的客戶端,對(duì)于 JavaScript,我們將使用 HuggingFace.js 庫(kù)。
使用 Python 流式傳輸請(qǐng)求
首先,你需要安裝 huggingface_hub
庫(kù):
我們可以創(chuàng)建一個(gè) InferenceClient
,提供我們的端點(diǎn) URL 和憑據(jù)以及我們想要使用的超參數(shù)。
將 print
命令替換為 yield
或你想要將 token 流式傳輸?shù)降暮瘮?shù)。

使用 Javascript 流式傳輸請(qǐng)求
首先你需要安裝 @huggingface/inference
庫(kù)
我們可以創(chuàng)建一個(gè) HfInferenceEndpoint
,提供我們的端點(diǎn) URL 和憑據(jù)以及我們想要使用的超參數(shù)。
將 process.stdout
調(diào)用替換為 yield
或你想要將 token 流式傳輸?shù)降暮瘮?shù)。

結(jié)論
在這篇博客文章中,我們向你展示了如何使用 Hugging Face 推理端點(diǎn)部署開(kāi)源 LLM,如何使用高級(jí)參數(shù)控制文本生成,以及如何將響應(yīng)流式傳輸?shù)?Python 或 JavaScript 客戶端以提高用戶體驗(yàn)。通過(guò)使用 Hugging Face 推理端點(diǎn),你可以只需幾次點(diǎn)擊即可將模型部署為生產(chǎn)就緒的 API,通過(guò)自動(dòng)縮減到零來(lái)降低成本,并在 SOC2 類型 2 認(rèn)證的支持下將模型部署到安全的離線端點(diǎn)。
感謝你的閱讀!如果你有任何問(wèn)題,請(qǐng)隨時(shí)在 Twitter 或 LinkedIn 上聯(lián)系我。
英文原文: https://hf.co/blog/inference-endpoints-llm
作者: Philipp Schmid
譯者: innovation64
審校/排版: zhongdongy (阿東)