
Azure Machine Learning簡介

Microsoft Azure Machine Learning是微軟的雲端平台,用於訓練、部屬、管理機器學習模型,主要功能如下:
- 儲存、管理資料集:集中儲存和管理用來訓練或測試模型的數據集
- 執行機器學習:訓練和評估機器學習模型
選擇訓練模型的計算資源,自動化機器學習(AutoML),可以使用不同演算法、參數,執行多個模型訓練,找到最適合的模型。 - 視覺化工具
- 註冊和管理訓練好的模型:
與MLflow等常見機器學習架構整合,方便管理大規模的模型訓練、評估、部屬。 - 部署訓練好的模型,以供應用程式和服務使用。
- 檢閱並套用負責任的 AI 原則:
支援可視化和評估負責任的人工智慧的指標,包括模型可解釋性、公平性評估等。
- 題目主要集中在知道Microsoft Azure平台可以幫我們省去哪些機器學習的步驟(如模型訓練、自動評估),哪些需要人工判斷(如準備資料集、選定要預測的「標籤Label」)。
- 另外一類題目是考使用步驟,例如需要先「建立資源與工作空間」才能開始使用Azure Machine Learning Studio。這部分除了透過實作加深記憶,只能努力背了,可以回去看心智圖摘要。《AI-900》機器學習1:簡介 (含匯總心智圖)
在Azure中使用機器學習
在Azure中開始使用機器學習有六個步驟:
- 定義問題:決定模型應該預測的內容,以及何謂預測成功。
- 取得資料:尋找資料來源並取得存取權。
- 準備資料:探索資料。 根據模型的需求,清理和轉換資料(Clean and transform the data)。
- 訓練模型:根據反覆試驗,選擇演算法(algorithm )和超參數值(hyperparameter values)。
- 整合模型:將模型部署至端點以產生預測。
- 監視模型:追蹤模型的效能。
定義問題
透過以下問題,定義模型要解決的問題,並選擇要使用哪種機器學習模型。
- 模型應該輸出什麼。
- 您使用哪種類型的機器學習。
- 哪些準則(criteria)可讓模型成功。
常見的機器學習模型如:分類、回歸、時間序列分析、電腦視覺、NLP。

訓練模型的流程
訓練模型的流程如下:
- 準備資料集
- 資料預處理:正規化、資料清洗
- 把資料分割為訓練資料集、測試資料集
- 選擇模型(演算法)
- 訓練模型
- 評估模型:用測試資料集來考模型,產生預測
- 評估:為訓練好的模型評分
訓練模型時,會重複執行以上的步驟,以找出最好的模型與參數。
取得並準備資料
識別資料來源以及資料格式
- 資料來源Data source:資料可能會儲存在客戶關係管理 (CRM) 系統、SQL 資料庫之類的交易式資料庫中,或是由物聯網 (IoT) 裝置所產生
- 資料格式Data format:可能是表格式或結構化資料、半結構化資料或非結構化資料。
設計資料擷取的方式data ingestion solution
- 此流程又稱為ETL或ELT,分別是:擷取Extract、轉換Transform、載入Load。
- 可以利用資料擷取管線(data ingestion pipeline),來自動或手動移動、轉換資料。
Azure服務:Azure Synapse Analytics、Azure Databricks 和 Azure Machine Learning
常見方法:
(1)從來源擷取原始資料 (例如 CRM 系統或 IoT 裝置)。
(2)使用 Azure Synapse Analytics 複製和轉換資料。
(3)將備妥的資料儲存在 Azure Blob 儲存體中。
(4)使用 Azure Machine Learning 將模型定型。
範例:訓練天氣預報模型
- 物聯網IoT裝置每隔一段時間會測量溫度,產生數據,儲存為JSON檔案格式。
- 把JSON檔案轉換為表格化資料表。
- 從資料表中取得所需資料,即可作為訓練資料集。

