共用方式為


在 Azure Machine Learning 工作室中管理提示流程計算工作階段

提示流程計算工作階段能提供執行應用程式所需的運算資源,包括具有所有必要相依性套件的 Docker 映像。 這種可靠、可擴展的環境讓提示流能夠有效地執行任務和功能,確保無縫的使用者體驗。

計算工作階段管理的權限和角色

若要指派角色,您需要在資源上具有 ownerMicrosoft.Authorization/roleAssignments/write 權限。

針對計算工作階段的使用者,請在工作區中指派 AzureML Data Scientist 角色。 若要深入了解,請參閱管理對 Azure Machine Learning 工作區的存取

角色指派可能需要幾分鐘的時間才能生效。

在 Studio 中開始計算工作階段

使用 Azure Machine Learning Studio 啟動計算工作階段之前,請確定:

  • 您擁有工作區中的 AzureML Data Scientist 角色。
  • 工作區中的預設資料存放區 (通常是 workspaceblobstore) 是 Blob 類型。
  • 工作目錄 (workspaceworkingdirectory) 存在於工作區中。
  • 如果使用虛擬網路進行提示流程,則您必須了解提示流程中的網路隔離考量。

在流程頁面上開始計算工作階段

每個流程都會繫結至單一運算工作階段。 在流程頁面上啟動運算工作階段。

  • 選取 [開始]。 啟動使用流程資料夾內 flow.dag.yaml 中所定義環境的計算工作階段。 它會在無伺服器計算的虛擬機器 (VM) 大小上執行,前提是您在工作區中有足夠的配額。

    提示流程的螢幕擷取畫面,其中包含在流程頁面上啟動計算工作階段的預設設定。

  • 選取 [使用進階設定開始]。 在進階設定中,您可以:

    • 選取計算類型。 您可以在無伺服器計算和計算執行個體之間選擇。
      • 如果您選擇無伺服器計算,您可以設定下列設定:

        • 自訂計算工作階段使用的 VM 大小。 請選擇 VM 系列 D 和更高效能的系列。 如需詳細資訊,請參閱支援的 VM 系列和大小一節
        • 自訂閒置時間,其會在計算工作階段有一段時間未使用的情況下,會自動刪除該計算工作階段。
        • 設定使用者指派的受控識別。 計算工作階段會使用此身分識別來提取基礎映像、對連線進行驗證,並安裝套件。 請確定使用者指派的受控識別具有足夠的許可權。 如果您未設定此身分,則預設會使用使用者身分。

        提示流程的螢幕擷取畫面,其中包含使用無伺服器計算在流程頁面上啟動計算工作階段的進階設定。

        az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
        

        其中 workspace_update_with_multiple_UAIs.yml 的內容如下:

        identity:
           type: system_assigned, user_assigned
           user_assigned_identities:
            '/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<uai_name>': {}
            '<UAI resource ID 2>': {}
        

        秘訣

        Azure Machine Learning 工作區的使用者指派受控識別上需要下列 Azure RBAC 角色指派,才能存取工作區相關聯資源上的資料。

        資源 權限
        Azure Machine Learning 工作區 參與者
        Azure 儲存體 參與者 (控制平面) + 儲存體 Blob 資料參與者 + 儲存體檔案資料特殊權限參與者 (資料平面,取用檔案共用中的流程草稿和 Blob 中的資料)
        Azure Key Vault (使用存取原則權限模型時) 參與者 + 清除作業以外的任何存取原則權限,這是連結 Azure Key Vault 的 預設模式
        Azure Key Vault (使用 RBAC 權限模型時) 參與者 (控制平面) + Key Vault 系統管理員 (資料平面)
        Azure Container Registry 參與者
        Azure 應用程式深入解析 參與者

        附註

        作業提交者需要使用者指派的受控識別的 assign 權限。 指派 Managed Identity Operator 角色,因為每次建立無伺服器計算工作階段時,使用者指派的受管理識別都會指派給計算。

      • 如果您選擇計算執行個體作為計算類型,則只能設定閒置關機時間。

        • 由於它會在現有的計算執行個體上執行,因此 VM 大小是固定的,無法在工作階段期間變更。

        • 此工作階段所使用的身分識別也會在計算執行個體中定義,其預設會使用使用者身分識別。 深入了解如何將身分識別指派給計算執行個體 (部分機器翻譯)

        • 針對閒置關機時間,其會用來定義計算工作階段的生命週期,如果工作階段在您設定的時間內皆處於閒置狀態,系統就會自動加以刪除。 如果在運算執行處理上啟用閒置關機,則會在運算層級生效。

          提示流程的螢幕擷取畫面,其中包含使用計算執行個體在流程頁面上啟動計算工作階段的進階設定。

        • 深入了解如何建立和管理計算執行個體 (部分機器翻譯)

