使用 Amazon 進行模型推論最佳化 SageMaker - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon 進行模型推論最佳化 SageMaker

使用 Amazon 時 SageMaker,您可以套用推論最佳化技術來改善生成式 AI 模型的效能。透過最佳化模型,您可以為使用案例取得更好的成本效能。當您最佳化模型時,您可以選擇要套用哪些支援的最佳化技術,包括量化、投機解碼和編譯。最佳化模型後,您可以執行評估,以查看延遲、輸送量和價格的效能指標。

對於許多模型, SageMaker 也提供數個預先最佳化的版本,每個版本都符合不同的應用程式對延遲和輸送量的需求。對於此類模型,您可以部署其中一個最佳化版本,而無需先自行最佳化模型。

最佳化技術

Amazon SageMaker 支援下列最佳化技術。

推測解碼

推測解碼是一種加快大型 解碼程序的技術LLMs。它可最佳化模型的延遲,而不會犧牲產生的文字品質。

此技術使用較小但較快的模型,稱為草擬模型。草擬模型會產生候選權杖,然後由較大但較慢的目標模型進行驗證。每次迭代時,草稿模型都會產生多個候選權杖。目標模型會驗證權杖,如果發現特定權杖不被接受,則會拒絕權杖並加以重新產生。因此,目標模型會驗證權杖並產生少量權杖。

草擬模型明顯比目標模型快。它會快速產生所有字符,然後將它們的批次傳送到目標模型進行驗證。目標模型會並行評估它們,以加速最終回應。

SageMaker 提供預先建置的草稿模型供您使用,因此您不必自行建置。如果您偏好使用自己的自訂草稿模型, SageMaker 也支援此選項。

量化

量化是一種技術,透過使用較不精確的資料類型來減少權重和啟用的模型硬體需求。使用量化功能最佳化模型後,您可以將模型託管在價格更低且更可用的 上GPUs。不過,量化模型的準確度可能低於您最佳化的來源模型。

SageMaker 支援 的 Activation-aware Weight Quantization (AWQ)GPUs。AWQ 是一項有效LLMs、準確、低位元且僅權重的量化技術。

編譯

編譯會將模型最佳化,以在所選硬體類型上獲得最佳可用效能,而不會損失準確性。您可以套用模型編譯來LLMs最佳化加速硬體,例如 AWS Trainium 或 AWS Inferentia。

當您使用編譯功能最佳化模型時,您將受益於 ahead-of-time編譯。您可以縮短模型的部署時間和自動擴展延遲,因為模型權重在模型部署至新執行個體時不需要 just-in-time編譯。

推論效能評估的指標參考

成功評估最佳化模型的效能後,Studio 中的評估詳細資訊頁面會顯示下列指標。

延遲指標

延遲區段顯示下列指標

並行數量

評估模擬同時叫用端點的並行使用者數量。

到第一個權杖的時間 (毫秒)

傳送請求到收到串流回應的第一個權杖之間經過的時間。

互換延遲 (毫秒)

為每個請求產生輸出權杖的時間。

用戶端延遲 (毫秒)

從傳送請求到收到整個回應的請求延遲。

輸入權杖/秒 (計數)

所有請求中產生的輸入字符總數除以並行的總持續時間秒數。

輸出權杖/秒 (計數)

所有請求中產生的輸出權杖總數,除以並行的總持續時間秒數。

用戶端叫用 (計數)

並行傳送至所有使用者端點的推論請求總數。

用戶端叫用錯誤 (計數)

在指定的並行中,在所有使用者之間傳送至端點的推論請求總數,導致調用錯誤。

Tokenizer 失敗 (計數)

權杖化器無法剖析請求或回應的推論請求總數。

空推論回應 (計數)

導致零輸出權杖或權杖化器無法剖析回應的推論請求總數。

輸送量指標

輸送量區段顯示下列指標。

並行數量

評估模擬同時叫用端點的並行使用者數量。

輸入權杖/秒/請求 (計數)

每個請求每秒產生的輸入權杖總數。

輸出權杖/秒/請求 (計數)

每個請求每秒產生的輸出權杖總數。

輸入權杖 (計數)

每個請求產生的輸入權杖總數。

輸出權杖 (計數)

每個請求產生的輸出權杖總數。

價格指標

價格區段顯示下列指標。

並行數量

評估模擬同時叫用端點的並行使用者數量。

每百萬輸入權杖的價格

處理 1M 輸入權杖的成本。

每百萬輸出權杖的價格

產生 1M 輸出權杖的成本。

支援的模型參考

下表顯示 SageMaker 支援推論最佳化的模型,並顯示支援的最佳化技術。

