常见问题解答

常见问题解答#

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

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


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

答:如果你想使用嵌入模型,请尝试:https://huggingface.co/intfloat/e5-mistral-7b-instruct。其他模型,例如 Llama-3-8b、Mistral-7B-Instruct-v0.3,是生成模型而不是嵌入模型。


问:提示的输出在 vLLM 的不同运行中是否会发生变化?

是的,可以。vLLM 不保证输出标记的稳定对数概率(logprobs)。对数概率的变化可能是由于 Torch 操作中的数值不稳定或批处理更改时批处理 Torch 操作中的非确定性行为造成的。有关更多详细信息,请参阅`数值精度部分 <https://pytorch.org/docs/stable/notes/numerical_accuracy.html#batched-computations-or-slice-computations>`_。

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

缓解策略

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

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

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