整合提示流程與 LLM 型應用程式 DevOps
在本文中,您會了解如何在 Azure Machine Learning 中整合提示流程與 LLM 型應用程式 DevOps。 提示流程提供適合開發人員且易於使用的程式碼優先體驗,可供進行流程開發,並逐一查看整個 LLM 型應用程式開發工作流程。
其提供提示流程 SDK 和 CLI、VS Code 延伸模組,以及流程資料夾總管的新 UI,促進本機流程開發、本機流程執行和評估執行觸發,以及將流程從本機轉換至雲端 (Azure Machine Learning 工作區) 環境。
本文件著重於如何有效地結合提示流程程式碼體驗和 DevOps 的功能,以增強 LLM 型應用程式開發工作流程。
提示流程中的程式碼優先體驗簡介
使用 LLM 開發應用程式時,通常會有包含程式碼存放庫和 CI/CD 管線的標準化應用程式工程程序。 此整合可讓您簡化小組成員之間的開發程序、版本控制及共同作業。
對於有程式碼開發經驗並且尋求更有效率的 GenAIOps (有時稱為 LLMOps) 反覆運算流程的開發人員,可以透過提示流程程式碼體驗獲得下列重要功能和優點:
- 程式碼存放庫中的流程版本設定。 您可以使用 YAML 格式定義您的流程,可與資料夾結構中參考的來源檔案保持一致。
- 整合流程執行與 CI/CD 管線。 您可以使用提示流程 CLI 或 SDK 來觸發流程執行,可以順暢地整合到 CI/CD 管線和傳遞程序。
- 從本機到雲端的平順轉換。 您可以輕鬆地將流程資料夾匯出至本機或程式碼存放庫,以進行版本控制、本機開發和共用。 同樣地,流程資料夾可以毫不費力地匯入回雲端,以進一步在雲端資源中撰寫、測試、部署。
存取提示流程程式碼定義
每個提示流程都會與流程資料夾結構相關聯,其中包含在程式碼資料夾結構中定義流程的基本檔案。 此資料夾結構會組織您的流程,促進更順暢的轉換。
Azure Machine Learning 為所有工作區使用者提供共用檔案系統。 建立流程時,會自動產生對應的流程資料夾,位於 Users/<username>/promptflow
目錄中。
流程資料夾結構
流程資料夾結構及其所包含金鑰檔案的概觀:
- flow.dag.yaml:此主要流程定義檔案 (YAML 格式) 包含流程中使用的輸入、輸出、節點、工具和變體的相關資訊。 這是撰寫和定義提示流程不可或缺的一部分。
- 原始程式碼檔案 (.py, .jinja2):流程資料夾也包含使用者管理的原始程式碼檔案,這些檔案是由流程中的工具/節點所參考。
- Python (.py) 格式的檔案可由 Python 工具參考,以定義自訂 Python 邏輯。
- Jinja 2 (.jinja2) 格式的檔案可由提示工具或 LLM 工具參考,以定義提示內容。
- 非來源檔案:流程資料夾也可以包含非來源檔案,例如可包含在來源檔案中的公用程式檔案和資料檔案。
建立流程之後,您可以瀏覽至流程撰寫頁面,以在正確的檔案總管中檢視及操作流程檔案。 這可讓您檢視、編輯和管理檔案。 對檔案所做的任何修改都會直接反映在檔案共用儲存體中。
開啟「原始檔案模式」後,您可以在檔案編輯器中檢視和編輯檔案的原始內容,包括流程定義檔案 flow.dag.yaml
和來源檔案。
或者,您也可以直接存取 Azure Machine Learning 筆記本內的所有流程資料夾。
程式碼存放庫中的版本設定提示流程
將流程簽入您的程式碼存放庫,您可以輕鬆地將流程資料夾從流程撰寫頁面匯出至本機系統。 這會下載套件,其中包含從總管到本機電腦的所有檔案,然後您可以將其簽入您的程式碼存放庫。
如需 DevOps 與 Azure Machine Learning 整合的詳細資訊,請參閱 Azure Machine Learning 中的 Git 整合
從本機存放庫將執行提交至雲端
必要條件
如果您還沒有 Azure Machine Learning 工作區,請完成建立資源以開始使用。
您已在其中安裝 Azure Machine Learning Python SDK v2 的 Python 環境 - 安裝指示。 此環境用於定義和控制 Azure Machine Learning 資源,與計算工作階段上使用的環境不同。 若要深入了解,請參閱針對提示流程工程如何管理計算工作階段。
安裝提示流程 SDK
pip install -r ../../examples/requirements.txt
連線至 Azure Machine Learning 工作區
az login
準備 run.yml
,以定義此流程執行在雲端中的設定。
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
column_mapping:
url: ${data.url}
# define cloud resource
# if using serverless compute type
# resources:
# instance_type: <instance_type>
# if using compute instance compute type
# resources:
# compute: <compute_instance_name>
# overrides connections
connections:
classify_with_llm:
connection: <connection_name>
deployment_name: <deployment_name>
summarize_text_content:
connection: <connection_name>
deployment_name: <deployment_name>
您可以指定流程中每個工具的連線和部署名稱。 如果您未指定連線和部署名稱,則會在 flow.dag.yaml
檔案上使用一個連線和部署。 若要格式化連線:
...
connections:
<node_name>:
connection: <connection_name>
deployment_name: <deployment_name>
...
pfazure run create --file run.yml
準備 run_evaluation.yml
,以定義此評估流程執行在雲端中的設定。
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
run: <id of web-classification flow run>
column_mapping:
groundtruth: ${data.answer}
prediction: ${run.outputs.category}
# define cloud resource
# if using serverless compute type
# resources:
# instance_type: <instance_type>
# if using compute instance compute type
# resources:
# compute: <compute_instance_name>
# overrides connections
connections:
classify_with_llm:
connection: <connection_name>
deployment_name: <deployment_name>
summarize_text_content:
connection: <connection_name>
deployment_name: <deployment_name>
pfazure run create --file run_evaluation.yml
在 Azure Machine Learning 工作區中檢視執行結果
將流程執行提交至雲端會傳回執行的入口網站 URL。 您可以在入口網站中開啟 URI 檢視執行結果。
您也可以使用下列命令來檢視執行的結果。
串流記錄
pfazure run stream --name <run_name>
檢視執行輸出
pfazure run show-details --name <run_name>
檢視評估執行的計量
pfazure run show-metrics --name <evaluation_run_name>
重要
如需詳細資訊,請參閱適用於 Azure 的提示流程 CLI 文件。
微調的反覆式開發
本機開發和測試
在反覆式開發期間,當您精簡並微調流程或提示時,在程式碼存放庫中本機執行多個反覆運算可能會很有幫助。 提供社群版本,提示流程 VS Code 延伸模組和提示流程本機 SDK 和 CLI,促進在沒有 Azure 繫結的情況下進行純本機開發和測試。
提示流程 VS Code 延伸模組
安裝提示流程 VS Code 延伸模組之後,您可以輕鬆地從 VS Code 編輯器本機撰寫流程,該編輯器提供與雲端類似的 UI 體驗。
若要使用延伸模組:
- 在 VS Code Desktop 中開啟提示流程資料夾。
- 在筆記本檢視中開啟「flow.dag.yaml」檔案。
- 使用視覺效果編輯器對您的流程進行任何必要的變更,例如微調變體中的提示,或新增更多工具。
- 若要測試您的流程,請選取視覺效果編輯器頂端的 [執行流程] 按鈕。 這會觸發流程測試。
提示流程本機 SDK 和 CLI
如果您偏好使用 Jupyter、PyCharm、Visual Studio 或其他 IDE,您可以直接修改 flow.dag.yaml
檔案中的 YAML 定義。
接著,您可以使用提示流程 CLI 或 SDK 來觸發流程單一執行以進行測試。
假設您位於工作目錄 <path-to-the-sample-repo>/examples/flows/standard/
pf flow test --flow web-classification # "web-classification" is the directory name
這可讓您快速進行變更和測試變更,而不需要每次更新主要程式碼存放庫。 一旦您滿意本機測試的結果,您就可以轉換為從本機存放庫將執行提交至雲端,以在雲端中執行實驗執行。
如需使用本機版本的詳細資訊和指導,請參閱提示流程 GitHub 社群。
返回工作室 UI 以持續開發
或者,您可以選擇返回工作室 UI,使用雲端資源和體驗,在流程撰寫頁面中變更您的流程。
若要繼續開發和使用最新版本的流程檔案,您可以在筆記本中存取終端機,並從存放庫提取流程檔案的最新變更。
此外,如果您偏好繼續在工作室 UI 中工作,您可以直接將本機流程資料夾匯入為新的草稿流程。 這可讓您順暢地在本機和雲端開發之間轉換。
CI/CD 整合
CI:在 CI 管線中觸發流程執行
在您成功開發及測試流程,並將其簽入為初始版本之後,即可進行下一個微調和測試反覆項目。 在這個階段,您可以使用提示流程 CLI 來觸發流程執行,包括批次測試和評估執行。 這可作為持續整合 (CI) 管線中的自動化工作流程。
在整個流程反覆運算的生命週期中,可以自動化數個作業:
- 在提取要求之後執行提示流程
- 執行提示流程評估以確保結果是高品質
- 註冊提示流程模型
- 部署提示流程模型
如需執行 Web 分類流程的端對端 MLOps 管線完整指南,請參閱使用提示流程和 GitHub 設定端對端 GenAIOps 和 GitHub 示範專案。
CD:持續部署
移至生產環境的最後一個步驟是將您的流程部署為 Azure Machine Learning 中的線上端點。 這可讓您將流程整合到您的應用程式中,並使其可供使用。
如需如何部署流程的詳細資訊,請參閱使用 CLI 和 SDK 將流程部署至 Azure Machine Learning 受控線上端點以進行即時推斷。
在生產環境中的流程開發上共同作業
在開發具有提示流程的 LLM 型應用程式內容中,小組成員之間的共同作業通常很重要。 小組成員可能會參與相同的流程撰寫和測試、處理流程的各種 Facet,或同時進行反覆式變更和增強功能。
這類共同作業需要有效率且簡化的方法,以共用程式碼、追蹤修改、管理版本,以及將這些變更整合到最終專案中。
引進提示流程 SDK/CLI 和 Visual Studio Code 延伸模組,作為提示流程程式碼體驗的一部分,協助您在程式碼存放庫內的流程開發上輕鬆共同作業。 建議您利用雲端式程式碼存放庫,例如 GitHub 或 Azure DevOps,來追蹤變更、管理版本,以及將這些修改整合到最終專案中。
共同開發的最佳做法
在本機撰寫和單一測試您的流程 - 程式碼存放庫和 VSC 延伸模組
雲端式實驗批次測試和評估 - 提示流程 CLI/SDK 和工作區入口網站 UI
- 在本機開發和測試階段之後,流程開發人員可以使用 Azure CLI 或 SDK,將批次執行和評估執行從本機流程檔案提交至雲端。
- 在提交至雲端之後,小組成員可以存取雲端入口網站 UI,以有效率地檢視結果及管理實驗。
生產環境的本機反覆式開發或單步驟 UI 部署
為什麼我們會建議使用程式碼存放庫進行共同開發
針對反覆式開發,本機開發環境和版本控制系統的組合 (例如 Git) 通常更有效率。 您可以在本機進行修改並測試程式碼,然後將變更認可至 Git。 這會建立您變更的持續記錄,並且可在必要時還原為舊版。
需要跨不同環境共用流程時,建議使用 GitHub 或 Azure Repos 等雲端式程式碼存放庫。 這可讓您從任何位置存取最新版本的程式碼,並提供共同作業和程式碼管理的工具。
遵循此最佳做法,小組可以建立順暢、有效率且有生產力的共同作業環境,以進行提示流程開發。