跳到内容

使用 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 缓冲区的并发级别和 OS 线程数量。对于从 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}'

注意

分片加载器对于张量并行或流水线并行模型特别高效,因为每个工作器只需读取自己的分片,而无需读取整个检查点。