Text Generation Inference 文件
在 AWS 上部署 TGI (EC2 與 SageMaker)
並獲得增強的文件體驗
開始使用
在 AWS 上部署 TGI (EC2 與 SageMaker)
本指南說明如何在 AWS 上部署 Text Generation Inference (TGI),以及如何以有利於容量規劃的方式對其進行基準測試。
在 EC2 上部署 (Docker)
對於大多數設定,最簡單的路徑是在 EC2 GPU 執行個體上執行官方容器。
- 啟動 EC2 GPU 執行個體(例如使用 NVIDIA GPU 的
g5.*)。 - 安裝 Docker + NVIDIA Container Toolkit(請參閱在 Nvidia GPU 上使用 TGI 及 NVIDIA 的安裝文件)。
- 執行 TGI:
model=HuggingFaceH4/zephyr-7b-beta
volume=$PWD/data
docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data \
ghcr.io/huggingface/text-generation-inference:3.3.5 \
--model-id "$model"- 發送 Chat Completions API 請求:
curl 127.0.0.1:8080/v1/chat/completions \
-X POST \
-H 'Content-Type: application/json' \
-d '{"model":"tgi","messages":[{"role":"user","content":"What is Deep Learning?"}]}'在 SageMaker 上部署 (即時端點)
pip install "sagemaker<3.0.0" --upgrade --quiet[!WARNING][SageMaker Python SDK v3 最近已發布](https://github.com/aws/sagemaker-python-sdk),因此除非另有說明,否則所有文件和教學仍使用 SageMaker Python SDK v2。我們正積極更新所有教學與範例,但在更新完成前,請務必使用
pip install "sagemaker<3.0.0"安裝 SageMaker SDK。TGI 包含一個 SageMaker 相容路徑 (POST /invocations) 和一個 SageMaker 進入點 (sagemaker-entrypoint.sh),可將 SageMaker 環境變數映射至 TGI 啟動設定。/invocations路徑在底層會將請求轉發至/v1/chat/completions。
警告:在此流程中,請使用 AWS SageMaker SDK
< 3.0。例如:pip install "sagemaker<3"。
如果您使用的是 Hugging Face 的 SageMaker 整合(推薦),通常只需設定模型環境變數:
HF_MODEL_ID:Hub 上的模型 ID (必要)HF_MODEL_REVISION:可選的修訂版本SM_NUM_GPUS:GPU 數量 (由 SageMaker 設定)HF_MODEL_QUANTIZE:可選的量化方式HF_MODEL_TRUST_REMOTE_CODE:可選的信任遠端程式碼旗標
關於使用 Hugging Face SageMaker SDK 和官方 TGI 映像 URI 的最小化範例:
import json
import boto3
import sagemaker
from sagemaker.huggingface import HuggingFaceModel, get_huggingface_llm_image_uri
try:
role = sagemaker.get_execution_role()
except ValueError:
iam = boto3.client("iam")
role = iam.get_role(RoleName="sagemaker_execution_role")["Role"]["Arn"]
hub = {
"HF_MODEL_ID": "HuggingFaceH4/zephyr-7b-beta",
# SageMaker expects SM_NUM_GPUS to be a JSON-encoded int
"SM_NUM_GPUS": json.dumps(1),
}
huggingface_model = HuggingFaceModel(
image_uri=get_huggingface_llm_image_uri("huggingface", version="3.3.5"),
env=hub,
role=role,
)
predictor = huggingface_model.deploy(
initial_instance_count=1,
instance_type="ml.g5.2xlarge",
container_startup_health_check_timeout=300,
)
predictor.predict(
{
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is deep learning?"},
]
}
)基準測試(測量什麼,以及如何測量)
為了進行有意義的基準測試,請測量以下兩者:
- 客戶端可見延遲 (端對端):p50/p95、首次 Token 時間 (TTFT)、每秒生成的 Token 數
- 伺服器端效能指標 (用於歸納效能瓶頸):請參閱指標
端對端 HTTP 基準測試 (推薦用於 EC2/SageMaker)
請盡可能使用來自執行個體/端點 VPC 「外部」的負載產生器(以便包含網路開銷),並在測量前進行暖機測試。
您可以使用 inference-benchmarker 進行端對端 HTTP 基準測試。
範例方法:
- 使用少量請求進行暖機。
- 在目標並發量下執行固定時長的負載測試。
- 記錄 p50/p95 延遲、錯誤率以及每秒生成的 Token 數。
微基準測試 (僅限模型伺服器)
TGI 也提供 text-generation-benchmark(請參閱基準測試工具 README)。此工具透過 Unix Socket 直接連線至模型伺服器並繞過路由器,因此適用於低階效能分析和批次大小調整,但它並非 SageMaker/HTTP 的端對端基準測試。