Google TPU 文件

進階 TGI 伺服器設定

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

進階 TGI 伺服器設定

Jetstream Pytorch 與 Pytorch XLA 後端

Jetstream Pytorch 是一個經過高度優化的 Pytorch 引擎,專門用於在 Cloud TPU 上進行大型語言模型(LLM)的推論服務。如果該相依項目可用,系統將預設選用此引擎。

我們建議將 Jetstream 與 TGI 搭配使用以獲得最佳效能。若因某些原因您希望改用 Pytorch/XLA 後端,您可以設定 JETSTREAM_PT_DISABLE=1 環境變數。

欲了解更多資訊,請參閱我們關於 Jetstream 與 Pytorch XLA 差異的討論。

量化 (Quantization)

使用 Jetstream Pytorch 引擎時,可以啟用量化以減少記憶體佔用並提高吞吐量。若要啟用量化,請設定 QUANTIZATION=1 環境變數。例如,在 2x4 TPU v5e(每個晶片 16GB * 8 = 每 pod 128 GB)上,您可以服務高達 70B 參數的模型,例如 Llama 3.3-70B。量化是在權重載入時即時以 int8 格式進行的。與任何量化選項一樣,您可以預期模型準確度會有輕微下降。若未啟用量化選項,模型將以 bf16 格式進行服務。

如何解決記憶體需求問題

如果您遇到 Backend(NotEnoughMemory(2048)) 錯誤,以下是一些有助於減少 TGI 記憶體用量的解決方案:

Optimum-TPU 特定參數

  • -e QUANTIZATION=1:啟用量化。這應能將記憶體需求降低近一半。
  • -e MAX_BATCH_SIZE=n:您可以手動降低批次大小(batch size)。

TGI 特定參數

  • --max-input-length:最大輸入序列長度
  • --max-total-tokens:輸入與輸出 token 的總和上限。
  • --max-batch-prefill-tokens:批次處理的權杖數上限
  • --max-batch-total-tokens:批次中 token 的總數上限。

若要減少記憶體使用量,您可以嘗試調小 --max-input-length--max-total-tokens--max-batch-prefill-tokens 以及 --max-batch-total-tokens 的值。

`max-batch-prefill-tokens ≤ max-input-length * max_batch_size`。否則,系統將會出現錯誤,因為該設定不合理。如果 max-batch-prefill-tokens 設定過大,您將無法處理任何請求。

分片 (Sharding)

分片由 TGI 伺服器自動執行,因此您的模型會使用所有可用的 TPU。我們使用張量並行處理 (tensor parallelism),因此層級會自動分配到所有可用的 TPU 上。不過,TGI 路由(router)只會看到一個分片。

關於張量並行處理的更多資訊,請參閱:https://huggingface.co/docs/text-generation-inference/conceptual/tensor_parallelism

理解設定

關鍵參數說明

必要參數

  • --shm-size 16GB:增加預設共享記憶體配置。
  • --privileged:存取 TPU 所必需。
  • --net host:使用主機網路模式。這些設定對於執行 TPU 容器以確保容器能正確存取 TPU 硬體是必要的。

選用參數

  • -v ~/hf_data:/data:用於模型儲存的磁碟區掛載,這可避免在每次啟動時重新下載模型權重。您可以隨意使用任何目錄,只要它映射回 /data 即可。
  • -e SKIP_WARMUP=1:停用暖機以進行快速測試(不建議用於生產環境)。這些是 TGI 與 optimum-TPU 用於設定伺服器行為的參數。
`--privileged --shm-size 16GB --net host` 是必需的,如 https://github.com/pytorch/xla 所述。

後續步驟

請查閱 TGI 文件以了解更多 TGI 伺服器設定選項。

© . This site is unofficial and not affiliated with Hugging Face, Inc.