資料集準備
訓練模型
Azure中常用來訓練機器學習的服務有以下,在這裡我們集中討論Azure Machine Learning。
使用Azure Machine Learning Studio
步驟簡述
- 在Azure portal 入口網站中建立Azure Machine Learning workspace(工作區)。
其他資源,如記憶體帳戶、虛擬機等,會視需要自動建立。 - 使用Azure Machine Learning Studio
(1)匯入/探索數據
(2)建立計算資源
(3)執行程式碼
(4)使用視覺化工具來建立作業和流程管道。
(5)自動化機器學習(AutoML)、訓練模型
(6)檢視訓練模型的詳細資料,包括評估計量、 AI責任評估、訓練模型參數
(7)部屬、管理訓練好的模型
決定計算資源
計算Compute指執行訓練過程所需的計算資源。訓練模型時,可以透過訓練所需時間、計算使用率,了解計算量,評估是否擴大或縮小計算資源。
使用Azure在雲端訓練模型時,可以選擇符合成本效益的計算資源。(不同計價方案)
整合模型Integrate a model
- 訓練模型的最終目標,通常是將其整合到應用程式中,在規劃如何整合模型時,必須考慮它會影響模型的訓練方式,以及所需使用的訓練資料。
- 為了更輕鬆地完成整合,你可以使用 端點(endpoint)。簡單來說,端點就是一個網路位址,應用程式可以呼叫它並接收回應。當你將模型部署到端點時,有兩種選項:取得即時預測(real-time predictions)、取得批次預測(batch predictions)。
- 即時或批次預測不一定取決於收集新數據的頻率。 而是取決於需要產生預測的頻率和速度。

即時預測和批次預測(GPT製圖)
即時預測(Real-time predictions)
- 當需要模型對新進資料立即產生結果時,就必須使用即時預測。
- 典型場景:手機應用程式、網站等互動應用。
- 範例:
購物網站中,顧客選擇一件商品時,模型立即根據該選擇推薦其他商品,並在網頁加載時一併顯示。此時,預測與推薦的延遲應該等同於網頁載入襯衫資訊的時間。
批次預測(Batch predictions)
- 當需模型對一批新資料進行評分,並將結果儲存為檔案或寫入資料庫時,就需要批次預測。
- 範例:
每周預測一次未來的商品銷售量。
考量預測成本
訓練模型需要運算資源,部署模型時同樣需要。根據部署方式不同,所需資源也不同:
即時預測:
- 必須使用永遠開機的運算環境,可立即回應。
- 適合使用容器技術,如 Azure Container Instance 容器實例(ACI) 或 Azure Kubernetes Service (AKS)。
- 缺點:計算資源持續運作 → 費用持續產生。
批次預測:
- 適合使用可平行處理的運算叢集。
- 執行批次任務時才啟動運算節點,空閒時可縮減至零節點。
- 優點:可大幅節省成本。
實作 :Explore Automated Machine Learning in Azure Machine Learning
登入Azure portal (微軟帳號)
- 可以免費試用 (200美元或30天的額度)
- 輸入驗證資料時,手機號碼不需輸入國際碼(+886)和0,直接從第二碼9開始輸入。可選擇text me收到簡訊驗證碼。
- 三個勾選框,只需勾選第一個「同意使用條款」 (後面兩個是同意收到推銷郵件或分享資料)

只需勾選第一個「同意使用條款」
- Tax information 選填
- 信用卡資料
會刷1美元費用確認資料無誤,之後會退款。不會自動續費,當試用到期時(用完200美元,或者30天,看哪個先到),Azure會寄信詢問是否繼續付費。
建立資源與工作空間
點擊 +建立資源 (+ Create a resource)

搜尋Azure Machine Learning,點選建立

建立ML工作空間

- 訂用帳戶:你訂閱服務的帳戶,使用預設即可
- 資源群組:放置專案的群組,若無,可選新建並任意命名(英文、數字)
(不要使用中文命名!會導致後續上傳資料時路徑無法讀取,導致我又重來一次...) - 任意命名工作區,其餘設定可不更動 (會自動建立)
- 點選左下角「檢閱+建立」→「建立」,之後等一段時間部屬。
使用自動機器學習(Auto ML)訓練模型
這個練習使用腳踏車租借資料,藉由日期、天氣來預測腳踏車租借數量。
- 新增分頁前往https://ml.azure.com,登入微軟帳號,進入Machine Learning工作室。
- 左邊的工作區,可以看到剛剛建立的ML工作區,點擊該工作區。

選擇「自動化ML」(在左側「正在撰寫(Authoring)」區域),點選新增自動化ML作業

基本設定:
- 工作名稱可使用預設
- 實驗名稱:
mslearn-bike-rental
- 描述:Automated machine learning for bike rental prediction
- 標籤(tag):無
工作類型與資料:
- 選取任務類型:迴歸
- 選取資料,點擊建立
- 資料名稱:bike-rentals
- 描述:Historic bike rental data
- 類型:表格Table (mltable)
- 資料來源:來自本機檔案
- 資料存放區類型:Azure Blob儲存體 (Azure Blob Storage)
- 名稱:workspaceblobstore
- 上傳資料檔案:到此處下載資料集並解壓縮:https://aka.ms/bike-rentals
上傳解壓縮後的資料夾,內含兩個檔案 - 勾選「bike-rentals」資料集進行下一步
(可點選資料集,檢視資料概覽)

