這個端到端 (E2E) 範例基於微軟技術社區的指南「在 Azure AI Studio 中評估微調的 Phi-3 / 3.5 模型,重點關注微軟的負責任 AI 原則」。
微調模型有時會導致意想不到或不希望的回應。為了確保模型保持安全和有效,評估模型產生有害內容的潛力以及生成準確、相關和連貫回應的能力是很重要的。在本教程中,您將學習如何評估與 Azure AI Studio 中的 Prompt flow 集成的微調 Phi-3 / Phi-3.5 模型的安全性和性能。
以下是 Azure AI Studio 的評估過程。
圖片來源: 生成式 AI 應用的評估
Note
欲了解更多詳細信息和探索有關 Phi-3 / Phi-3.5 的更多資源,請訪問 Phi-3CookBook。
- Python
- Azure 訂閱
- Visual Studio Code
- 微調的 Phi-3 / Phi-3.5 模型
為了確保您的 AI 模型是倫理和安全的,必須根據微軟的負責任 AI 原則進行評估。在 Azure AI Studio 中,安全性評估允許您評估模型對 jailbreak 攻擊的脆弱性及其生成有害內容的潛力,這與這些原則直接相關。
圖片來源: 生成式 AI 應用的評估
在開始技術步驟之前,理解微軟的負責任 AI 原則是至關重要的,這是一個指導 AI 系統負責任開發、部署和運營的倫理框架。這些原則指導 AI 系統的負責任設計、開發和部署,確保 AI 技術以公平、透明和包容的方式構建。這些原則是評估 AI 模型安全性的基礎。
微軟的負責任 AI 原則包括:
-
公平和包容性:AI 系統應該公平對待每個人,避免對類似情況下的群體造成不同影響。例如,當 AI 系統提供醫療建議、貸款申請或就業建議時,應該對具有相似症狀、財務狀況或專業資格的人做出相同的建議。
-
可靠性和安全性:為了建立信任,確保 AI 系統可靠、安全和一致地運行是至關重要的。這些系統應能夠按設計運行,安全應對意外情況,並抵禦有害操縱。它們的行為和能處理的條件範圍反映了開發者在設計和測試過程中預期的各種情況和情景。
-
透明性:當 AI 系統幫助做出對人們生活有重大影響的決定時,人們了解這些決定是如何做出的至關重要。例如,一家銀行可能會使用 AI 系統來決定某人是否有信用資格。一家公司可能會使用 AI 系統來確定最合適的候選人。
-
隱私和安全:隨著 AI 的普及,保護隱私和保障個人及商業信息變得越來越重要和複雜。隨著 AI 的發展,隱私和數據安全需要密切關注,因為數據訪問對於 AI 系統做出準確和有根據的預測和決策至關重要。
-
問責性:設計和部署 AI 系統的人必須對其系統的運行方式負責。組織應依據行業標準制定問責規範。這些規範可以確保 AI 系統不會成為影響人們生活的任何決策的最終權威。它們還可以確保人類對高度自主的 AI 系統保持有意義的控制。
圖片來源: 什麼是負責任 AI?
Note
欲了解更多關於微軟負責任 AI 原則的信息,請訪問 什麼是負責任 AI?。
在本教程中,您將使用 Azure AI Studio 的安全性指標來評估微調的 Phi-3 模型的安全性。這些指標幫助您評估模型產生有害內容的潛力及其對 jailbreak 攻擊的脆弱性。安全性指標包括:
- 自我傷害相關內容:評估模型是否有產生自我傷害相關內容的傾向。
- 仇恨和不公平內容:評估模型是否有產生仇恨或不公平內容的傾向。
- 暴力內容:評估模型是否有產生暴力內容的傾向。
- 性內容:評估模型是否有產生不適當性內容的傾向。
評估這些方面可確保 AI 模型不會產生有害或冒犯性的內容,與社會價值觀和法規標準保持一致。
為了確保您的 AI 模型按預期運行,評估其性能是很重要的。在 Azure AI Studio 中,性能評估允許您評估模型生成準確、相關和連貫回應的有效性。
圖片來源: 生成式 AI 應用的評估
在本教程中,您將使用 Azure AI Studio 的性能指標來評估微調的 Phi-3 / Phi-3.5 模型的性能。這些指標幫助您評估模型生成準確、相關和連貫回應的有效性。性能指標包括:
- 基礎性:評估生成的答案與輸入來源信息的一致性。
- 相關性:評估生成的回應與給定問題的相關性。
- 連貫性:評估生成的文本流暢性、自然性和類似人類語言的程度。
- 流暢性:評估生成文本的語言熟練程度。
- GPT 相似性:將生成的回應與真實答案進行相似性比較。
- F1 分數:計算生成回應與源數據之間的共享詞語比例。
這些指標幫助您評估模型生成準確、相關和連貫回應的有效性。
本教程是之前博客文章「微調和集成自定義 Phi-3 模型與 Prompt Flow:逐步指南」和「在 Azure AI Studio 中微調和集成自定義 Phi-3 模型與 Prompt Flow」的後續教程。在這些文章中,我們介紹了如何在 Azure AI Studio 中微調 Phi-3 / Phi-3.5 模型並將其與 Prompt flow 集成。
在本教程中,您將部署一個 Azure OpenAI 模型作為評估器,並使用它來評估您微調的 Phi-3 / Phi-3.5 模型。
在開始本教程之前,請確保您已經具備以下先決條件,如前述教程中所述:
- 已準備好用於評估微調 Phi-3 / Phi-3.5 模型的數據集。
- 已微調並部署到 Azure 機器學習的 Phi-3 / Phi-3.5 模型。
- 在 Azure AI Studio 中與您微調的 Phi-3 / Phi-3.5 模型集成的 Prompt flow。
Note
您將使用在前述博客文章中下載的 ULTRACHAT_200k 數據集中的 test_data.jsonl 文件作為評估微調 Phi-3 / Phi-3.5 模型的數據集。
Note
如果您遵循了「在 Azure AI Studio 中微調和集成自定義 Phi-3 模型與 Prompt Flow」中描述的低代碼方法,您可以跳過此練習並進行下一個練習。 然而,如果您遵循了「微調和集成自定義 Phi-3 模型與 Prompt Flow:逐步指南」中描述的代碼優先方法來微調和部署您的 Phi-3 / Phi-3.5 模型,將模型連接到 Prompt flow 的過程略有不同。您將在此練習中學習此過程。
要繼續,您需要將您的微調 Phi-3 / Phi-3.5 模型集成到 Azure AI Studio 的 Prompt flow 中。
在創建項目之前,您需要創建一個 Hub。Hub 就像是一個資源組,允許您在 Azure AI Studio 中組織和管理多個項目。
-
登錄 Azure AI Studio。
-
從左側選擇 All hubs。
-
從導航菜單中選擇 + New hub。
-
執行以下任務:
-
選擇 Next。
-
在你建立的 Hub 中,從左側選單選擇 All projects。
-
從導航選單選擇 + New project。
-
輸入 Project name。它必須是唯一的值。
-
選擇 Create a project。
要將你的自訂 Phi-3 / Phi-3.5 模型與 Prompt flow 整合,你需要將模型的端點和密鑰保存在自訂連接中。這樣的設置確保你能在 Prompt flow 中訪問你的自訂 Phi-3 / Phi-3.5 模型。
-
訪問 Azure ML Studio。
-
導航到你建立的 Azure 機器學習工作區。
-
從左側選單選擇 Endpoints。
-
選擇你建立的端點。
-
從導航選單選擇 Consume。
-
複製你的 REST endpoint 和 Primary key。
-
訪問 Azure AI Studio。
-
導航到你建立的 Azure AI Studio 專案。
-
在你建立的專案中,從左側選單選擇 Settings。
-
選擇 + New connection。
-
從導航選單選擇 Custom keys。
-
執行以下任務:
- 選擇 + Add key value pairs。
- 對於密鑰名稱,輸入 endpoint 並將你從 Azure ML Studio 複製的端點貼到值欄中。
- 再次選擇 + Add key value pairs。
- 對於密鑰名稱,輸入 key 並將你從 Azure ML Studio 複製的密鑰貼到值欄中。
- 添加密鑰後,選擇 is secret 以防止密鑰暴露。
-
選擇 Add connection。
你已在 Azure AI Studio 中添加了一個自訂連接。現在,讓我們按照以下步驟建立一個 Prompt flow。然後,你將把這個 Prompt flow 連接到自訂連接,以便在 Prompt flow 中使用微調的模型。
-
導航到你建立的 Azure AI Studio 專案。
-
從左側選單選擇 Prompt flow。
-
從導航選單選擇 + Create。
-
從導航選單選擇 Chat flow。
-
輸入 Folder name。
-
選擇 Create。
你需要將微調的 Phi-3 / Phi-3.5 模型整合到一個 Prompt flow 中。然而,現有的 Prompt flow 並不是為此設計的。因此,你必須重新設計 Prompt flow 以啟用自訂模型的整合。
-
在 Prompt flow 中,執行以下任務以重建現有流程:
-
選擇 Raw file mode。
-
刪除 flow.dag.yml 文件中的所有現有代碼。
-
將以下代碼添加到 flow.dag.yml。
inputs: input_data: type: string default: "Who founded Microsoft?" outputs: answer: type: string reference: ${integrate_with_promptflow.output} nodes: - name: integrate_with_promptflow type: python source: type: code path: integrate_with_promptflow.py inputs: input_data: ${inputs.input_data}
-
選擇 Save。
-
-
將以下代碼添加到 integrate_with_promptflow.py 以在 Prompt flow 中使用自訂 Phi-3 / Phi-3.5 模型。
import logging import requests from promptflow import tool from promptflow.connections import CustomConnection # Logging setup logging.basicConfig( format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=logging.DEBUG ) logger = logging.getLogger(__name__) def query_phi3_model(input_data: str, connection: CustomConnection) -> str: """ Send a request to the Phi-3 / Phi-3.5 model endpoint with the given input data using Custom Connection. """ # "connection" is the name of the Custom Connection, "endpoint", "key" are the keys in the Custom Connection endpoint_url = connection.endpoint api_key = connection.key headers = { "Content-Type": "application/json", "Authorization": f"Bearer {api_key}" } data = { "input_data": [input_data], "params": { "temperature": 0.7, "max_new_tokens": 128, "do_sample": True, "return_full_text": True } } try: response = requests.post(endpoint_url, json=data, headers=headers) response.raise_for_status() # Log the full JSON response logger.debug(f"Full JSON response: {response.json()}") result = response.json()["output"] logger.info("Successfully received response from Azure ML Endpoint.") return result except requests.exceptions.RequestException as e: logger.error(f"Error querying Azure ML Endpoint: {e}") raise @tool def my_python_tool(input_data: str, connection: CustomConnection) -> str: """ Tool function to process input data and query the Phi-3 / Phi-3.5 model. """ return query_phi3_model(input_data, connection)
Note
更多有關在 Azure AI Studio 中使用 Prompt flow 的詳細資訊,可以參考 Prompt flow in Azure AI Studio。
-
選擇 Chat input、Chat output 以啟用與你的模型進行聊天。
-
現在你已準備好與你的自訂 Phi-3 / Phi-3.5 模型聊天。在下一個練習中,你將學習如何啟動 Prompt flow 並使用它與你的微調 Phi-3 / Phi-3.5 模型進行聊天。
-
選擇 Start compute sessions 以啟動 Prompt flow。
-
選擇 Validate and parse input 以更新參數。
-
選擇 connection 的 Value 以連接到你創建的自訂連接。例如,connection。
要在 Azure AI Studio 中評估 Phi-3 / Phi-3.5 模型,你需要部署一個 Azure OpenAI 模型。此模型將用於評估 Phi-3 / Phi-3.5 模型的性能。
-
登錄 Azure AI Studio。
-
導航到你建立的 Azure AI Studio 專案。
-
在你建立的專案中,從左側選單選擇 Deployments。
-
從導航選單選擇 + Deploy model。
-
選擇 Deploy base model。
-
選擇你想使用的 Azure OpenAI 模型。例如,gpt-4o。
-
選擇 Confirm。
-
訪問 Azure AI Studio。
-
導航到你建立的 Azure AI Studio 專案。
-
在你建立的專案中,從左側選單選擇 Evaluation。
-
選擇 Prompt flow 評估。
-
執行以下任務:
- 輸入評估名稱,需為唯一值。
- 選擇 Question and answer without context 作為任務類型,因為本教程使用的 UlTRACHAT_200k 數據集不包含上下文。
- 選擇你想評估的 prompt flow。
-
選擇 Next。
-
執行以下任務:
- 選擇 Add your dataset 上傳數據集。例如,你可以上傳測試數據集文件,如 test_data.json1,這是你下載 ULTRACHAT_200k 數據集時包含的文件。
- 選擇適當的 Dataset column 以匹配你的數據集。例如,如果你使用 ULTRACHAT_200k 數據集,選擇 ${data.prompt} 作為數據集列。
-
選擇 Next。
-
執行以下任務以配置性能和質量指標:
- 選擇你想使用的性能和質量指標。
- 選擇你為評估創建的 Azure OpenAI 模型。例如,選擇 gpt-4o。
-
執行以下任務以配置風險和安全指標:
- 選擇你想使用的風險和安全指標。
- 選擇計算缺陷率的閾值。例如,選擇 Medium。
- 對於 question,選擇 Data source 為 {$data.prompt}。
- 對於 answer,選擇 Data source 為 {$run.outputs.answer}。
- 對於 ground_truth,選擇 Data source 為 {$data.message}。
-
選擇 Next。
-
選擇 Submit 開始評估。
-
評估需要一些時間才能完成。你可以在 Evaluation 標籤中監控進度。
Note
以下結果旨在說明評估過程。在本教程中,我們使用了一個在相對較小的數據集上微調的模型,這可能會導致結果不太理想。實際結果可能會因使用的數據集的大小、質量和多樣性以及模型的具體配置而有很大不同。
一旦評估完成,你可以查看性能和安全指標的結果。
-
性能和質量指標:
- 評估模型在生成連貫、流暢和相關回應方面的有效性。
-
風險和安全指標:
- 確保模型的輸出是安全的,並符合負責任 AI 原則,避免任何有害或冒犯的內容。
-
你可以向下滾動查看 Detailed metrics result。
-
通過對你的自定義 Phi-3 / Phi-3.5 模型進行性能和安全指標的評估,你可以確認模型不僅有效,而且遵循負責任 AI 的實踐,為實際部署做好準備。
你已成功評估了在 Azure AI Studio 中集成 Prompt flow 的微調 Phi-3 模型。這是確保你的 AI 模型不僅表現良好,還遵循 Microsoft 負責任 AI 原則的重要步驟,幫助你構建可信賴和可靠的 AI 應用程序。
清理你的 Azure 資源以避免額外費用。前往 Azure 入口網站並刪除以下資源:
- Azure 機器學習資源。
- Azure 機器學習模型端點。
- Azure AI Studio 項目資源。
- Azure AI Studio Prompt flow 資源。
免責聲明:
本文件是使用機器翻譯服務進行翻譯的。儘管我們力求準確,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們不對因使用此翻譯而產生的任何誤解或誤釋承擔責任。