常見問題#
問:如何使用 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 操作中的非確定性行為,可能會出現對數機率的變化。有關更多詳細資訊,請參閱數值精度部分。
在 vLLM 中,由於其他併發請求、批次大小的變化或推測性解碼中的批次擴充套件等因素,相同的請求可能會以不同的方式進行批次處理。這些批次處理的變化,加上 Torch 操作的數值不穩定性,可能會導致每一步的 logits/logprob 值略有不同。這些差異可能會累積,可能導致取樣到不同的 token。一旦取樣到不同的 token,進一步的差異就可能發生。
緩解策略#
為了提高穩定性和減少方差,請使用
float32
。請注意,這將需要更多記憶體。如果使用
bfloat16
,切換到float16
也有助於改善情況。使用請求種子可以幫助在 temperature > 0 時實現更穩定的生成,但由於精度差異導致的差異可能仍然會發生。