整合提示流程與適用於 LLM 型應用程式的 DevOps
Azure 機器學習 提示流程是一種開發人員易用且容易使用的程式代碼優先方法,可用來開發和逐一查看大型語言模型 (LLM) 型應用程式開發流程。 提示流程提供 SDK 和 CLI、Visual Studio Code 擴充功能和流程撰寫 UI。 這些工具可協助本機流程開發、本機流程執行和評估執行觸發,以及轉換本機和雲端工作區環境之間的流程。
您可以結合提示流程體驗和程式碼功能與開發人員作業 (DevOps) 來增強以 LLM 為基礎的應用程式開發工作流程。 本文著重於整合 Azure 機器學習 LLM 型應用程式的提示流程和 DevOps。
下圖顯示與 DevOps 進行本機和雲端式提示流程開發的互動。
必要條件
Azure Machine Learning 工作區。 若要建立資源,請參閱 建立資源以開始使用。
已安裝 Azure 機器學習 Python SDK v2 的本機 Python 環境,方法是遵循用戶入門中的指示所建立。
注意
此環境與計算會話用來執行流程的環境不同,而此流程會定義為流程的一部分。 如需詳細資訊,請參閱管理 Azure Machine Learning 工作室 中的提示流程計算會話。
已安裝 Python 和提示流程延伸模組的 Visual Studio Code。
在提示流程中使用程式碼優先體驗
開發 LLM 型應用程式通常會遵循標準化的應用程式工程程式,其中包含原始程式碼存放庫和持續整合/持續部署 (CI/CD) 管線。 此程式可促進小組成員之間的簡化開發、版本控制及共同作業。
DevOps 與提示流程程式代碼體驗整合,可讓程式代碼開發人員更有效率的 GenAIOps 或 LLMOps 反覆專案程式,並提供下列主要功能和優點:
程序代碼存放庫中的流程版本控制。 您可以使用 YAML 格式定義流程檔案,而且它們會與相同資料夾結構中的參考原始程式檔保持一致。
流程執行與 CI/CD 管線整合。 您可以使用提示流程 CLI 或 SDK,順暢地將提示流程整合到 CI/CD 管線和傳遞程式,以自動觸發流程執行。
本機與雲端之間的順暢轉換。 您可以輕鬆地將流程資料夾匯出至本機或上游程式代碼存放庫,以進行版本控制、本機開發及共用。 您也可以毫不費力地將流程資料夾匯回 Azure 機器學習,以便使用雲端資源進一步撰寫、測試和部署。
存取提示流程代碼
每個提示流程都有一個流程資料夾結構,其中包含定義流程的基本程式碼檔案。 資料夾結構會組織您的流程,促進本機和雲端之間的更順暢轉換。
Azure 機器學習 為所有工作區使用者提供共用文件系統。 建立流程時,會自動產生對應的流程資料夾,並儲存在 Users/<username>/promptflow 目錄中。
使用流程代碼檔案
在 Azure Machine Learning 工作室 中建立流程之後,您可以在流程撰寫頁面的 [檔案] 區段中檢視、編輯和管理流程檔案。 對檔案所做的任何修改都會直接反映在檔案共享記憶體中。
LLM 型流程的流程資料夾包含下列主要檔案。
flow.dag.yaml 是 YAML 格式的主要流程定義檔。 此檔案是撰寫和定義提示流程不可或缺的一部分。 此檔案包含流程所使用的輸入、輸出、節點、工具和變體的相關信息。
Python (.py) 或 Jinja 2 (.jinja2) 格式的使用者管理原始碼檔案會設定流程中的工具和節點。 Python 工具會使用 Python 檔案來定義自定義 Python 邏輯。 提示工具和 LLM 工具會使用 Jinja 2 檔案來定義提示內容。
公用程式與數據檔等非來源檔案可以包含在流程資料夾中,以及原始程序檔。
若要在檔案編輯器中檢視和編輯 flow.dag.yaml 和原始程式檔的原始程式代碼,請開啟 [原始檔] 模式。
或者,您可以從 Azure Machine Learning 工作室 Notebooks 頁面存取和編輯所有流程資料夾和檔案。
下載並簽入提示流程代碼
若要將流程簽入程式代碼存放庫,請將流程資料夾從 Azure Machine Learning 工作室 匯出至本機計算機。 在流程撰寫頁面的 [檔案 ] 區段中選取下載圖示,以下載包含所有流程檔案的 ZIP 套件。 然後,您可以將該檔案簽入您的程式代碼存放庫,或將其解壓縮以在本機使用檔案。
如需DevOps與 Azure 機器學習整合的詳細資訊,請參閱 Azure 機器學習的 Git 整合。
在本機開發和測試
當您在反覆開發期間精簡及微調流程或提示時,您可以在程式代碼存放庫本機執行多個反覆專案。 VS Code 社群版本、VS Code 提示流程延伸模組,以及提示流程本機 SDK 和 CLI 可協助進行純本機開發和測試,而不需要 Azure 系結。
在本機工作可讓您快速進行和測試變更,而不需要每次更新主要程式代碼存放庫。 如需使用本機版本的詳細資訊和指引,請參閱 提示流程 GitHub 社群。
使用 VS Code 提示流程延伸模組
藉由使用提示流程 VS Code 擴充功能,您可以輕鬆地在 VS Code 編輯器中,使用與雲端類似的 UI 體驗,在本機撰寫流程。
若要使用提示流程延伸模組在 VS Code 中本機編輯檔案:
在已啟用提示流程延伸模組的 VS Code 中,開啟提示流程資料夾。
開啟 flow.dag.yaml 檔案,然後選取檔案頂端的 [可視化編輯器] 連結。
使用提示流程可視化編輯器來變更您的流程,例如微調變體中的提示或新增更多節點。
若要測試流程,請選取 可視化編輯器頂端的 [執行 ] 圖示,或測試任何節點,選取節點頂端的 [ 執行 ] 圖示。
使用提示流程 SDK 和 CLI
如果您想要直接在程式代碼中工作,或使用 Jupyter、PyCharm、Visual Studio 或其他集成開發環境 (IDE),您可以直接修改 flow.dag.yaml 檔案中的 YAML 程式代碼。
接著,您可以使用終端機中的提示流程 CLI 或 SDK,觸發單一流程執行以進行測試,如下所示。
若要從工作目錄觸發執行,請執行下列程序代碼:
pf flow test --flow <directory-name>
傳回值是測試記錄和輸出。
從本機存放庫將執行提交至雲端
一旦您滿意本機測試的結果,您可以使用提示流程 CLI 或 SDK,從本機存放庫將執行提交至雲端。 下列程式和程序代碼是以 GitHub 中的 Web 分類示範專案為基礎。 您可以複製專案存放庫,或將提示流程代碼下載到本機計算機。
安裝提示流程 SDK
執行 pip install promptflow[azure] promptflow-tools
來安裝 Azure 提示流程 SDK/CLI。
如果您使用示範專案,請安裝 requirements.txt 以取得 SDK 和其他必要套件pip install -r <path>/requirements.txt
.
聯機到 Azure 機器學習 工作區
az login
上傳流程並建立執行
準備run.yml檔案,以定義此流程在雲端中執行的組態。
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl
column_mapping:
url: ${data.url}
# Define cloud compute resource
resources:
instance_type: <compute-type>
# If using compute instance compute type, also specify instance name
# compute: <compute-instance-name>
# Specify connections
<node-name>:
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-file>.jsonl
run: <id-of-base-flow-run>
column_mapping:
<input-name>: ${data.<column-from-test-dataset>}
<input-name>: ${run.outputs.<column-from-run-output>}
resources:
instance_type: <compute-type>
compute: <compute_instance_name>
connections:
<node-name>:
connection: <connection-name>
deployment_name: <deployment-name>
<node-name>:
connection: <connection-name>
deployment_name: <deployment-name>
建立評估回合。
pfazure run create --file run_evaluation.yml
檢視執行結果
將流程執行提交至雲端會傳回執行的雲端 URL。 您可以開啟 URL,以在 Azure Machine Learning 工作室 中檢視執行結果。 您也可以執行下列 CLI 或 SDK 命令來檢視執行結果。
串流記錄
pfazure run stream --name <run-name>
檢視執行輸出
pfazure run show-details --name <run-name>
檢視評估回合計量
pfazure run show-metrics --name <evaluation-run-name>
與 DevOps 整合
本機開發環境和版本控制系統的組合,例如 Git 通常最適合反覆開發。 您可以在本機進行修改並測試程式碼,然後將變更認可至 Git。 此程式會建立變更的持續記錄,並在必要時還原為舊版。
當您需要跨不同環境共用流程時,您可以將流程推送至雲端式程式代碼存放庫,例如 GitHub 或 Azure Repos。 此策略可讓您從任何位置存取最新的程式碼版本,並提供共同作業和程式代碼管理的工具。
藉由遵循這些做法,小組可以建立順暢、有效率且具生產力的共同作業環境,以進行提示流程開發。
如需執行 Web 分類流程的端對端 LLMOps 管線,請參閱 使用提示流程和 GitHub Web 分類示範專案設定端對端 GenAIOps。
在 CI 管線中執行觸發流程
成功開發和測試流程並簽入為初始版本之後,您就可以調整和測試反覆專案。 在這個階段,您可以使用提示流程 CLI 來自動化 CI 管線中的步驟,以觸發流程執行,包括批次測試和評估回合。
在整個流程反覆專案的生命週期中,您可以使用 CLI 將下列作業自動化:
- 在提取要求之後執行提示流程
- 執行提示流程評估以確保結果是高品質
- 註冊提示流程模型
- 部署提示流程模型
使用 Studio UI 進行持續開發
在流程開發的任何時間點,您可以回到 Azure Machine Learning 工作室 UI,並使用雲端資源和體驗來變更您的流程。
若要繼續開發和使用最新版的流程檔案,您可以在 Notebook 頁面上存取終端機,並從您的存放庫提取最新的流程檔案。 或者,您可以直接匯入本機流程資料夾作為新的草稿流程,以順暢地在本機和雲端開發之間轉換。
將流程部署為線上端點
進入生產環境的最後一個步驟是將您的流程部署為 Azure 機器學習 中的在線端點。 此程式可讓您將流程整合到您的應用程式中,並讓它可供使用。 如需如何部署流程的詳細資訊,請參閱將流程部署至 Azure 機器學習 受控在線端點以進行即時推斷。
在流程開發上共同作業
使用提示流程開發 LLM 型應用程式時,小組成員之間的共同作業可能很重要。 小組成員可能會撰寫和測試相同的流程、處理流程的不同 Facet,或同時進行反覆變更和增強功能。 此共同作業需要有效率且簡化的方法,才能共用程式代碼、追蹤修改、管理版本,以及將變更整合到最終專案中。
提示流程 SDK/CLI 和 VS Code 提示流程延伸模組可簡化在原始程式碼存放庫中程式代碼型流程開發上的共同作業。 您可以使用 GitHub 或 Azure Repos 等雲端式原始檔控制系統來追蹤變更、管理版本,以及將這些修改整合到最終專案中。
遵循共同作業開發最佳做法
設定集中式程式代碼存放庫。
共同作業程式的第一個步驟包括將程式代碼存放庫設定為專案程式代碼的基底,包括提示流程代碼。 此集中式存放庫可讓小組成員之間有效率的組織、變更追蹤和共同作業。
使用提示流程延伸模組,在 VS Code 中撰寫和單一測試您的流程。
設定存放庫之後,小組成員可以使用 VS Code 搭配提示流程延伸模組進行本機撰寫和流程的單一輸入測試。 標準化集成開發環境可促進多個成員之間的共同作業,這些成員會處理流程的不同層面。
pfazure
使用 CLI 或 SDK 來提交批次執行,並從本機流程執行到雲端的評估執行。在本機開發和測試之後,小組成員可以使用提示流程 CLI/SDK 將批次和評估執行提交和評估至雲端。 此程式可在 Studio UI 中啟用雲端計算使用量、持續性結果記憶體、針對部署建立端點,以及有效率的管理。
在 Azure Machine Learning 工作室 工作區 UI 中檢視和管理執行結果。
將執行提交至雲端之後,小組成員就可以存取 Studio UI,以有效率地檢視結果及管理實驗。 雲端工作區提供集中位置,用於收集和管理執行歷程記錄、記錄、快照集、完整結果,以及實例層級輸入和輸出。
使用 [執行] 列表,記錄所有執行歷程記錄,輕鬆地比較不同執行的結果,協助進行品質分析和必要的調整。
繼續使用本機反覆開發。
在分析實驗結果之後,小組成員可以返回本機環境和程式代碼存放庫,以取得更多開發和微調,並反覆提交後續執行至雲端。 此反覆方法可確保持續增強,直到小組滿意生產質量為止。
在 Studio 中使用單步驟部署至生產環境。
一旦小組完全有信心流程的質量,他們可以順暢地將其部署為強固雲端環境中的在線端點。 部署為在線端點可以以執行快照集為基礎,允許穩定且安全的服務、進一步的資源配置和使用量追蹤,以及雲端中的記錄監視。
Azure Machine Learning 工作室 部署精靈可協助您輕鬆地設定部署。