optimum-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 之间区别 的讨论。

量化

使用 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: 您可以手动减小批处理大小

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 过大,您将无法处理任何请求

分片

分片由 TGI 服务器自动完成,因此您的模型会使用所有可用的 TPU。我们进行张量并行,因此层会自动分割到所有可用的 TPU 中。但是,TGI 路由器将只看到一个分片。

有关张量并行的更多信息,请参见此处 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 服务器配置选项。