跳到内容

常见问题

问:我该如何在单个端口上使用 OpenAI API 来服务多个模型?

答:假设您是指使用兼容 OpenAI 的服务器同时服务多个模型,目前还不支持此功能。您可以同时运行多个服务器实例(每个实例服务不同的模型),并设置另一层路由来将传入的请求分配到对应的服务器。


问:离线推理嵌入(Embedding)应该使用哪个模型?

答:您可以尝试 e5-mistral-7b-instructBAAI/bge-base-en-v1.5;更多信息请参阅此处

通过提取隐藏状态,vLLM 可以自动将像 Llama-3-8BMistral-7B-Instruct-v0.3 这样的文本生成模型转换为嵌入模型,但其效果预计不如专门针对嵌入任务训练的模型。


问:在 vLLM 中,同一提示词的输出在不同运行中可能会有差异吗?

答:是的,可能会有差异。vLLM 不保证输出 token 的对数概率(logprobs)完全稳定。由于 Torch 操作的数值不稳定性,或者在批处理发生变化时 Torch 批处理操作的非确定性行为,可能会导致 logprobs 出现波动。更多详细信息,请参阅 数值精度(Numerical Accuracy)部分

在 vLLM 中,由于其他并发请求、批大小(batch size)变化或投机采样(speculative decoding)中的批扩展等因素,相同的请求可能会被以不同方式批处理。这些批处理的变化,结合 Torch 操作的数值不稳定性,可能导致每一步的 logit/logprob 值略有不同。这些差异可能会累积,最终导致采样出不同的 token。一旦采样出不同的 token,后续生成很可能会产生分歧。

缓解策略

  • 为了提高稳定性并减少差异,请使用 float32。请注意,这将需要更多的内存。
  • 如果使用的是 bfloat16,切换到 float16 也有所帮助。
  • 使用请求种子(request seeds)有助于在温度(temperature) > 0 时实现更稳定的生成,但由于精度差异导致的偏差仍可能存在。