代理程式的 MLflow 追蹤
重要
這項功能處於公開預覽狀態。
本文章說明MLflow 追蹤及其在 AI 系統中評估生成式 AI 應用程式的案例。
在軟體開發中,追蹤牽涉到記錄使用者工作階段或要求流程等事件順序。 在 AI 系統的內容中,追蹤通常是指您與 AI 系統的互動。 AI 系統的範例追蹤可能看起來像檢測 RAG 應用程式的輸入和參數,其中包含具有提示的使用者訊息、媒介查詢,以及具有生成式 AI 模型的介面。
什麼是 MLflow 追蹤?
使用 MLflow 追蹤,您可以記錄、分析及比較不同版本的生成式 AI 應用程式之間的追蹤。 它可讓您對生成式 AI Python 程式代碼進行偵錯,並追蹤輸入和回應。 這麼做可協助您探索造成應用程式效能不佳的條件或參數。 MLflow 追蹤與 Databricks 工具和基礎結構緊密整合,可讓您在執行程式代碼時,在 Databricks 筆記本或 MLflow 實驗 UI 中儲存和顯示所有追蹤。
當您使用 LangChain、LlamaIndex、OpenAI 或自訂 PyFunc 等程式庫在 Databricks 上開發 AI 系統時,MLflow 追蹤可讓您查看代理程式每個步驟的所有事件和中繼輸出。 您可以輕鬆地看到提示、使用哪些模型和擷取器、擷取哪些文件來增強回應、項目花費的時間,以及最終輸出。 例如,如果您的模型幻覺,您可以快速檢查導致幻覺的每個步驟。
為什麼要使用 MLflow 追蹤?
MLflow 追蹤提供數個益處,可協助您追蹤開發工作流程。 例如,您可以:
- 檢閱互動式追蹤視覺效果,並使用調查工具來診斷開發中的問題。
- 確認提示範本和護欄產生合理的結果。
- 探索並最小化不同架構、模型、區塊大小和軟體開發做法的延遲影響。
- 藉由追蹤不同模型的權杖使用方式來測量應用程式成本。
- 建立基準 (“golden”) 資料集,以評估不同版本的效能。
- 從生產模型端點儲存追蹤以偵錯問題,並執行離線檢閱和評估。
安裝 MLflow 追蹤
MLflow 追蹤已在 MLflow 2.13.0 版和更新版本中推出。
%pip install mlflow>=2.13.0 -qqqU
%restart_python
或者,您可以 %pip install databricks-agents
以安裝包含相容 MLflow 版本的 databricks-agents
的最新版本。
在開發中使用 MLflow 追蹤
MLflow 追蹤可協助您分析效能問題,並加速代理程式開發週期。 下列各章節假設您正在從筆記本進行代理程式開發和 MLflow 追蹤。
注意
在筆記本環境中,MLflow 追蹤可能會增加代理程式執行階段的幾秒額外負荷。 這主要來自記錄追蹤到 MLflow 實驗的延遲。 在生產模型端點中,MLflow 追蹤對效能的影響相對較小。 請參閱在 生產環境中使用 MLflow 追蹤。
注意
自 Databricks Runtime 15.4 LTS ML 起,預設將會在筆記本中啟用 MLflow。 若要停用追蹤,例如使用 LangChain,您可以在筆記本中執行 mlflow.langchain.autolog(log_traces=False)
。
將追蹤新增至您的代理程式
MLflow 追蹤提供三種不同的方式,讓您搭配追蹤使用追蹤與生成式 AI 應用程式。 如需使用這些方法的範例,請參閱將追蹤新增至您的代理程式。 如需 API 參照的詳細資料,請參閱 MLflow 文件。
API | 建議的使用案例 | 描述 |
---|---|---|
MLflow 自動記錄 | 整合式 GenAI 程式庫的開發 | 自動記錄會自動檢測熱門開放原始碼架構的追蹤,例如 LangChain、LlamaIndex 和 OpenAI。 當您在筆記本開頭新增 mlflow.<library>.autolog() 時,MLflow 會自動記錄代理程式執行每個步驟的追蹤。 |
Fluent API | 使用 Pyfunc 的自訂代理程式 | 用於檢測 AI 系統的低程式碼 API,而不必擔心追蹤的樹狀結構。 MLflow 會根據 Python 堆疊來判斷適當的父系-子系樹狀結構 (spans)。 |
MLflow 用戶端 API | 進階使用案例,例如多執行緒 | MLflowClient 針對進階使用案例,執行更安全執行緒的 API。 這些 API 不會管理範圍的父系-子系關聯圖,因此您必須手動指定它至建構所需的追蹤結構。 這需要更多程式碼,但可讓您更妥善地控制追蹤生命週期,特別是針對多執行緒使用案例。建議用於需要更多控制的使用案例,例如多執行緒應用程式或回撥型檢測。 |
檢閱追蹤
執行檢測的代理程式之後,您可以透過不同的方式檢閱產生的追蹤:
- 追蹤視覺效果會在儲存格輸出中內嵌呈現。
- 追蹤會記錄到您的 MLflow 實驗中。 您可以檢閱歷程記錄追蹤的完整清單,並在 [實驗] 頁面的
Traces
索引標籤中進行搜尋。 當代理程式在作用中的 MLflow 執行下執行時,您也可以在 [執行] 頁面中找到追蹤。 - 使用 search_traces() API 以程式設計方式擷取追蹤。
在生產環境中使用 MLflow 追蹤
MLflow 追蹤也與 Mosaic AI Model Serving 整合,可讓您有效率對問題進行偵錯、監視效能,以及建立用於離線評估的黃金資料集。 當您的服務端點啟用 MLflow 追蹤時,追蹤會記錄在 response
資料欄底下的推斷資料表。
若要為服務端點啟用 MLflow 追蹤,您必須將端點組態中的 ENABLE_MLFLOW_TRACING
環境變數設定為 True
。 如需如何使用自訂環境變數部署端點,請參閱新增純文字環境變數。 如果您使用 deploy()
API 部署代理程式,追蹤會自動記錄至推斷資料表。 請參閱為生成式 AI 應用程式部署代理程式。
注意
以非同步方式將追蹤寫入推斷資料表,即不會在開發期間新增與筆記本環境中相同的額外負荷。 不過,它仍可能對端點的回應速度帶來一些額外負荷,尤其是當每個推斷要求的追蹤大小很大時。 Databricks 並不保證任何服務等級協定(SLA)對您的模型端點的實際延遲影響,因為這絕大多數取決於環境和模型的執行。 Databricks 建議先測試端點效能,並取得追蹤額外負荷的深入解析,再部署到生產應用程式。
下表提供不同追蹤大小之推斷延遲影響的粗略指示。
每個要求的追蹤大小 | 對延遲的影響(毫秒) |
---|---|
~10 KB | ~1 毫秒 |
~1 MB | 50 ~ 100 毫秒 |
10 MB | 150 毫秒 ~ |
限制
MLflow 追蹤可在 Databricks 筆記本、筆記本工作和模型服務中使用。
LangChain 自動記錄可能不支援所有 LangChain 預測 API。 如需支援 API 的完整清單,請參閱 MLflow 文件。