跳到内容

离线推理

通过 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),通过对这些概率进行采样来获得最终输出文本。
  • 池化模型 直接输出其隐藏状态(hidden states)。

信息

API 参考

Ray Data LLM API

Ray Data LLM 是另一种使用 vLLM 作为底层引擎的离线推理 API。该 API 增加了一些内置功能,简化了大规模、GPU 高效的推理任务:

  • 流式执行可处理超过集群总内存的数据集。
  • 自动分片、负载均衡和自动扩缩容,通过内置的容错机制将任务分配到整个 Ray 集群中。
  • 连续批处理(Continuous batching)使 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 文档