推論是指將經過訓練的模型套用至未標示的範例,藉此進行預測的過程。一般來說,模型可以透過下列兩種方式推斷預測結果:
- 「靜態推論」 (也稱為「離線推論」或「批次推論」) 是指模型針對一組常見的未標示的範例進行預測,然後將這些預測結果快取到某處。
- 「動態推論」 (也稱為「線上推論」或「即時推論」) 是指模型只會在有需要時進行預測,例如當用戶端要求預測時。
舉個極端的例子,假設有個非常複雜的模型,需要花一小時才能推斷出預測結果。這可能是靜態推論的絕佳情境:
假設這個複雜的模型誤用動態推論,而非靜態推論。如果許多用戶端在同一時間要求預測,大多數用戶端可能要等上好幾個小時或好幾天才能收到預測結果。
請考慮使用相對較少的運算資源,在 2 毫秒內快速推斷的模型。在這種情況下,用戶端可以透過動態推論快速且有效率地接收預測結果,如圖 5 所示。
靜態推論
靜態推論有一定的優缺點。
優點
- 您不必太過擔心推論成本。
- 可在推送前對預測結果進行事後驗證。
缺點
- 只能提供快取的預測結果,因此系統可能無法針對不常見的輸入範例提供預測結果。
- 更新延遲時間可能以小時或天為單位。
動態推論
動態推論有一定的優缺點。
優點
- 可針對任何新項目進行推論預測,非常適合用於長尾 (較不常見) 預測。
缺點
- 耗用大量運算資源,且容易受到延遲影響。這種組合可能會限制模型複雜度,也就是說,您可能必須建立較簡單的模型,才能比複雜模型更快速地推斷預測結果。
- 需要更密集的監控。
練習:測試您的理解程度
下列四個敘述中,哪三個敘述在靜態推論時為真?
模型必須針對所有可能的輸入內容建立預測結果。
是的,模型必須針對所有可能的輸入內容做出預測,並將這些預測結果儲存在快取或查詢表中。如果模型預測的項目有限,那麼靜態推論可能會是個不錯的選擇。不過,如果是使用者查詢這類自由格式輸入內容,因為包含大量不尋常或罕見的項目,靜態推論無法提供完整的涵蓋率。
系統可以在提供推測預測結果前進行驗證。
是的,這是靜態推論的實用功能。
對於特定輸入內容,模型的預測速度比動態推論更快。
是的,靜態推論幾乎總是比動態推論更快提供預測結果。
您可以迅速因應世界變化。
否,這是靜態推論的缺點。
以下哪個敘述對動態推論來說是正確的?
您可以為所有可能的項目提供預測結果。
是的,這正是動態推論的優勢。系統會為所有傳入的要求提供分數。動態推論可處理長尾分布 (含有許多稀有項目的分布),例如電影評論中所有可能的句子空間。
您可以在使用預測結果前,對預測結果進行事後驗證。
一般來說,您無法在使用預測結果前,對所有預測結果進行事後驗證,因為預測結果是按需產生的。不過,您可以監控匯總預測品質,以便進行某種程度的品質檢查,但這類檢查只能在火勢擴散後才會發出警報。
執行動態推論時,您不必像執行靜態推論時那樣擔心預測延遲 (傳回預測的延遲時間)。
在動態推論中,預測延遲通常是個大問題。很抱歉,您不一定能透過新增更多推論伺服器來修正預測延遲問題。