使用 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}'
注意
分片載入器對於張量並行或流水線並行模型特別高效,因為每個工作程序只需讀取其自己的分片,而不是整個檢查點。