常见问题

目录

常见问题#

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

答:假设您指的是使用 OpenAI 兼容服务器一次服务多个模型,目前不支持这样做。您可以同时运行多个服务器实例(每个实例服务于不同的模型),并使用另一层来相应地将传入请求路由到正确的服务器。


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

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

通过提取隐藏状态,vLLM 可以自动将文本生成模型(如 Llama-3-8B, Mistral-7B-Instruct-v0.3)转换为嵌入模型,但预期它们不如专门针对嵌入任务训练的模型。


问:在 vLLM 中,提示的输出在不同运行中是否可能有所不同?

答:是的,可能会有所不同。vLLM 不保证输出 tokens 的对数概率(logprobs)稳定。Logprobs 的变化可能是由于 Torch 操作中的数值不稳定或批量处理更改时批量 Torch 操作中的非确定性行为引起的。有关更多详细信息,请参阅数值精度部分

在 vLLM 中,由于其他并发请求、批量大小更改或推测解码中的批量扩展等因素,相同的请求可能会以不同的方式进行批处理。这些批处理变化与 Torch 操作的数值不稳定性相结合,可能导致每个步骤的 logits/logprobs 值略有不同。这些差异可能会累积,可能导致采样到不同的 tokens。一旦采样到不同的 token,就可能发生进一步的偏差。

缓解策略#

  • 为了提高稳定性和减少方差,请使用 float32。请注意,这将需要更多内存。

  • 如果使用 bfloat16,切换到 float16 也有帮助。

  • 使用请求种子可以帮助在 temperature > 0 时实现更稳定的生成,但由于精度差异,仍可能发生差异。