使用 Run:ai Model Streamer 加载模型¶
Run:ai Model Streamer 是一个库,可以并发读取张量,并将其流式传输到 GPU 内存。更多信息请参阅 Run:ai Model Streamer 文档。
vLLM 支持使用 Run:ai Model Streamer 加载 Safetensors 格式的权重。您需要先安装 vLLM RunAI 可选依赖项
要将其作为 OpenAI 兼容服务器运行,请添加 --load-format runai_streamer 标志
要从 AWS S3 对象存储运行模型,请执行
要从 Google Cloud Storage 运行模型,请执行
要从 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 调整参数
您可以调整 distributed,该参数控制是否使用分布式流式传输。目前仅在 CUDA 和 ROCM 设备上可用。这可以显著缩短从对象存储或高吞吐量网络文件共享的加载时间。您可以在此处了解更多关于分布式流式传输的信息 此处
vllm serve /home/meta-llama/Llama-3.2-3B-Instruct \
--load-format runai_streamer \
--model-loader-extra-config '{"distributed":true}'
您可以调整 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 标志
分片加载器期望模型文件遵循与常规分片状态加载器相同的命名模式: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"}'
要创建分片模型文件,您可以使用 vLLM 项目中提供的脚本 examples/offline_inference/save_sharded_state.py。该脚本演示了如何以与 Run:ai Model Streamer 分片加载器兼容的分片格式保存模型。
分片加载器支持与常规 Run:ai Model Streamer 相同的所有可调参数,包括 concurrency 和 memory_limit。这些参数可以以相同的方式进行配置
vllm serve /path/to/sharded/model \
--load-format runai_streamer_sharded \
--model-loader-extra-config '{"concurrency":16, "memory_limit":5368709120}'
注意
分片加载器对于张量并行或流水线并行模型特别高效,因为每个工作进程只需读取其自己的分片,而不是整个检查点。