現已釋出!閱讀關於 11 月新增功能和修復的內容。

微調模型

微調 AI 模型是一項常見實踐,它允許您使用自定義資料集在具有 GPU 的計算環境中對預訓練模型執行 **微調** 作業。AI Toolkit 目前支援在本地 GPU 機器或雲端 GPU (Azure Container App) 上微調 SLM。

微調後的模型可以下載到本地,並使用 GPU 進行推理測試,或者量化後在本地 CPU 上執行。微調後的模型也可以部署到雲環境中作為遠端模型。

使用 VS Code 的 AI Toolkit (預覽版) 在 Azure 上微調 AI 模型

VS Code 的 AI Toolkit 現在支援預配 Azure Container App,用於執行模型微調和託管推理終結點。

設定您的雲環境

  1. 要在遠端 Azure Container Apps 環境中執行模型微調和推理,請確保您的訂閱具有足夠的 GPU 容量。提交 支援票證 以請求您的應用程式所需的容量。 獲取有關 GPU 容量的更多資訊

  2. 如果您使用的是 HuggingFace 上的私有資料集,或者基礎模型需要訪問控制,請確保您擁有一個 HuggingFace 帳戶生成訪問令牌

  3. 如果您正在微調 Mistral 或 Llama,請在 HuggingFace 上接受 LICENSE。

  4. 在 VS Code 的 AI Toolkit 中啟用遠端微調和推理功能標誌

    1. 選擇 檔案 -> 首選項 -> 設定 開啟 VS Code 設定。
    2. 導航到 擴充套件 並選擇 AI Toolkit
    3. 選擇 “啟用以在 Azure Container Apps 上執行微調和推理” 選項。

    AI Toolkit Settings

    1. 重新載入 VS Code 以使更改生效。

腳手架一個微調專案

  1. 在命令面板 (Command Palette) 中執行 AI Toolkit: Focus on Tools View (命令面板: ⇧⌘P (Windows, Linux Ctrl+Shift+P))
  2. 導航到 Fine-tuning 以訪問模型目錄。選擇一個模型進行微調。為您的專案指定一個名稱,並選擇其在計算機上的位置。然後,點選 “配置專案” 按鈕。 面板: 選擇模型
  3. 專案配置
    1. 避免啟用 “本地微調” 選項。
    2. Olive 配置設定將出現,並帶有預設的預設值。請根據需要調整和填寫這些配置。
    3. 繼續 生成專案。此階段利用 WSL 並涉及設定一個新的 Conda 環境,為包含 Dev Containers 的未來更新做準備。 面板: 配置模型
    4. 選擇 “在工作區中重新啟動視窗” 以開啟您的微調專案。 面板: 生成專案
注意

該專案當前可以在 VS Code 的 AI Toolkit 中本地或遠端執行。如果您在專案建立過程中選擇 “本地微調”,它將僅在 WSL 中執行,不使用雲資源。否則,專案將僅限於在遠端 Azure Container App 環境中執行。

預配 Azure 資源

要開始,您需要預配 Azure 資源以進行遠端微調。從命令面板查詢並執行 AI Toolkit: Provision Azure Container Apps job for fine-tuning。在此過程中,系統將提示您選擇 Azure 訂閱和資源組。

Provision Fine-Tuning

透過輸出通道中顯示的連結監視預配進度。 預配進度

執行微調

要啟動遠端微調作業,請在命令面板中執行 AI Toolkit: Run fine-tuning 命令。

Run Fine-tuning

然後,擴充套件程式將執行以下操作

  1. 將您的工作區同步到 Azure Files。

  2. 使用 ./infra/fintuning.config.json 中指定的命令觸發 Azure Container App 作業。

將使用 QLoRA 進行微調,並且微調過程將建立 LoRA 介面卡供模型在推理時使用。

微調的結果將儲存在 Azure Files 中。要探索 Azure 檔案共享中的輸出檔案,您可以訪問 Azure 門戶,使用輸出面板中提供的連結。或者,您可以直接訪問 Azure 門戶,找到名為 STORAGE_ACCOUNT_NAME(在 ./infra/fintuning.config.json 中定義)的儲存帳戶,以及名為 FILE_SHARE_NAME(在 ./infra/fintuning.config.json 中定義)的檔案共享。

file-share

檢視日誌

微調作業啟動後,您可以訪問 Azure 門戶檢視系統和控制檯日誌。 Azure Portal (for logging)

或者,您也可以直接在 VSCode 的輸出面板中檢視控制檯日誌。

log-button

注意

作業可能需要幾分鐘才能啟動。如果已有正在執行的作業,當前作業可能會排隊等待稍後啟動。

在 Azure 上檢視和查詢日誌

觸發微調作業後,您可以透過 VSCode 通知中的“在 Azure 門戶中開啟日誌”按鈕檢視 Azure 上的日誌。

或者,如果您已開啟 Azure 門戶,請在 Azure Container Apps 作業的“執行歷史記錄”面板中查詢作業歷史記錄。

Job Execution History

有兩種型別的日誌:“控制檯”和“系統”。

  • 控制檯日誌是您的應用程式中的訊息,包括 stderrstdout 訊息。這正是您在流式日誌部分已經看到的內容。
  • 系統日誌是 Azure Container Apps 服務中的訊息,包括服務級別事件的狀態。

要檢視和查詢您的日誌,請選擇“控制檯”按鈕,然後導航到 Log Analytics 頁面,您可以在其中檢視所有日誌並編寫查詢。

Job Log Analytics

有關 Azure Container Apps 日誌的更多資訊,請參閱 Azure Container Apps 中的應用程式日誌

在 VSCode 中檢視流式日誌

啟動微調作業後,您還可以透過 VSCode 通知中的“在 VS Code 中顯示流式日誌”按鈕在 Azure 上檢視日誌。

或者,您可以在命令面板中執行 AI Toolkit: Show the running fine-tuning job streaming logs 命令。

Streaming Log Command

正在執行的微調作業的流式日誌將顯示在輸出面板中。

Streaming Log Output

注意

由於資源不足,作業可能會被排隊。如果日誌未顯示,請等待一段時間,然後執行命令重新連線到流式日誌。流式日誌可能會超時斷開連線。但是,可以透過再次執行命令來重新連線。

使用微調後的模型進行推理

在遠端環境中訓練好介面卡後,使用簡單的 Gradio 應用程式與模型進行互動。

Fine-tune complete

預配 Azure 資源

與微調過程類似,您需要透過從命令面板執行 AI Toolkit: Provision Azure Container Apps for inference 來設定遠端推理的 Azure 資源。在此設定過程中,系統會要求您選擇 Azure 訂閱和資源組。

Provision Inference Resource

預設情況下,用於推理的訂閱和資源組應與用於微調的訂閱和資源組匹配。推理將使用相同的 Azure Container App 環境,並訪問在微調過程中生成的 Azure Files 中的模型和模型介面卡。

推理部署

如果您希望修改推理程式碼或重新載入推理模型,請執行 AI Toolkit: Deploy for inference 命令。這將把您最新的程式碼同步到 ACA 並重啟副本。

Deploy for inference

部署成功完成後,模型現在可以透過此終結點進行評估。您可以透過選擇 VSCode 通知中顯示的“轉到推理終結點”按鈕來訪問推理 API。或者,您可以在 ./infra/inference.config.json 和輸出面板中的 ACA_APP_ENDPOINT 下找到 Web API 終結點。

App Endpoint

注意

推理終結點可能需要幾分鐘才能完全執行。

高階用法

微調專案元件

資料夾 內容
infra 包含遠端操作所需的所有配置。
infra/provision/finetuning.parameters.json 包含用於預配微調 Azure 資源的 Bicep 模板的引數。
infra/provision/finetuning.bicep 包含用於預配微調 Azure 資源的模板。
infra/finetuning.config.json AI Toolkit: Provision Azure Container Apps job for fine-tuning 命令生成的配置檔案。它用作其他遠端命令面板的輸入。