使用計算工作階段在 CLI/SDK 中提交流程執行

除了使用 Studio 之外,請在提交流程執行時在 CLI 或 SDK 中指定運算工作階段。

在資源區段下指定實例類型或計算執行個體名稱。 如果未指定執行個體類型或計算執行個體名稱,Azure Machine Learning 會根據配額、成本、效能和磁碟大小等因素來選擇執行個體類型 (VM 大小)。 深入了解無伺服器計算

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

# specify identity used by serverless compute.
# default value
# identity:
#   type: user_identity 

# use workspace first UAI
# identity:
#   type: managed
  
# use specified client_id's UAI
# identity:
#   type: managed
#   client_id: xxx

column_mapping:
  url: ${data.url}

# define cloud resource

resources:
  instance_type: <instance_type> # serverless compute type
  # compute: <compute_instance_name> # use compute instance as compute type

透過 CLI 提交此執行:

pfazure run create --file run.yml

附註

如果您使用 CLI/SDK 提交流程執行,則閒置關機為一小時。 您可以移至計算頁面以釋放計算。

流程資料夾外部的參考檔案

有時,您可能想要引用 flow 資料夾之外的 requirements.txt 檔案。 例如,您可能有包含多個流程的複雜專案,而且它們共用相同的 requirements.txt 檔案。 若要這麼做,請將additional_includes欄位新增至flow.dag.yaml。 此欄位的值是流程資料夾的相對檔案/資料夾路徑清單。 例如,如果 requirements.txt 位於流程資料夾的父資料夾中,您可以將 ../requirements.txt 新增至 additional_includes 欄位。

inputs:
  question:
    type: string
outputs:
  output:
    type: string
    reference: ${answer_the_question_with_context.output}
environment:
  python_requirements_txt: requirements.txt
additional_includes:
  - ../requirements.txt
...

檔案 requirements.txt 會複製到流程資料夾,並用來啟動計算工作階段。

在 Studio 流程頁面上更新計算工作階段

在流程頁面上,使用下列選項來管理計算工作階段:

  • 變更計算工作階段設定:變更無伺服器計算的 VM 大小或使用者指派的受控識別等設定。 如果您正在使用某個計算實例,請切換至另一個實例。
  • 如果您變更 VM 大小,運算工作階段會使用新的 VM 大小重設。
  • 從 requirements.txt安裝套件 :在提示流程UI中開啟 requirements.txt 並新增套件。
  • 檢視已安裝的套件:顯示計算工作階段中安裝的套件,包括基礎映像中和在流程資料夾中檔案中 requirements.txt 指定的套件。
  • 重設計算工作階段 會刪除目前的計算工作階段,並建立具有相同環境的新工作階段。 如果您遇到套件衝突問題,可以嘗試此選項。
  • [停止計算工作階段] 會刪除目前的計算工作階段。 如果底層計算上沒有作用中的計算工作階段,也會刪除無伺服器計算資源。

流程頁面上計算工作階段動作的螢幕擷取畫面。

您也可以在流程資料夾中的 requirements.txt 檔案中新增套件,以自訂用來執行此流程的環境。 在此檔案中新增更多套件之後,您可以選擇下列其中一個選項:

  • [儲存並安裝] 會在流程資料夾中觸發 pip install -r requirements.txt。 程序可能需要幾分鐘的時間,視您安裝的套件而定。
  • [僅儲存] 只會儲存 requirements.txt 檔案。 您稍後可以自行安裝套件。

用於在流程頁面上儲存和安裝計算工作階段的套件選項的螢幕擷取畫面。

附註

您可以變更 requirements.txt 的位置,甚至是檔名,但務必同時在流程資料夾中的 flow.dag.yaml 檔案中進行變更。

由於請勿在 requirements.txt 中釘選 promptflowpromptflow-tools 的版本,因此我們已將其列入工作階段基礎映像中。

requirements.txt 不支援本機 Wheel 檔案。 在您的映像中加以建置,並在 flow.dag.yaml 中更新自訂基礎映像。 深入了解如何建置自訂基礎映像

在 Azure DevOps 的私人摘要中新增套件

