機器學習的生命週期作業:Machine Learning Operationalization
這篇文章會帶您透過幾個簡單的指令,快速的將 TensorFlow, CNTK 或是 Python 所建立的預測模型,部署到 Azure Container Service (ACS) 或 HDInsight Spark 上,以達到高擴充性的需求。
AML CLI (Azure Machine Learning Command Line Interface) 是個全新的 Azure 機器學習指令集,目前是 preview 版本,目的在將機器學習的生命週期,例如 Experiment, Model training, Deployment, Management 等.能透過指令自動化流程處理。同時支援 CNTK, TenserFlow 等不同的機器學習框架,未來也將支援如 GPU/FPGA 等機器,協助資料科學家們對模型生命週期的訓練及管理。
GitHub 上有完整範例及文件並隨時更新,已可在 Linux Data Science Virtual Machine (DSVM) 上使用。
環境準備
首先你需要有 Azure 訂用帳戶 (取得訂用帳戶),然後依說明文件建一個 DSVM 出來 (要完成以下練習,只要選擇最便宜的機器即可)。
透過 SSH 連線至 DSVM (可使用 X2Go 或 Putty )後,執行以下指令:
$ wget -q https://amlsamples.blob.core.windows.net/scripts/amlupdate.sh -O - | sudo bash -
$ sudo /opt/microsoft/azureml/initial_setup.sh
注意: 請登出再重新登入以讓改變有效
接下來執行以下指令來設定 AML CLI 環境:
$ az login
$ aml env setup
以上指令會在這個 DSVM 中新增以下這些服務:
- A resource group
- A storage account
- An Azure Container Registry (ACR)
- An Azure Container Service (ACS)
- Application insights
注意:
- 首先你會被要求到 https://aka.ms/devicelogin 輸入一組代碼,再登入您的 Azure 帳號,確保你有足夠的權限新增服務。
- 得輸入小於20個字元、只能包含小寫字母及數字的環境名稱 (Environment names)。
之後你隨時可以執行以下指令來了解所有的環境設定:
$ aml env show
使用 Jupyter
身為資料科學家,您可以使用喜歡的 IDE 來寫作。若使用 Jupyter,在 DSVM 中是跑在 https://<machine-ip-address>:8000 ,請直接以瀏覽器打開並以登入 DSVM 的帳密登入。
在以下資料夾中可分別找到即時及批次服務的範例:
即時: azureml/realtime/realtimewebservices.ipynb notebook
批次: azureml/batch/batchwebservices.ipynb notebook
照著步驟即可訓練出一個預測模型:
CNTK, TensorFlow 及 Python 範例
利用 AML 部署
若是即時服務 (realtime),會部署到 Azure Container Service (ACS),若是批次服務 (batch) 會部署到 HDInsight Spark,以達成高擴充性及高可用性的目標,無論您的預測模型是由 TensorFlow、CNTK 或 Python 所建制的。
以 realtime 服務範例。SSH到DSVM後,切換到訓練出來的預測模型所在資料夾:
$ cd ~/notebooks/azureml/realtime
接下來執行以下指令,就能部署 realtime service 至所在的 DSVM:
$ aml env local
$ aml service create realtime -f testing.py -m housing.model -s webserviceschema.json -n mytestapp
部署成功後的畫面:
你也可以執行以下指令,部署到 Azure Container Service (ACS) cluster 中:
$ aml env cluster
$ aml service create realtime -f testing.py -m housing.model -s webserviceschema.json -n mytestapp
了解更多 AML CLI 指令
在 https://github.com/Azure/Machine-Learning-Operationalization/blob/master/aml-cli-reference.md 可看到所有的指令,例如可以執行
$ aml service list
會看到所有已部署的 realtime 或 batch 服務