跳到內容

離線推理

您可以使用 vLLM 的 LLM 類在自己的程式碼中進行離線推理。

例如,以下程式碼將從 HuggingFace 下載 facebook/opt-125m 模型,並使用預設配置在 vLLM 中執行它。

from vllm import LLM

# Initialize the vLLM engine.
llm = LLM(model="facebook/opt-125m")

初始化 LLM 例項後,使用可用的 API 執行模型推理。可用的 API 取決於模型型別

  • 生成模型 輸出 logprobs,這些 logprobs 被取樣以獲得最終的輸出文字。
  • 池化模型 直接輸出它們的隱藏狀態。

資訊

API 參考

Ray Data LLM API

Ray Data LLM 是一個替代的離線推理 API,它使用 vLLM 作為底層引擎。該 API 添加了幾項“開箱即用”的功能,簡化了大規模、GPU 高效的推理。

  • 流式執行可處理超出聚合叢集記憶體的資料集。
  • 自動分片、負載均衡和自動伸縮將工作分佈在 Ray 叢集中,並內建容錯能力。
  • 連續批處理使 vLLM 副本飽和,並最大化 GPU 利用率。
  • 對張量並行和流水線並行的透明支援,實現了高效的多 GPU 推理。
  • 讀寫大多數流行的檔案格式和雲物件儲存。
  • 無需更改程式碼即可擴充套件工作負載。
程式碼
import ray  # Requires ray>=2.44.1
from ray.data.llm import vLLMEngineProcessorConfig, build_llm_processor

config = vLLMEngineProcessorConfig(model_source="unsloth/Llama-3.2-1B-Instruct")
processor = build_llm_processor(
    config,
    preprocess=lambda row: {
        "messages": [
            {"role": "system", "content": "You are a bot that completes unfinished haikus."},
            {"role": "user", "content": row["item"]},
        ],
        "sampling_params": {"temperature": 0.3, "max_tokens": 250},
    },
    postprocess=lambda row: {"answer": row["generated_text"]},
)

ds = ray.data.from_items(["An old silent pond..."])
ds = processor(ds)
ds.write_parquet("local:///tmp/data/")

有關 Ray Data LLM API 的更多資訊,請參閱 Ray Data LLM 文件