跳到内容

使用 Run:ai Model Streamer 加载模型

Run:ai Model Streamer 是一个并行读取张量并将其流式传输到 GPU 内存的库。更多信息请参考 Run:ai Model Streamer 文档

vLLM 支持使用 Run:ai Model Streamer 加载 Safetensors 格式的权重。您首先需要安装 vLLM RunAI 可选依赖项

pip3 install vllm[runai]

要将其作为 OpenAI 兼容服务器运行,请添加 --load-format runai_streamer 标志

vllm serve /home/meta-llama/Llama-3.2-3B-Instruct \
    --load-format runai_streamer

要从 AWS S3 对象存储运行模型,请运行

vllm serve s3://core-llm/Llama-3-8b \
    --load-format runai_streamer

要从兼容 S3 的对象存储运行模型,请运行

RUNAI_STREAMER_S3_USE_VIRTUAL_ADDRESSING=0 \
AWS_EC2_METADATA_DISABLED=true \
AWS_ENDPOINT_URL=https://storage.googleapis.com \
vllm serve s3://core-llm/Llama-3-8b \
    --load-format runai_streamer

可调参数

您可以使用 --model-loader-extra-config 调优参数

您可以调优 concurrency,它控制并行级别以及将张量从文件读取到 CPU 缓冲区的操作系统线程数。对于从 S3 读取,它将是主机向 S3 服务器打开的客户端实例数。

vllm serve /home/meta-llama/Llama-3.2-3B-Instruct \
    --load-format runai_streamer \
    --model-loader-extra-config '{"concurrency":16}'

您可以控制将张量从文件读取到的 CPU 内存缓冲区的大小,并限制此大小。您可以在此处进一步了解 CPU 缓冲区内存限制。

vllm serve /home/meta-llama/Llama-3.2-3B-Instruct \
    --load-format runai_streamer \
    --model-loader-extra-config '{"memory_limit":5368709120}'

注意

有关可调参数以及可通过环境变量配置的其他参数的更多说明,请阅读环境变量文档

分片模型加载

vLLM 还支持使用 Run:ai Model Streamer 加载分片模型。这对于跨多个文件拆分的大型模型特别有用。要使用此功能,请使用 --load-format runai_streamer_sharded 标志

vllm serve /path/to/sharded/model --load-format runai_streamer_sharded

分片加载器要求模型文件遵循与常规分片状态加载器相同的命名模式:model-rank-{rank}-part-{part}.safetensors。您可以使用 --model-loader-extra-config 中的 pattern 参数来自定义此模式

vllm serve /path/to/sharded/model \
    --load-format runai_streamer_sharded \
    --model-loader-extra-config '{"pattern":"custom-model-rank-{rank}-part-{part}.safetensors"}'

要创建分片模型文件,您可以使用 examples/offline_inference/save_sharded_state.py 中提供的脚本。此脚本演示了如何以与 Run:ai Model Streamer 分片加载器兼容的分片格式保存模型。

分片加载器支持与常规 Run:ai Model Streamer 相同的所有可调参数,包括 concurrencymemory_limit。这些参数可以采用相同的方式进行配置

vllm serve /path/to/sharded/model \
    --load-format runai_streamer_sharded \
    --model-loader-extra-config '{"concurrency":16, "memory_limit":5368709120}'

注意

分片加载器对于张量或管道并行模型特别有效,其中每个 worker 只需读取自己的分片,而不是整个 checkpoint。