介面卡的線上管理:熱切換與多租戶服務
同一個底座掛多個 LoRA 介面卡,是自架服務最划算的架構。
LoRA 的一個被低估的優勢是:多個介面卡可以共用同一份底座權重。這意味著你能用一張卡同時服務十個不同任務,而不是為每個任務各起一個服務。
這個架構對多租戶場景特別有價值——每個客戶一個介面卡,底座只載入一次。
服務端的設定
# vLLM 啟用多 LoRA
python -m vllm.entrypoints.openai.api_server \
--model base/qwen3-8b \
--enable-lora \
--max-loras 8 \
--max-lora-rank 32 \
--lora-modules \
ticket-cls=/adapters/ticket-cls-v4 \
summarize=/adapters/summarize-v2 \
acme-tone=/adapters/acme-tone-v1請求端指定介面卡
resp = client.chat.completions.create(
model='ticket-cls', # 用介面卡名稱作為 model
messages=[...],
)三個容量參數
max-loras:同時常駐在顯示記憶體中的介面卡數。超過時會換出換入,有延遲成本。max-lora-rank:所有介面卡的 rank 上限,會影響預留的記憶體。- 介面卡總數可以遠大於
max-loras,只是熱門的要盡量常駐。
熱切換的延遲
介面卡換入需要從磁碟載入並複製到顯示記憶體,通常是數十到數百毫秒。若流量在很多介面卡之間平均分散,換入換出會頻繁發生,延遲上升明顯。
# 監控換入率,過高就要提高 max-loras 或分流部署
lora_swap_rate = swaps_per_min / requests_per_min
if lora_swap_rate > 0.15:
alert('介面卡換入過於頻繁,考慮增加常駐數或按介面卡分流')版本更新不中斷
- 新版介面卡用新名稱註冊(
ticket-cls-v5),不覆寫舊版。 - 在路由層調整流量比例,逐步從 v4 移到 v5。
- 穩定後再卸載 v4。
因為介面卡是獨立檔案,這個流程不需要重啟服務,也不影響其他任務。這是相較於「合併權重後部署」的最大優勢。
多租戶的隔離考量
- 介面卡名稱要做權限檢查:不能讓 A 客戶指定 B 客戶的介面卡。
- 用量與計費要分租戶統計。
- 單一租戶的流量上限:避免一個客戶的批次任務拖垮共用服務。
介面卡名稱由請求端指定時,一定要做白名單驗證。直接把使用者輸入當成 model 參數傳下去,是跨租戶存取的漏洞。
訂閱後繼續閱讀全文
本篇為訂閱者專屬內容。訂閱後可取得下列權限:
- 解鎖全部內容權限
- 閱讀不限篇數
- 全站移除廣告
月卡
NT$240
開通 30 天
一次付清,開通 30 天
季卡
NT$620
開通 90 天
一次付清,開通 90 天,每天約 NT$7
年卡
NT$2,160
開通 365 天
一次付清,開通 365 天,每天約 NT$6
一次性付款,付款成功後立即開通,到期自動結束,不會再次扣款,也不需要取消訂閱。
立即訂閱
金額均為新臺幣(TWD),即實際扣款金額,不另收手續費
支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
購買須知與退款政策