如果您想要在 Azure DevOps 中使用私人摘要,請遵循下列步驟:

  1. 為工作區或計算實例分配受控身分識別。

    1. 如果您使用無伺服器計算作為計算工作階段,請將使用者指派的受控識別指派給工作區。

      1. 建立使用者指派的受控識別,並將它新增至 Azure DevOps 組織。 若要深入了解,請參閱使用服務主體和受控識別

        附註

        如果看不到 [新增使用者] 按鈕,您可能沒有執行此動作的必要權限。

      2. 將使用者指派的身分識別新增或更新至工作區

        附註

        請確定使用者指派的受控識別在已連結至工作區的金鑰保存庫上具有 Microsoft.KeyVault/vaults/read

    2. 如果您使用計算執行個體作為計算工作階段,請將 使用者指派的受控識別指派給計算執行個體

  2. {private} 新增至您的私人摘要 URL。 例如,如果您想要在 Azure DevOps 中從 test_feed 安裝 test_package ,請在 requirements.txt 中新增 -i https://{private}@{test_feed_url_in_azure_devops}

    -i https://{private}@{test_feed_url_in_azure_devops}
    test_package
    
  3. 在計算工作階段設定中指定使用使用者指派的受控識別。

    1. 如果您使用無伺服器計算,在計算工作階段未執行的情況下,請在 [使用進階設定開始] 中指定使用者指派的受控識別;在計算工作階段正在執行的情況下,請使用 [變更計算工作階段設定] 按鈕。

      顯示使用工作區使用者指派的受控識別的切換的螢幕擷取畫面。

    2. 如果您使用計算執行個體,其會使用您指派給計算執行個體的使用者指派的受控識別。

附註

此方法主要著重於流程開發階段的快速測試,如果您也想要將此流程部署為端點,請在映像中建置此私人摘要,並在 flow.dag.yaml 中更新自訂基礎映像。 深入了解如何建置自訂基礎映像 (部分機器翻譯)

變更計算工作階段的基礎映像

根據預設,我們會使用最新的提示流程基礎映像。 如果您要使用不同的基礎映像,您可以建置自訂映像

  • 在 Studio 中,您可以在計算工作階段設定下,變更基礎映像設定中的基礎映像。

變更流程頁面上計算工作階段基礎映像的螢幕擷取畫面。

  • 您也可以在流程資料夾中 flow.dag.yaml 檔案的 environment 下指定新的基礎映像。

    在流程頁面上自訂計算工作階段基礎映像之動作的螢幕擷取畫面。

    environment:
        image: <your-custom-image>
        python_requirements_txt: requirements.txt
    

若要使用新的基礎映像,您必須重設計算工作階段。 此程序需要幾分鐘的時間,因為它會提取新的基礎映像並重新安裝套件。

管理運算工作階段所使用的無伺服器執行個體

使用無伺服器運算作為運算工作階段來管理無伺服器執行個體。 在計算頁面上的 [計算工作階段清單] 索引標籤中檢視無伺服器執行個體。

無伺服器執行個體清單的螢幕擷取畫面。

在 [作用中流程和執行] 索引標籤底下存取計算上的流程和執行。刪除執行個體會影響其上方的流程和執行。

無伺服器執行個體的運算詳細資料頁面螢幕擷取畫面。

計算工作階段、計算資源、流程和使用者之間的關聯性

  • 單一使用者可以有多個運算資源(無伺服器架構或運算個體)。 例如,使用者可能具有不同 VM 大小或使用者指派的受控識別的計算資源。
  • 運算資源只能由單一使用者使用。 它充當該用戶的一個私人開發環境。 多個使用者無法共用相同的計算資源。
  • 計算資源可以承載多個計算工作階段。 計算會話是在基礎計算資源上運行的容器。 例如,提示流程撰寫不需要許多計算資源,因此單一計算資源可以為相同的使用者裝載多個計算工作階段。
  • 一個計算工作階段一次只屬於一個計算資源。 您可以刪除或停止計算工作階段,並將它重新配置至另一個計算資源。
  • 流程只能有一個計算工作階段。 每個流程都是獨立的,並在計算工作階段的流程資料夾中定義基本映像和必要的 Python 套件。

將執行階段切換至計算工作階段

運算工作階段相較於運算個體執行階段,提供以下優勢:

  • 自動管理會話和基礎運算的生命週期。 您不再需要手動建立或管理它們。
  • 要輕鬆自訂套件,應將套件新增至 requirements.txt 流程資料夾中的檔案,而非建立自訂環境。

使用下列步驟,將運算實例執行時間切換至運算會話:

  • 在流程資料夾中準備 requirements.txt 檔案。 由於請勿在 requirements.txt 中釘選 promptflowpromptflow-tools 的版本,因此我們已將其列入基礎映像中。 計算會話啟動時,會在requirements.txt檔案中安裝套件。
  • 如果您為運算實例的執行時間建立自訂環境,請從環境詳細資料頁面取得映像,並在流程資料夾的 flow.dag.yaml 檔案中指定該映像。 若要深入了解,請參閱變更計算工作階段的基礎映像。 請確定您或工作區上相關的使用者指派受控識別具有映像的 acr pull 權限。

螢幕擷取畫面顯示如何在環境詳細資料頁面中尋找影像。

  • 對於計算資源,請繼續使用現有的計算執行個體來手動管理生命週期,或嘗試由系統管理的無伺服器運算。

後續步驟