:讓第一個(gè)字快一點(diǎn)出來)
用戶對(duì)速度的感受往往不是由總耗時(shí)決定的。同樣要等十秒一個(gè)是白屏十秒后突然全出一個(gè)是第一秒就有字、慢慢往外冒后者的體驗(yàn)要好得多。這就是流式的價(jià)值。首字延遲比總時(shí)長(zhǎng)更關(guān)鍵流式輸出里有兩個(gè)指標(biāo)值得分開看首字延遲和總時(shí)長(zhǎng)。首字延遲決定“快不快”的體感總時(shí)長(zhǎng)決定“多久能讀完”。很多時(shí)候優(yōu)化首字延遲更有價(jià)值——把前置的檢索、鑒權(quán)、模板渲染盡量并行讓模型盡早開始出第一個(gè)字。工程上還要注意幾件事分流輸出時(shí)的分塊策略要合理太碎會(huì)增加網(wǎng)絡(luò)開銷太大會(huì)讓輸出一頓一頓中間不要有緩沖層把數(shù)據(jù)攢起來再發(fā)網(wǎng)關(guān)和負(fù)載均衡必須支持長(zhǎng)連接透?jìng)鞣駝t流式會(huì)在某一跳被“拍平”成全量響應(yīng)。中斷、續(xù)寫與超時(shí)流式一旦鋪開還要處理一批新問題。用戶中途關(guān)掉頁面后端應(yīng)當(dāng)及時(shí)感知并釋放推理資源否則算力會(huì)白白燒掉網(wǎng)絡(luò)抖動(dòng)導(dǎo)致連接斷開要不要支持從斷點(diǎn)繼續(xù)長(zhǎng)時(shí)間沒有任何新內(nèi)容的“靜默”狀態(tài)需要有心跳機(jī)制避免連接被中間設(shè)備掐斷超時(shí)該按總時(shí)長(zhǎng)算還是按無輸出時(shí)長(zhǎng)算也需要明確。這些細(xì)節(jié)處理好了流式才不是“看起來很美”。流式響應(yīng)本身不提升模型能力但它直接決定了用戶愿不愿意等。在體驗(yàn)這件事上感知的速度和真實(shí)的速度同樣重要。