支援推論最佳化的模型
模型名稱 JumpStart 模型 ID 支援量化 支援推測解碼 使用 SageMaker 草稿模型進行推測解碼
Falcon huggingface-llm-falcon-40b-bf16
huggingface-llm-falcon-40b-instruct-bf16
huggingface-llm-falcon-180b-chat-bf16
huggingface-llm-falcon-180b-bf16
huggingface-llm-amazon-falconlite
huggingface-llm-amazon-falconlite2
huggingface-llm-tiiuae-falcon-rw-1b
huggingface-llm-falcon-7b-bf16
huggingface-llm-falcon-7b-instruct-bf16
huggingface-llm-falcon2-11b
gpt-neox huggingface-textgeneration2-gpt-neoxt-chat-base-20b-fp16
huggingface-textgeneration2-gpt-neox-20b-fp16
LLaMA meta-textgeneration-llama-3-70b-instruct
meta-textgeneration-llama-3-70b
meta-textgeneration-llama-3-8b
meta-textgeneration-llama-3-8b-指示
meta-textgeneration-llama-2-7b
meta-textgeneration-llama-2-7b-f
meta-textgeneration-llama-2-13b
meta-textgeneration-llama-2-13b-f
meta-textgeneration-llama-2-70b
meta-textgeneration-llama-2-70b-f
meta-textgeneration-llama-codellama-7b
meta-textgeneration-llama-codellama-7b-指示
meta-textgeneration-llama-codellama-7b-python
meta-textgeneration-llama-codellama-13b
meta-textgeneration-llama-codellama-13b-指示
meta-textgeneration-llama-codellama-13b-python
meta-textgeneration-llama-codellama-34b
meta-textgeneration-llama-codellama-34b-指示
meta-textgeneration-llama-codellama-34b-python
meta-textgeneration-llama-codellama-70b
meta-textgeneration-llama-codellama-70b-指示
meta-textgeneration-llama-codellama-70b-python
meta-textgeneration-llama-guard-7b
Bloom huggingface-textgeneration-bloom-1b7
huggingface-textgeneration-bloom-1b1
huggingface-textgeneration-bloom-560 公尺
huggingface-textgeneration-bloomz-560 公尺
huggingface-textgeneration-bloomz-1b1
huggingface-textgeneration-bloomz-1b7
huggingface-textgeneration1-bloomz-7b1-fp16
huggingface-textgeneration1-bloom-7b1
huggingface-textgeneration1-bloomz-3b-fp16
huggingface-textgeneration1-bloom-3b
huggingface-textembedding-bloom-7b1
huggingface-textembedding-bloom-7b1-fp16
Cohere huggingface-llm-cohereforai-c4ai-command-r-plus
Gemma huggingface-llm-gemma-7b
huggingface-llm-gemma-7b-指示
huggingface-llm-gemma-2b
huggingface-llm-gemma-2b-指示
huggingface-llm-zephyr-7b-gemma
gpt2 huggingface-textgeneration-gpt2
huggingface-textgeneration-distilgpt2
混合 huggingface-llm-mistral-7b
huggingface-llm-mistral-7b-指示
huggingface-llm-mistral-7b-openorca-gptq
huggingface-llm-amazon-mistrallite
huggingface-llm-thebloke-mistral-7b-openorca-awq
huggingface-llm-huggingfaceh4-mistral-7b-sft-beta
huggingface-llm-huggingfaceh4-mistral-7b-sft-alpha
huggingface-llm-teknium-openhermes-2-雜交-7b
huggingface-llm-nousresearch-yarn-雜交-7b-128k
huggingface-llm-dolphin-2-2-1-mistral-7b
huggingface-llm-cultrix-mistraltrix-v1
混合 huggingface-llm-mixtral-8x7b-指示
huggingface-llm-mixtral-8x7b-instruct-gptq
huggingface-llm-mixtral-8x7b
huggingface-llm-mistralai-mixtral-8x22B-instruct-v0-1
huggingface-llm-dolphin-2-5-mixtral-8x7b
huggingface-llm-dolphin-2-7-mixtral-8x7b
Phi huggingface-llm-phi-2

預先最佳化 JumpStart 模型

以下是具有預先最佳化組態的 JumpStart 模型。

Meta
  • Llama 3 8B 指示

  • Llama 3 8B

  • Llama 3 70B 指示

  • Llama 3 70B

  • Llama 2 70B 聊天

  • Llama 2 7B 聊天

  • Llama 2 13B 聊天

HuggingFace
  • 混合 8x7B 指示

  • 混合 8x7B

  • 混合 7B 指示

  • 雜音 7B

預先編譯的 JumpStart 模型

對於某些模型和組態, SageMaker 會提供針對特定 AWS Inferentia 和 AWS Trainium 執行個體預先編譯的模型。對於這些,如果您建立編譯或最佳化任務,並選擇 ml.inf2.48xlarge 或 ml.trn1.32xlarge 作為部署執行個體類型, 會 SageMaker 擷取編譯成品。因為任務使用已編譯的模型,所以它會快速完成,而不會從頭開始執行編譯。

以下是 SageMaker 具有預先編譯 JumpStart 模型的模型:

Meta
  • Llama3 8B

  • Llama3 70B

  • Llama2 7B

  • Llama2 70B

  • Llama2 13B

  • 程式碼 Llama 7B

  • 程式碼 Llama 70B

HuggingFace
  • 雜音 7B