Azure Machine Learning 的運作方式:結構和概念 (第 1 版)
適用於:Azure CLI ml 延伸模組 v1Python SDK azureml v1
本文適用於第一版 (第 1 版) Azure Machine Learning CLI 和 SDK。 如需第二版 (第 2 版),請參閱 Azure Machine Learning 如何運作 (第 2 版)。
了解 Azure Machine Learning 的架構和概念。 本文可讓您概略了解各個元件,以及這些元件如何一起運作,以協助建置、部署和維護機器學習模型的程序。
工作區
機器學習工作區是 Azure Machine Learning 的最上層資源。
工作區可讓您集中執行下列作業:
工作區包含工作區所使用的其他 Azure 資源:
- Azure Container Registry (ACR):註冊您在定型期間及部署模型時使用的 Docker 容器。 為了將成本降至最低,所以只會在建立部署映像時建立 ACR。
- Azure 儲存體帳戶:用來作為工作區的預設資料存放區。 此處亦會儲存與 Azure Machine Learning 計算執行個體搭配使用的 Jupyter 筆記本。
- Azure Application Insights:儲存與模型有關的監視資訊。
- Azure Key Vault:儲存計算目標所用的密碼,以及工作區所需的其他敏感性資訊。
您可以與其他人共用工作區。
計算
計算目標是用來執行定型指令碼或裝載服務部署的任何機器或一組機器。 您可以使用本機電腦或遠端計算資源來作為計算目標。 透過計算目標,您可以開始在本機電腦上進行定型,然後擴增到雲端,而不需要變更定型指令碼。
Azure Machine Learning 引進了兩個完全受控的雲端式虛擬機器 (VM),並已針對機器學習工作完成設定:
計算執行個體:計算執行個體是已針對機器學習安裝了多個工具和環境的 VM。 計算執行個體的主要用途是供您的開發工作站使用。 您不需要進行設定就可以開始執行範例筆記本。 計算執行個體也可用來作為定型作業和推斷作業的計算目標。
計算叢集:計算叢集是具有多節點縮放功能的 VM 叢集。 計算叢集更適用於大型作業和生產環境的計算目標。 叢集會在有作業提交時自動擴大。 請作為定型計算目標或用於開發/測試部署。
如需定型計算目標的詳細資訊,請參閱定型計算目標。 如需部署計算目標的詳細資訊,請參閱部署目標。
資料集和資料存放區
Azure Machine Learning 資料集可讓您更輕鬆地存取和使用資料。 藉由建立資料集,您可以建立資料來源位置的參考,以及其中繼資料的複本。 因為資料會留在現有位置,所以不會產生額外的儲存成本,也不會對資料來源的完整性造成危害。
如需詳細資訊,請參閱建立及註冊 Azure Machine Learning 資料集。 如需更多使用資料集的範例,請參閱範例筆記本。
資料集會使用資料存放區安全地連線到 Azure 儲存體服務。 資料存放區會存放連線資訊,而不會危害您的驗證認證與原始資料來源的完整性。 資料存放區會存放連線資訊,就像與工作區相關聯的 Key Vault 中的訂用帳戶識別碼和權杖授權一樣,因此您可以安全地存取儲存體,而無須在指令碼中對其進行硬式編碼。
環境
工作區>環境
環境是機器學習模型執行定型或評分時所在環境的封裝。 此環境會指定關於定型和評分指令碼的 Python 封裝、環境變數和軟體設定。
如需程式碼範例,請參閱如何使用環境的<管理環境>一節。
實驗
工作區>環境
實驗是從指定之指令碼的許多回合組成的群組。 它一律屬於某個工作區。 當您提交回合時,必須提供一個實驗名稱。 回合的資訊會儲存在該實驗底下。 當您提交實驗時,如果該名稱不存在,系統便會自動建立新實驗。
如需使用實驗的範例,請參閱教學課程:將第一個模型定型。
執行
執行是一次定型指令碼的執行。 實驗一般會包含多個執行。
Azure Machine Learning 會記錄所有執行,並在實驗中儲存下列資訊:
- 與回合有關的中繼資料 (時間戳記、持續時間等等)
- 由您的指令碼記錄的計量
- 由實驗自動收集,或由您明確上傳的輸出檔案
- 包含您指令碼之目錄的快照 (執行之前)
當您提交指令碼以將模型定型時,就會產生回合。 回合可以有 0 或多個子回合。 例如,最上層回合可能有兩個子回合,其中每個可能都有自己的子回合。
回合組態
執行設定會定義指令碼在指定的計算目標中應有的執行方式。 您可以使用此設定來指定要在其上執行的指令碼、計算目標和 Azure Machine Learning 環境;任何分散式作業專屬設定;以及一些其他屬性。 如需適用於執行的一組完整可設定選項的詳細資訊,請參閱 ScriptRunConfig。
執行設定可保存在定型指令碼所在目錄內的檔案中。 或者,您也可以將其建構為記憶體內部物件,並用它來提交執行。
如需執行設定範例,請參閱設定定型執行。
快照集
提交回合時,Azure Machine Learning 會將包含指令碼的目錄壓縮成 zip 檔案,然後傳送至計算目標。 接著會將 zip 檔案解壓縮並在該處執行指令碼。 Azure Machine Learning 也會將 zip 檔案以快照方式儲存在回合記錄中。 任何擁有工作區存取權的人都能瀏覽回合記錄並下載快照集。
記錄
Azure Machine Learning 會自動為您記錄標準執行計量。 不過,您也可以使用 Python SDK 來記錄任意計量。
有多種方式可以檢視您的記錄:即時監視執行狀態,或在完成時檢視結果。 如需詳細資訊,請參閱監視和檢視 ML 執行記錄。
注意
若要避免在快照中包含不必要的檔案,請在目錄中建立忽略檔案 (.gitignore
或 .amlignore
)。 將要排除的檔案和目錄新增到這個檔案中。 如需此檔案中可用語法的詳細資訊,請參閱 .gitignore
的語法和模式。 .amlignore
檔案會使用相同的語法。 如果兩個檔案都存在,則會使用 .amlignore
檔案,不會使用 .gitignore
檔案。
Git 追蹤與整合
當您啟動來源目錄是本機 Git 存放庫的定型回合時,該存放庫的相關資訊會儲存在回合歷程記錄中。 這適用於使用指令碼執行設定或 ML 管線所提交的執行。 其也適用於從 SDK 或 Machine Learning CLI 提交的執行。
如需詳細資訊,請參閱 Azure Machine Learning 的 Git 整合。
定型工作流程
當您執行實驗來為模型定型時,會發生以下步驟。 下面的定型工作流程圖會說明這些步驟:
會使用上一節中所儲存之程式碼快照集的快照集識別碼來呼叫 Azure Machine Learning。
Azure Machine Learning 會建立執行識別碼 (選擇性) 和 Machine Learning 服務權杖,稍後會由計算目標 (例如 Machine Learning Compute/VM) 用來與 Machine Learning 服務進行通訊。
您可以選擇受控計算目標 (例如 Machine Learning Compute) 或非受控計算目標 (例如 VM) 來執行定型作業。 以下是這兩種案例的資料流程:
- VM/HDInsight,由 Microsoft 訂用帳戶的金鑰保存庫中的 SSH 認證存取。 Azure Machine Learning 會在計算目標上執行管理程式碼,其:
- 準備環境。 (Docker 是 VM 和本機電腦的選項。請參閱 Machine Learning Compute 的下列步驟,以了解在 Docker 容器上執行實驗的運作方式。)
- 下載程式碼。
- 設定環境變數和組態。
- 執行使用者指令碼 (上一節中提到的程式碼快照集)。
- Machine Learning Compute,透過工作區受控識別來存取。 因為 Machine Learning Compute 是受控計算目標 (也就是由 Microsoft 管理),所以其會在您的 Microsoft 訂用帳戶下執行。
- 如有需要,會啟動遠端 Docker 建構。
- 管理程式碼會寫入使用者的 Azure 檔案儲存體共用。
- 使用初始命令啟動容器。 也就是上一個步驟中所述的管理程式碼。
執行完成之後,就可以查詢執行和計量。 在下面的流程圖中,當訓練計算目標將執行計量從 Azure Cosmos DB 資料庫中的儲存體寫回 Azure Machine Learning 時,就會發生此步驟。 用戶端可以呼叫 Azure Machine Learning。 Machine Learning 接著會從 Azure Cosmos DB 資料庫中提取計量,並將其傳回用戶端。
模型
簡單來說,模型是可接受輸入並產生輸出的一段程式碼。 機器學習服務模型的建立作業涵蓋選取演算法、提供資料給演算法,以及調整超參數。 定型是一種反覆進行的程序,可產生定型的模型,其中會封裝模型在定型程序期間學到項目。
您可以帶來在 Azure Machine Learning 外部定型的模型。 或者,您也可以將實驗的執行提交至 Azure Machine Learning 中的計算目標,來為模型定型。 有了模型之後,就可以在工作區中註冊模型。
Azure Machine Learning 與架構無關。 在建立模型時,您可以使用任何受歡迎的機器學習架構,例如 Scikit-learn、XGBoost、PyTorch、TensorFlow 和 Chainer。
如需使用 Scikit-learn 來為模型定型的範例,請參閱教學課程:使用 Azure Machine Learning 來為影像分類模型定型。
模型登錄
工作區>模型
模型登錄可記錄您 Azure Machine Learning 工作區中的所有模型。
模型是透過名稱與版本來識別的。 每次註冊與現有模型名稱相同的模型時,登錄都會假設它是一個新版本。 版本會累加,新模型則會以相同的名稱來註冊。
註冊模型時,您可以提供額外的中繼資料標記,然後在搜尋模型時使用這些標記。
提示
已註冊的模型是組成模型的一或多個檔案所在的邏輯容器。 例如,如果您的模型儲存在多個檔案中,您可以將其註冊為 Azure Machine Learning 工作區中的單一模型。 註冊之後,您就可以下載或部署已註冊的模型,並接收所有已註冊的檔案。
您無法刪除作用中部署正在使用的已註冊模型。
如需模型註冊的範例,請參閱使用 Azure Machine Learning 將映像分類模型定型。
部署
您要將已註冊的模型部署為服務端點。 您需要下列元件:
- 環境。 此環境會封裝要執行模型以進行推斷所需的相依性。
- 評分程式碼。 此指令碼會接受要求,使用模型對要求進行評分,並傳回結果。
- 推斷設定。 推斷設定會指定要將模型當作服務來執行所需的環境、輸入腳本和其他元件。
如需這些元件的詳細資訊,請參閱使用 Azure Machine Learning 部署模型。
端點
工作區>端點
端點可將模型具現化為可裝載到雲端的 Web 服務。
Web 服務端點
將模型部署為 Web 服務時,可以在 Azure 容器執行個體或 Azure Kubernetes Service 上部署端點。 您可以從模型、指令碼和相關聯的檔案建立服務。 這些項目會放入基底容器映像,其內含模型的執行環境。 映像包含經過負載平衡的 HTTP 端點,可接收傳送至 Web 服務的評分要求。
您可以啟用 Application Insights 遙測或模型遙測,以監視您的 Web 服務。 只有您能夠存取遙測資料。 遙測資料會存放在您的 Application Insights 和儲存體帳戶執行個體。 如果已經啟用自動調整功能,Azure 將會自動調整您的部署。
下圖顯示已部署為 Web 服務端點的模型所具有的推斷工作流程:
詳細資料如下:
- 使用者會使用 Azure Machine Learning SDK 之類的用戶端來註冊模型。
- 使用者會使用模型、分數檔案和其他模型相依性來建立映像。
- Docker 映像會建立並儲存在 Azure Container Registry 中。
- Web 服務會使用在上一個步驟中建立的映像,部署到計算目標 (容器執行個體/AKS)。
- 評分要求詳細資料會儲存在使用者訂用帳戶中的 Application Insights,。
- 遙測也會推送至 Microsoft Azure 訂用帳戶。
如需將模型部署為 Web 服務的範例,請參閱教學課程:定型和部署模型。
即時端點
當您在設計工具中部署已定型的模型時,您可以將模型部署為即時端點。 即時端點通常會透過 REST 端點接收單一要求,並即時傳回預測。 這與批次處理不同,批次處理會一次處理多個值,並在完成後將結果儲存至資料存放區。
管線端點
管線端點可讓您透過 REST 端點以程式設計方式呼叫 ML 管線。 管線端點可讓您將管線工作流程自動化。
管線端點集合了已發佈的管線。 此邏輯組織可讓您使用相同的端點來管理和呼叫多個管線。 管線端點中的每個已發佈管線都已設定版本。 您可以選取端點的預設管線,也可以在 REST 呼叫中指定版本。
自動化
Azure Machine Learning CLI
Azure Machine Learning CLI 是 Azure CLI v1 的擴充功能,而 Azure CLI 是 Azure 平台的跨平台命令列介面。 此擴充功能會提供命令讓您將機器學習活動自動化。
ML 管線
您可以使用機器學習管線來建立和管理結合多個機器學習階段的工作流程。 例如,管線可能包含資料準備、模型訓練、模型部署和推斷/評分階段。 每個階段都可以包含多個步驟,這些步驟各自都可以在各種計算目標中自動執行。
管線步驟可重複使用,如果前面步驟的輸出未變更,則可以在不重新執行前面步驟的情況下執行管線步驟。 例如,如果資料未變更,便可以在不必重新執行昂貴的資料準備步驟情況下將模型重新定型。 管線也可以讓資料科學家在分頭處理不同機器學習工作流程區域時共同作業。
監視與記錄
Azure Machine Learning 提供下列監視和記錄功能:
- 若為資料科學家,您可以監視實驗,並記錄來自定型執行的資訊。 如需詳細資訊,請參閱下列文章:
- 若為管理員,您可以使用 Azure 監視器來監視工作區、相關 Azure 資源和事件的相關資訊,例如資源的建立和刪除。 如需詳細資訊,請參閱如何監視 Azure Machine Learning。
- 若為 DevOps 或 MLOps,您可以監視部署為 Web 服務的模型所產生的資訊,以找出部署的問題,並收集提交給服務的資料。 如需詳細資訊,請參閱收集模型資料和使用 Application Insights 進行監視。
與工作區互動
Studio
Azure Machine Learning 工作室會提供您工作區中所有成品的 Web 檢視。 您可以檢視資料集、實驗、管線、模型和端點的結果與詳細資料。 您也可以在工作室中管理計算資源和資料存放區。
工作室也可讓您存取屬於 Azure Machine Learning 一部分的互動式工具:
- Azure Machine Learning 設計工具,用以執行工作流程步驟,而不需要撰寫程式碼
- 自動化機器學習的 Web 體驗
- Azure Machine Learning 筆記本,用以在整合式 Jupyter 筆記本伺服器中撰寫和執行您自己的程式碼。
- 資料標記專案,用以建立、管理及監視專案,以便標記影像或文字。
程式設計工具
重要
以下標示的工具 (預覽版) 目前處於公開預覽狀態。 此預覽版本會在沒有服務等級協定的情況下提供,不建議用於實際執行工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
- 使用適用於 Python 的 Azure Machine Learning SDK,與任何 Python 環境中的服務互動。
- 使用 Azure Machine Learning 設計工具來執行工作流程步驟,而不需要撰寫程式碼。
- 使用 Azure Machine Learning CLI 來進行自動化。
下一步
若要開始使用 Azure Machine Learning,請參閱: