大語言模型LLM(Large Language Model)指參數數量達到億層級的神經網路語言模型,例如GPT-3、GPT-4、PaLM、PaLM2等。當您需要處理大量自然語言資料或希望建立複雜的語言理解系統時,可以將大語言模型轉化為推理服務,通過API輕鬆整合先進的NLP能力(例如文本分類、情感分析、機器翻譯等)到您的應用程式中。通過服務化LLM,您可以避免昂貴的基礎設施成本,快速響應市場變化,並且由於模型運行在雲端,還可以隨時擴充服務以應對使用者請求的高峰,從而提高營運效率。
前提條件
已在ASM中開啟ModelMesh功能,並配置ASM環境。具體操作,請參見使用模型服務網格進行多模型推理服務的步驟一和步驟二。
已瞭解如何使用模型服務網格自訂模型運行時。具體操作,請參見使用模型服務網格自訂模型運行時。
步驟一:構建自訂運行時
構建自訂運行時,提供帶有提示調整配置的HuggingFace LLM。此樣本中的預設值設定為預先構建的自訂運行時鏡像和預先構建的提示調整配置。
實現一個繼承自MLServer MLModel的類。
peft_model_server.py檔案包含了如何提供帶有提示調整配置的HuggingFace LLM的所有代碼。
_load_model
函數是該檔案中的一部分,用於選擇已訓練的PEFT提示調整配置的預訓練LLM模型。_load_model
函數還定義了分詞器,以便對推理請求中的原始字串輸入進行編碼和解碼,而無需使用者預先處理其輸入為張量位元組。構建Docker鏡像。
實現模型類之後,您需要將其依賴項(包括MLServer)打包到一個支援ServingRuntime資源的鏡像中。您可以參考如下Dockerfile進行鏡像構建。
建立新的ServingRuntime資源。
使用以下內容,儲存為sample-runtime.yaml, 建立一個新的ServingRuntime資源,並將其指向您剛建立的鏡像。
執行以下命令,部署ServingRuntime資源。
kubectl apply -f sample-runtime.yaml
建立完成後,您可以在ModelMesh部署中看到新的自訂運行時。
步驟二:部署LLM服務
為了使用新建立的運行時部署模型,您需要建立一個InferenceService資源來提供模型服務。該資源是KServe和ModelMesh用於管理模型的主要介面,代表了模型在推理中的邏輯端點。
使用以下內容,建立一個InferenceService資源來提供模型服務。
在YAML中,InferenceService命名為
peft-demo
,並聲明其模型格式為peft-model
,與之前建立的樣本自訂運行時使用相同的格式。還傳遞了一個可選欄位runtime
,明確告訴ModelMesh使用peft-model-server
運行時來部署此模型。執行以下命令,部署InferenceService資源。
kubectl apply -f ${實際YAML名稱}.yaml
步驟三:運行推理服務
使用curl
命令,發送推理請求到上面部署的LLM模型服務。
MODEL_NAME="peft-demo"
ASM_GW_IP="ASM網關IP地址"
curl -X POST -k http://${ASM_GW_IP}:8008/v2/models/${MODEL_NAME}/infer -d @./input.json
curl
命令中的input.json
表示請求資料:
{
"inputs": [
{
"name": "content",
"shape": [1],
"datatype": "BYTES",
"contents": {"bytes_contents": ["RXZlcnkgZGF5IGlzIGEgbmV3IGJpbm5pbmcsIGZpbGxlZCB3aXRoIG9wdGlvbnBpZW5pbmcgYW5kIGhvcGU="]}
}
]
}
bytes_contents
對應字串“Every day is a new beginning, filled with opportunities and hope”
的Base64編碼。
JSON響應如下所示:
{
"modelName": "peft-demo__isvc-5c5315c302",
"outputs": [
{
"name": "output-0",
"datatype": "BYTES",
"shape": [
"1",
"1"
],
"parameters": {
"content_type": {
"stringParam": "str"
}
},
"contents": {
"bytesContents": [
"VHdlZXQgdGV4dCA6IEV2ZXJ5IGRheSBpcyBhIG5ldyBiaW5uaW5nLCBmaWxsZWQgd2l0aCBvcHRpb25waWVuaW5nIGFuZCBob3BlIExhYmVsIDogbm8gY29tcGxhaW50"
]
}
}
]
}
bytesContents
進行Base64解碼後的內容如下,表明上述大語言模型LLM的模型服務要求符合預期。
Tweet text : Every day is a new binning, filled with optionpiening and hope Label : no complaint