常見問題¶
問:如何使用 OpenAI API 在單個埠上提供多個模型?
答:假設您是指使用 OpenAI 相容伺服器一次性提供多個模型,目前不支援。您可以同時執行該伺服器的多個例項(每個例項提供不同的模型),並設定另一層來將傳入請求正確路由到相應的伺服器。
問:離線推理嵌入使用哪個模型?
答:您可以嘗試 e5-mistral-7b-instruct 和 BAAI/bge-base-en-v1.5;更多模型列表請參閱 此處。
透過提取隱藏狀態,vLLM 可以自動將文字生成模型(如 Llama-3-8B、Mistral-7B-Instruct-v0.3)轉換為嵌入模型,但預期效果會遜色於專門為嵌入任務訓練的模型。
問:vLLM 中提示的輸出在每次執行時會不同嗎?
答:是的,可能會。vLLM 不保證輸出 token 的穩定對數機率(logprobs)。由於 Torch 操作中的數值不穩定性或批處理 Torch 操作在批處理發生變化時的非確定性行為,可能會出現 logprobs 的差異。有關更多詳細資訊,請參閱 數值精度部分。
在 vLLM 中,由於其他併發請求、批次大小的變化或推斷性解碼中的批次擴充套件等因素,相同的請求可能會被不同地批處理。這些批處理的變化,加上 Torch 操作的數值不穩定性,可能導致每一步的 logit/logprob 值略有不同。這種差異可能會累積,最終導致取樣到不同的 token。一旦取樣到不同的 token,很可能會進一步發散。
緩解策略¶
- 為了提高穩定性和減少方差,請使用
float32。請注意,這將需要更多記憶體。 - 如果使用
bfloat16,切換到float16也有幫助。 - 使用請求種子(request seeds)有助於在 temperature > 0 時實現更穩定的生成,但由於精度差異引起的不一致仍可能發生。