為 Azure Container Apps 中的微調配置機密

Azure Container App 機密提供了一種安全的方式來儲存和管理 Azure Container Apps 中的敏感資料,例如 HuggingFace 令牌和 Weights & Biases API 金鑰。使用 AI Toolkit 的命令面板,您可以將機密輸入到已預配的 Azure 容器應用作業中(如儲存在 ./finetuning.config.json 中)。這些機密隨後被設定為所有容器中的**環境變數**。

步驟

  1. 在命令面板中,鍵入並選擇 AI Toolkit: Add Azure Container Apps Job secret for fine-tuning

    Add secret

  2. 提供機密名稱和值

    Input secret name

    Input secret

    例如,如果您使用的是需要 Hugging Face 訪問控制的私有 HuggingFace 資料集或模型,請將您的 HuggingFace 令牌設定為環境變數 HF_TOKEN,以避免在 Hugging Face Hub 上手動登入。

設定好機密後,您現在可以在 Azure Container App 中使用它。該機密將設定為容器應用的環境變數。

配置微調的 Azure 資源預配

本指南將幫助您配置 AI Toolkit: Provision Azure Container Apps job for fine-tuning 命令。

您可以在 ./infra/provision/finetuning.parameters.json 檔案中找到配置引數。以下是詳細資訊

引數 描述
defaultCommands 這是啟動微調作業的預設命令。它可以在 ./infra/finetuning.config.json 中覆蓋。
maximumInstanceCount 此引數設定 GPU 例項的最大容量。
timeout 此設定以秒為單位定義 Azure Container App 微調作業的超時時間。預設值為 10800,相當於 3 小時。如果 Azure Container App 作業達到此超時時間,微調過程將停止。但是,預設情況下會儲存檢查點,允許微調過程從最後一個檢查點恢復,而不是在重新執行時從頭開始。
location 這是預配 Azure 資源的地點。預設值與所選資源組的地點相同。
storageAccountName, fileShareName acaEnvironmentName, acaEnvironmentStorageName, acaJobName, acaLogAnalyticsName 這些引數用於命名要預配的 Azure 資源。您可以輸入一個新的、未使用的資源名稱來建立您自己的自定義命名資源,或者如果您願意,可以輸入一個已存在的 Azure 資源的名稱。

使用現有的 Azure 資源

如果您有需要配置用於微調的現有 Azure 資源,可以在 ./infra/provision/finetuning.parameters.json 檔案中指定它們的名稱,然後從命令面板執行 AI Toolkit: Provision Azure Container Apps job for fine-tuning。這將更新您指定的資源並建立任何缺失的資源。

例如,如果您有一個現有的 Azure 容器環境,您的 ./infra/finetuning.parameters.json 應如下所示

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      ...
      "acaEnvironmentName": {
        "value": "<your-aca-env-name>"
      },
      "acaEnvironmentStorageName": {
        "value": null
      },
      ...
    }
  }

手動預配

如果您希望手動設定 Azure 資源,可以使用 ./infra/provision 資料夾中提供的 bicep 檔案。如果您已經設定並配置了所有 Azure 資源而未使用 AI Toolkit 命令面板,您只需在 finetune.config.json 檔案中輸入資源名稱即可。

例如

{
  "SUBSCRIPTION_ID": "<your-subscription-id>",
  "RESOURCE_GROUP_NAME": "<your-resource-group-name>",
  "STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
  "FILE_SHARE_NAME": "<your-file-share-name>",
  "ACA_JOB_NAME": "<your-aca-job-name>",
  "COMMANDS": [
    "cd /mount",
    "pip install huggingface-hub==0.22.2",
    "huggingface-cli download <your-model-name> --local-dir ./model-cache/<your-model-name> --local-dir-use-symlinks False",
    "pip install -r ./setup/requirements.txt",
    "python3 ./finetuning/invoke_olive.py && find models/ -print | grep adapter/adapter"
  ]
}