工作設定:
- 目標資料行Target column:rentals (integer)
- 檢視其他組態設定Additional configuration settings
- 主要計量 Primary metric: NormalizedRootMeanSquaredError
- 解釋最佳模型 Explain best model:不勾選
- 啟用集成堆疊 Enable ensemble stacking:不勾選
- 使用所有支援的模型Use all supported models:不勾選
- 已允許模型Allowed Models:選擇RandomForest、LightGBM
(一般情況下,會盡量測試所有模型,但這裡只是練習,測試越多模型會耗費更多時間與資源)

- 限制 (點擊展開)
(Trails網頁翻譯成「試用」較少見,一般訓練模型可翻譯為試驗、實驗、訓練任務)
- 試驗數上限 Max trials: 3
- 最大並行試驗數Max concurrent trials: 3
- 節點數上限 Max nodes: 3
- 計量分數閾值Metric score threshold: 0.085
- 實驗逾時 (分鐘)Experiment timeout: 15
(整個訓練的時間上限,15分鐘後停止AutoML訓練工作)
- 迭代運算逾時 (分鐘)Iteration timeout: 15
- 啟用提前終止:Enable early termination: 勾選
計算Compute:
- 選取計算類型Select compute type:無伺服器Serverless
- 虛擬機類型Virtual machine type:CPU
- 虛擬機階層Virtual machine tier: 專用Dedicated
- 虛擬機大小Virtual machine size:Standard_DS3_V2*
- 執行個體數目Number of instances: 1 (指在雲端上分配的虛擬機數量)
可以提交訓練了!訓練會自動進行,大概需要10分鐘。

自動訓練模型中
檢視訓練模型

檢視模型
在「最佳模型摘要」,點選「演算法名稱」,「計量Metrics」中可看訓練結果。
- 殘差圖(residuals chart)以直方圖的形式顯示殘差(即預測值與實際值之間的差異)。
- 預測與實際比較圖(predicted_true chart) 用來比較模型的預測值與實際值的對應關係。

部屬和測試模型
在「模型」分頁中,選擇部屬→即時端點Real-time endpoint

設定:
- 虛擬機Virtual machine: Standard_DS3_v2 (可能配額不足無法選擇,可改選任何可以選擇的虛擬機,如Standard_DS1_v2)
- 執行個體數:Instance count: 3
- 端點Endpoint: 新增
- 端點名稱Endpoint name: 使用預設
- 部屬名稱Deployment name: 使用預設
- 推斷資料蒐集Inferencing data collection: 停用
- 套件模型Package Model: 停用

等待部屬成功通知(需要5-10分鐘)。
無法新增端點?
出現錯誤:
ResourceOperationFailure: Resource provider [N/A] isn't registered with Subscription [N/A]. Please see troubleshooting guide, available here: https://aka.ms/register-resource-provider
- 到Azure Portal→訂用帳戶→設定→資源提供者
- 確認有註冊 Microsoft.PolicyInsights、 Microsoft.Cdn policies、Microsoft.MachineLearningServices
若沒有,搜尋該資源,勾選後點擊註冊,幾秒鐘後右上角會通知註冊成功 - 重新佈署端點

Azure Portal→訂用帳戶

設定→資源提供者
測試部屬服務
- 選擇左側「端點」分頁,選擇模型名稱

- 選擇測試分頁,Input貼上以下資料
意即輸入一筆資料,該筆資料是:2022/1/1,第二季、非假日、周一、是工作日…濕度0.3、風速0.3
{
"input_data": {
"columns": [
"day",
"mnth",
"year",
"season",
"holiday",
"weekday",
"workingday",
"weathersit",
"temp",
"atemp",
"hum",
"windspeed"
],
"index": [0],
"data": [[1,1,2022,2,0,1,1,2,0.3,0.3,0.3,0.3]]
}
}

輸入測試資料
測試結果jsonOutput,則是此模型預測的腳特車租借數量。

模型預測結果
清除端點
- 不再使用此端點時,記得刪除端點,避免持續耗費計算資源(Azure使用量)。
- 在 Azure Machine Learning studio,的「端點」分頁,勾選端點後,點擊刪除。

刪除部屬的端點
- 不再使用機器學習工作區時,記得刪除工作區,避免佔用儲存資源
- 到Azure portal→資源群組resource group,勾選建立的資源群組

AI-900系列文章目錄:
《AI-900》證照考試準備心得與筆記分享 - 系列文章