This template can be used for both Azure AI Studio and Azure Machine Learning.
It can be used for both AZURE and LOCAL execution.
It supports all types of flow - python Class flows, Function flows and YAML flows.
It supports Github, Azure DevOps and Jenkins CI/CD orchestration.
It supports pure python based Evaluation as well using promptflow-evals package.
It should be used for INNER-LOOP Experimentation and Evaluation.
It should be used for OUTER-LOOP Deployment and Inferencing.
NOTE: A new FAQ section is added to help Engineers, Data Scientist and developers find answers to general questions on configuring and using this template.
常見問題在這裡
大型語言模型操作(LLMOps)已成為高效提示工程和 LLM 誘導的應用程式開發和部署的基石。隨著對 LLM 引發的申請的需求持續飆升,組織發現自己需要一個有凝聚力且簡化的流程來管理其端到端生命週期。
人工智慧和大型語言模型 (LLM) 的興起已經改變了各個行業,使得具有類人文本理解和生成能力的創新應用程式的開發成為可能。這場革命為客戶服務、內容創建和數據分析等領域開闢了新的可能性。
隨著法學碩士的迅速發展,即時工程的重要性變得越來越明顯。提示工程透過創建適合特定業務場景的有效提示,在充分發揮法學碩士潛力方面發揮著至關重要的作用。這個過程使開發人員能夠創建量身定制的人工智慧解決方案,使人工智慧對更廣泛的受眾來說更容易訪問和有用。
它是 Prompt Flow 的實驗和評估框架。它只是不是用於 Prompt Flow 的 CI/CD 管道,儘管它支援它。它具有豐富的功能集,用於 Prompt Flow 的實驗、評估、部署和監控。它是 Prompt Flow 營運的完整端到端解決方案。
此範本支援 Azure AI Studio 和 Azure 機器學習。根據配置,此範本可用於 Azure AI Studio 和 Azure 機器學習。它為跨服務的 Prompt Flow 實驗、評估和部署提供無縫遷移體驗。
此範本支援不同類型的流程,可讓您根據您的特定要求定義和執行工作流程。支援的兩種主要流程類型是:
靈活的流程
有向無環圖 (DAG) 流
該專案的強大功能之一是它能夠自動檢測流類型並相應地執行流。這使您可以嘗試不同的流量類型並選擇最適合您需求的流量類型。
此範本支援:
管理基於大型語言的流程(從本地實驗到生產部署)遠非簡單,也不是一刀切的任務。
每個流程都有其獨特的生命週期,從最初的實驗到部署,每個階段都有自己的挑戰。
組織經常同時處理多個流程,每個流程都有其目標、要求和複雜性。如果沒有適當的管理工具,這很快就會變得難以承受。
它涉及處理多個流、其獨特的生命週期、各種配置的實驗以及確保順利部署。
這就是LLMOps with Prompt flow的用武之地。它提供以下功能:
集中程式碼託管:此儲存庫支援基於提示流託管多個流的程式碼,為所有串流提供單一儲存庫。將此平台視為所有提示流程程式碼所在的單一儲存庫。它就像一個流程庫,可以輕鬆找到、存取和協作不同的專案。
生命週期管理:每個流程都有自己的生命週期,可以從本地實驗順利過渡到生產部署。
變體和超參數實驗:使用多個變體和超參數進行實驗,輕鬆評估流變體。變體和超參數就像食譜中的成分。該平台允許您在流程中的多個節點上嘗試不同的變體組合。
A/B 部署:無縫實施 A/B 部署,讓您輕鬆比較不同的流程版本。正如傳統的網站 A/B 測試一樣,該平台有助於快速流程的 A/B 部署。這意味著您可以輕鬆地在現實環境中比較流程的不同版本,以確定哪個版本表現最佳。
多對多資料集/流程關係:為每個標準和評估流程容納多個資料集,確保流程測試和評估的多功能性。該平台旨在為每個流程容納多個資料集。
多個部署目標:儲存庫支援透過設定將流部署到 Kubernetes 和 Azure 託管運算,確保您的流可以根據需要進行擴充。
綜合報告:為每個變體配置產生詳細報告,使您能夠做出明智的決策。為所有變體批量運行和實驗提供詳細的指標收集,從而在 csv 和 HTML 文件中實現數據驅動的決策。
提供 BYOF(自備流程)。用於開發與法學碩士應用程式相關的多個用例的完整平台。
提供基於配置的開發。無需編寫大量的樣板程式碼。
提供在本地端以及雲端執行即時實驗和評估的能力。
提供用於本地評估提示的筆記本。提供用於本地實驗的函數庫。
部署後在管道內進行端點測試,以檢查其可用性和準備。
提供可選的人機互動以在部署前驗證提示指標。
具有提示流程的 LLMOps 為簡單和複雜的 LLM 注入應用程式提供了功能。它完全可以根據應用程式的需求進行客製化。
每個用例(提示流程標準和評估流程集)應遵循如下所示的資料夾結構:
此外,還有一個用於配置用例的experiment.yaml
檔案(有關更多詳細信息,請參閱文件描述和規格)。還有一個 Sample-request.json 文件,其中包含用於在部署後測試端點的測試資料。
「.azure-pipelines」資料夾包含該平台的常見 Azure DevOps 管道,對它們的任何變更都將影響所有流程的執行。
“.github”資料夾包含該平台的 Github 工作流程以及用例。這與 Azure DevOps 略有不同,因為所有 Github 工作流程都應在這個資料夾中執行。
“.jenkins”資料夾包含平台的 Jenkins 聲明性管道以及使用案例和單一作業。
「docs」資料夾包含 Azure DevOps、Github 工作流程和 Jenkins 相關設定的逐步指南文件。
「llmops」資料夾包含與流程執行、評估和部署相關的所有程式碼。
“dataops”資料夾包含與資料管道部署相關的所有程式碼。
“local_execution”資料夾包含用於在本機執行標準流程和評估流程的 python 腳本。
該項目包括 6 個範例,展示不同的場景:
位置:./web_classification 重要性:示範具有多個變體的網站內容摘要,展示範本中可用的彈性和自訂選項。
位置:./named_entity_recognition 重要性:展示從文本中提取命名實體,這對於各種自然語言處理任務和資訊提取很有價值。
位置:./math_coding 重要性:展示執行數學計算和產生程式碼片段的能力,突出模板在處理計算任務方面的多功能性。
位置:./chat_with_pdf 重要性:示範用於與 PDF 文件互動的對話介面,利用檢索增強生成 (RAG) 的功能提供準確且相關的回應。
位置:./function_flows 重要性:示範根據使用者提示產生程式碼片段,展示自動化程式碼產生任務的潛力。
位置:./class_flows 重要性:展示使用基於類別的流建立的聊天應用程序,說明更複雜的對話介面的結構和組織。
此儲存庫有助於部署至Kubernetes、Kubernetes ARC、Azure Web Apps 和 AzureML 託管運算以及 AzureML 託管運算的A/B 部署。
管道執行由多個階段和每個階段中的作業組成:
此儲存庫產生多個報告(顯示實驗運行和指標範例):
若要利用本機執行的功能,請依照下列安裝步驟操作:
git clone https://github.com/microsoft/llmops-promptflow-template.git
aoai
的 AzureOpenAI 連線。新增一行aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
其中包含api_key 和api_base 的更新值。如果您的流中使用了具有不同名稱的其他連接,則應相應地添加它們。目前,使用 AzureOpenAI 作為支援的提供者進行流程。 experiment_name=
connection_name_1={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
connection_name_2={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
根據此處的文件將您的流程引入或寫入範本中。
編寫類似於 local_execution 資料夾中提供的範例的 python 腳本。
DataOps 結合了 DevOps、敏捷方法和資料管理實踐的各個方面,以簡化收集、處理和分析資料的流程。 DataOps 可以幫助規範建立 LLM 應用程式開發所需的資料集(訓練、實驗、評估等)。
資料管道與即時工程流程分開。資料管道建立資料集,並將資料集註冊為 Azure ML 中的資料資產以供流使用。這種方法有助於獨立擴展系統的不同部分並進行故障排除。
有關如何開始使用 DataOps 的詳細信息,請參閱本文檔 - 如何配置 DataOps。
該項目歡迎貢獻和建議。大多數貢獻都要求您同意貢獻者授權協議 (CLA),聲明您有權並且實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問 https://cla.opensource.microsoft.com。
當您提交拉取請求時,CLA 機器人將自動確定您是否需要提供 CLA 並適當地修飾 PR(例如,狀態檢查、評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的 CLA 在所有儲存庫中執行一次此操作。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
該項目可能包含項目、產品或服務的商標或標誌。 Microsoft 商標或標誌的授權使用須遵守且必須遵循 Microsoft 的商標和品牌指南。在此項目的修改版本中使用 Microsoft 商標或標誌不得混淆或暗示 Microsoft 贊助。任何對第三方商標或標誌的使用均須遵守這些第三方的政策。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
版權所有 (c) Microsoft Corporation。版權所有。
根據 MIT 許可證獲得許可。