實操如何用Hugging Face部署大語言模型到亞馬遜雲科技Amazon SageMaker

華夏大視野發表於2023-11-01

本篇文章主要介紹如何使用新的Hugging Face LLM推理容器將開源LLMs,比如BLOOM大型語言模型部署到亞馬遜雲科技Amazon SageMaker進行推理的示例。我們將部署12B Open Assistant Model,這是一款由開放助手計劃訓練的開源Chat LLM。

 這個示例包括:

  • 設定開發環境

  • 獲取全新Hugging Face LLM DLC

  • 將開放助手12B部署到亞馬遜雲科技Amazon SageMaker

  • 進行推理並與我們的模型聊天

  • 清理環境

 

 什麼是Hugging Face LLM Inference DLC?

 Hugging Face LLM DLC是一款全新的專用推理容器,可在安全的託管環境中輕鬆部署LLM。DLC由文字生成推理(TGI)提供支援,這是一種用於部署和服務大型語言模型(LLM)的開源、專門構建的解決方案。TGI使用張量並行和動態批處理為受歡迎的開源LLM(包括StarCoder、BLOOM、GPT-Neox、Llama和T5)實現高效能文字生成。文字生成推理已被IBM、Grammarly等客戶使用,Open-Assistant計劃對所有支援的模型架構進行了最佳化,包括:

  • 張量並行性和自定義cuda核心

  • 在受歡迎的架構上使用flash-attention最佳化了用於推理的變形器程式碼

  • 使用bitsandbytes進行量化

  • 連續批處理傳入的請求以增加總吞吐量

  • 使用safetensors加速重量載入(啟動時間)

  • Logits扭曲器(溫度縮放、topk、重複懲罰…)

  • 用大型語言模型的水印新增水印

  • 停止序列,記錄機率

  • 使用伺服器傳送事件(SSE)進行Token流式傳輸

 官方支援的模型架構目前為:

  • BLOOM/BLOOMZ

  • MT0-XXL

  • Galactica

  • SantaCoder

  • gpt-Neox 20B(joi、pythia、lotus、rosey、chip、redPajama、open Assistant)

  • FLAN-T5-XXL(T5-11B)

  • Llama(vicuna、alpaca、koala)

  • Starcoder/santaCoder

  • Falcon 7B/Falcon 40B

 藉助亞馬遜雲科技Amazon SageMaker上推出的全新Hugging Face LLM Inference DLC,亞馬遜雲科技客戶可以從支援高度併發、低延遲LLM體驗的相同技術中受益,例如HuggingChat、OpenAssistant和Hugging Face Hub上的LLM模型推理API。

 

 1.設定開發環境

 使用SageMaker python SDK將OpenAssistant/pythia-12b-sft-v8-7k-steps部署到亞馬遜雲科技Amazon SageMaker。需要確保配置一個亞馬遜雲科技賬戶並安裝SageMaker python SDK。

 如果打算在本地環境中使用SageMaker。需要訪問具有亞馬遜雲科技Amazon SageMaker所需許可權的IAM角色。可以在這裡找到更多關於它的資訊。


 2.獲取全新Hugging Face LLM DLC

 與部署常規的HuggingFace模型相比,首先需要檢索容器URI並將其提供給HuggingFaceModel模型類,並使用image_uri指向該映象。要在亞馬遜雲科技Amazon SageMaker中檢索新的HuggingFace LLM DLC,可以使用SageMaker SDK 提供的get_huggingface_llm_image_uri方法。此方法允許根據指定的 “後端”、“會話”、“區域” 和 “版本”檢索所需的Hugging Face LLM DLC 的 URI。

 要將[Open Assistant Model](openAssistant/Pythia-12b-sft-v8-7K-steps)部署到亞馬遜雲科技Amazon SageMaker,建立一個HuggingFaceModel模型類並定義終端節點配置,包括hf_model_id、instance_type等。使用g5.4xlarge例項型別,它有1個NVIDIA A10G GPU和64GB的GPU記憶體。

 亞馬遜雲科技Amazon SageMaker現在建立端點並將模型部署到該端點。這可能需要10-15分鐘。

 

 4.進行推理並與模型聊天

 部署終端節點後,可以對其進行推理。使用predictor中的predict方法在端點上進行推理。可以用不同的引數進行推斷來影響生成。引數可以設定在parameter中設定。

  • 溫度:控制模型中的隨機性。較低的值將使模型更具確定性,而較高的值將使模型更隨機。預設值為0。

  • max_new_tokens:要生成的最大token數量。預設值為20,最大值為512。

  • repeption_penalty:控制重複的可能性,預設為null。

  • seed:用於隨機生成的種子,預設為null。

  • stop:用於停止生成的代幣列表。生成其中一個令牌後,生成將停止。

  • top_k:用於top-k篩選時保留的最高機率詞彙標記的數量。預設值為null,它禁用top-k過濾。

  • top_p:用於核取樣時保留的引數最高機率詞彙標記的累積機率,預設為null。

  • do_sample:是否使用取樣;否則使用貪婪的解碼。預設值為false。

  • best_of:生成best_of序列如果是最高標記logpros則返回序列,預設為null。

  • details:是否返回有關世代的詳細資訊。預設值為false。

  • return_full_text:是返回全文還是隻返回生成的部分。預設值為false。

  • truncate:是否將輸入截斷到模型的最大長度。預設值為true。

  • typical_p:代幣的典型機率。預設值null。

  • 水印:生成時使用的水印。預設值為false。

 可以在swagger文件中找到TGI的開放api規範。

 openAssistant/Pythia-12b-sft-v8-7K-steps是一種對話式聊天模型,這意味著我們可以使用以下提示與它聊天:

 先試一試,問一下夏天可以做的一些很酷的想法:

 現在,使用不同的引數進行推理,以影響生成。引數可以透過輸入的parameters屬性定義。這可以用來讓模型在“機器人”回合後停止生成。

 現在構建一個快速gradio應用程式來和它聊天。

 程式執行成功後,顯示如下聊天視窗:

 現在已經成功地將Open Assistant模型部署到亞馬遜雲科技Amazon SageMaker並對其進行了推理。此外,還構建了一個快速的gradio應用程式,可以與模型聊天。

 現在,可以使用亞馬遜雲科技Amazon SageMaker上全新Hugging Face LLM DLC構建世代人工智慧應用程式的時候了。

 

 5.清理環境

 刪除模型和端點。

 

 

 6.總結

 從上面的部署過程,可以看到整個部署大語言模型的過程非常簡單,這個主要得益於SageMaker Hugging Face LLM DLC的支援,還可以透過將Amazon SageMaker部署的端點與應用整合,滿足實際的業務需求。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69984952/viewspace-2992362/,如需轉載,請註明出處,否則將追究法律責任。

相關文章