FP8 INC
vLLM 支持在 Intel® Gaudi® 2 和 Intel® Gaudi® 3 AI 加速器上使用 Intel® Neural Compressor (INC) 进行 FP8(8 位浮点)权重和激活量化。目前,量化仅在 Llama 模型中进行了验证。
Intel Gaudi 支持各种模块和函数的量化,包括但不限于 `Linear`、`KVCache`、`Matmul` 和 `Softmax`。欲了解更多信息,请参阅:支持的模块\支持的函数\自定义修补模块。
注意
在 Gaudi 加速器上使用 vLLM 运行量化模型需要测量文件。FP8 模型校准过程在 vllm-hpu-extention 包中有所描述。
注意
`QUANT_CONFIG` 是一个环境变量,指向测量或量化的 JSON 配置文件。测量配置文件用于校准过程中,以收集给定模型的测量数据。量化配置用于推理期间。
使用 FP8 运行在线推理¶
完成模型校准过程并收集测量数据后,您可以使用以下命令运行 vLLM 的 FP8 推理。
export QUANT_CONFIG=/path/to/quant/config/inc/meta-llama-3.1-405b-instruct/maxabs_measure_g3.json
vllm serve meta-llama/Llama-3.1-405B-Instruct --quantization inc --kv-cache-dtype fp8_inc --tensor_paralel_size 8
提示
如果您只是使用 FP8 进行模型原型设计或测试,可以使用环境变量 `VLLM_SKIP_WARMUP=true` 来禁用预热阶段,该阶段可能需要很长时间。但是,我们不建议在生产环境中禁用此功能,因为它会导致显著的性能下降。
提示
使用 FP8 模型时,您可能会遇到由 FP8 操作长时间编译引起的超时问题。为了缓解此问题,您可以使用以下环境变量:`VLLM_ENGINE_ITERATION_TIMEOUT_S` - 用于调整 vLLM 服务器超时。您可以以秒为单位设置值,例如,600 等于 10 分钟。`VLLM_RPC_TIMEOUT` - 用于调整 OpenAI 兼容 API 使用的 RPC 协议超时。该值以微秒为单位,例如,600000 等于 10 分钟。
使用 FP8 运行离线推理¶
要运行离线推理(在完成模型校准过程后)
- 将环境变量 "QUANT_CONFIG" 设置为指向包含 QUANTIZE 模式的 JSON 配置文件。
- 将 `quantization=inc` 和 `kv_cache_dtype=fp8_inc` 作为参数传递给 `LLM` 对象。
- 在运行结束时调用 `model_executor` 的 shutdown 方法。
from vllm import LLM
llm = LLM("llama3.1/Meta-Llama-3.1-8B-Instruct", quantization="inc", kv_cache_dtype="fp8_inc")
...
# Call llm.generate on the required prompts and sampling params.
...
llm.llm_engine.model_executor.shutdown()
模型权重上传设备¶
未量化的权重首先加载到 CPU,然后进行量化并传输到目标设备 (HPU) 以执行模型。这减少了模型权重在设备内存中的占用,因为只有量化后的权重存储在设备内存中。