模板中包含的推理元件

資料夾 內容
infra 包含遠端操作所需的所有配置。
infra/provision/inference.parameters.json 包含用於預配推理 Azure 資源的 Bicep 模板的引數。
infra/provision/inference.bicep 包含用於預配推理 Azure 資源的模板。
infra/inference.config.json AI Toolkit: Provision Azure Container Apps for inference 命令生成的配置檔案。它用作其他遠端命令面板的輸入。

配置 Azure 資源預配

本指南將幫助您配置 AI Toolkit: Provision Azure Container Apps for inference 命令。

您可以在 ./infra/provision/inference.parameters.json 檔案中找到配置引數。以下是詳細資訊

引數 描述
defaultCommands 這是啟動 Web API 的命令。
maximumInstanceCount 此引數設定 GPU 例項的最大容量。
location 這是預配 Azure 資源的地點。預設值與所選資源組的地點相同。
storageAccountName, fileShareName acaEnvironmentName, acaEnvironmentStorageName, acaAppName, acaLogAnalyticsName 這些引數用於命名要預配的 Azure 資源。預設情況下,它們將與微調資源名稱相同。您可以輸入一個新的、未使用的資源名稱來建立您自己的自定義命名資源,或者如果您願意,可以輸入一個已存在的 Azure 資源的名稱。

使用現有的 Azure 資源

預設情況下,推理預配使用與微調相同的 Azure Container App 環境、儲存帳戶、Azure 檔案共享和 Azure Log Analytics。一個單獨的 Azure Container App 是專門為推理 API 建立的。

如果您在微調過程中自定義了 Azure 資源,或者想為推理使用您自己現有的 Azure 資源,請在 ./infra/inference.parameters.json 檔案中指定它們的名稱。然後,從命令面板執行 AI Toolkit: Provision Azure Container Apps for inference 命令。這將更新任何指定的資源並建立任何缺失的資源。

例如,如果您有一個現有的 Azure 容器環境,您的 ./infra/finetuning.parameters.json 應如下所示

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      ...
      "acaEnvironmentName": {
        "value": "<your-aca-env-name>"
      },
      "acaEnvironmentStorageName": {
        "value": null
      },
      ...
    }
  }

手動預配

如果您希望手動配置 Azure 資源,可以使用 ./infra/provision 資料夾中提供的 bicep 檔案。如果您已經設定並配置了所有 Azure 資源而未使用 AI Toolkit 命令面板,您只需在 inference.config.json 檔案中輸入資源名稱即可。

例如

{
  "SUBSCRIPTION_ID": "<your-subscription-id>",
  "RESOURCE_GROUP_NAME": "<your-resource-group-name>",
  "STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
  "FILE_SHARE_NAME": "<your-file-share-name>",
  "ACA_APP_NAME": "<your-aca-name>",
  "ACA_APP_ENDPOINT": "<your-aca-endpoint>"
}

您學到了什麼

在本文中,您學習瞭如何

  • 設定 VS Code 的 AI Toolkit 以支援 Azure Container Apps 中的微調和推理。
  • 在 VS Code 的 AI Toolkit 中建立一個微調專案。
  • 配置微調工作流,包括資料集選擇和訓練引數。
  • 執行微調工作流,將預訓練模型適配到您的特定資料集。
  • 檢視微調過程的結果,包括指標和日誌。
  • 使用示例 Notebook 進行模型推理和測試。
  • 匯出並與他人共享微調專案。
  • 使用不同的資料集或訓練引數重新評估模型。
  • 處理失敗的作業並調整配置以重新執行。
  • 瞭解支援的模型及其微調要求。
  • 使用 VS Code 的 AI Toolkit 來管理微調專案,包括預配 Azure 資源、執行微調作業以及部署模型進行推理。
© . This site is unofficial and not affiliated with Microsoft.