「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>Azure Machine Learning]]
--[[Azure Machine Learningチュートリアル]]
--[[Azure Machine Learningのアルゴリズム・モデル]]
--Azure Machine Learningのモデルのデプロイ

* 目次 [#eee909ac]
#contents

*概要 [#r5730792]
[[Azure Machine Learning]](AzML)のモデルのデプロイについて。~
(特に、クロスプラットフォームのデプロイについて確認したい。

*詳細 [#r65181a7]

**デプロイ先 [#ac386d44]
のコンピューティング環境

***ローカル [#h3901a5a]
[[Compute Instance>Azure Machine Learning#e3281bb1]] の [[Jupyter Notebook>AzureのNotebook#u03b2426]] から、同じ VM 上へモデルをデプロイ。

***[[ACI>Azure Container Instances (ACI)]] [#ub2bd21d]

***[[AKS>Azure Kubernetes Service (AKS)]] [#db2dd952]

***その他 [#acee34ca]

-GPU~
リアルタイム画像処理に特化した演算装置
--GPU対応マシンのコンピューティング環境を作成
--PythonのSDKで[[WebAPIとしてデプロイ>#d93a5eb7]]する。

-FPGA~
製造後に購入者や設計者が構成を設定できる集積回路
--TensorFlow モデルを定義する
--SavedModelでモデルをシリアライズ(ZIPへ)
--PythonのSDKで、
---SavedModelでモデルをデシリアライズ(ZIPから)
---TensorFlowグラフを ONNX 形式に変換
---FPGA対応マシンのコンピューティング環境を作成
---Dockerイメージ化してコンピューティング環境にデプロイ
---Dockerコンテナは、gRPC と TensorFlow Serving の "予測" API をサポート

-[[Cognitive Search]]~

-参考
--GPU~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-inferencing-gpus
--FPGA~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-fpga-web-service
--FPGA~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-fpga-web-service
--Cognitive Search~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-model-cognitive-search

**モデルの形式 [#m74a2e78]

***WebAPI [#d93a5eb7]
-作成したモデルを [[ローカル>#h3901a5a]] / [[ACI>#ub2bd21d]] / [[AKS>#db2dd952]] のいずれかにデプロイ。

-デプロイは、GUIで行うことも出来るし、コードで行うことも出来る。

-コードで行う場合の方法も、CLIでやる場合と、Pythonでやる場合があり、ややこしい。

--CLI

---エントリ・スクリプトを定義する。~
Web サービスに送信されたデータをモデルに渡す(Python)スクリプト。 

---推論構成をJSONで定義する。~
(エントリ・スクリプトやDockerイメージ、Conda環境の情報を含む)

---デプロイ構成をJSONで定義する。~
(デプロイ先は、前述の選択肢から選択可能)

---以下のCLIのコマンドでモデルをWebAPIとしてデプロイする。
 az ml model deploy -n myservice \
     -m モデル名:バージョン \
     --overwrite \
     --ic 推論構成.json \
     --dc デプロイ構成.json \
     -g <resource-group> \
     -w <workspace-name>

--Python

---エントリ・スクリプトを定義する。~
Web サービスに送信されたデータをモデルに渡す(Python)スクリプト。 

---Conda 環境をYAMLで定義する。~
(conda env export、conda env createで使う)

---推論構成をSDKで定義する。~
(エントリ・スクリプトやDockerイメージ、Conda環境の情報を含む)

---デプロイ構成をSDKで定義する。~
(デプロイ先は、前述の選択肢から選択可能)

---以下のCLIのコマンドでモデルをWebAPIとしてデプロイする。
 from azureml.core.model import Model
 
 # Name of the web service that is deployed
 aks_service_name = 'aks-dnn-mnist'
 # Get the registerd model
 model = Model(ws, "tf-dnn-mnist")
 # Deploy the model
 aks_service = Model.deploy(ws,
                            models=[model],
                            inference_config=inference_config,
                            deployment_config=gpu_aks_config,
                            deployment_target=aks_target,
                            name=aks_service_name)
 
 aks_service.wait_for_deployment(show_output=True)
 print(aks_service.state)

-参考
--機械学習モデルのデプロイ~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-and-where
--Web サービスとしてデプロイされるモデル用のクライアントを作成する~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-consume-web-service
--デプロイ先~
・[[ローカル>#h3901a5a]]~
 ・https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-local-container-notebook-vm~
 ・https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local-advanced.ipynb~
・[[ACI>#ub2bd21d]]~
 ・https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-azure-container-instance~
 ・https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/deploy-to-cloud/model-register-and-deploy.ipynb~
 ・https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/deploy-multi-model/multi-model-register-and-deploy.ipynb~
・[[AKS>#db2dd952]]~
 ・https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-azure-kubernetes-service?tabs=python~
 ・https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/production-deploy-to-aks/production-deploy-to-aks.ipynb~
 ・https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/production-deploy-to-aks/production-deploy-to-aks-ssl.ipynb~
 ・https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/deployment/production-deploy-to-aks-gpu/production-deploy-to-aks-gpu.ipynb

***バッチ [#ba8b03f7]
-バッチ エンドポイントがプレビューで存在する。
-分散処理の場合は、[[Azure Databricks]]に持って行くとか?

***Docker [#icc3012c]

-モデル同梱されたコンテナ~
モデルをデプロイせずに Docker イメージを作成する。
--Dockerイメージをダウンロードして実行
--Dockerビルドに使用するファイルをダウンロード
--Dockerコンテナを実行すると[[WebAPI>#d93a5eb7]]を公開する

-事前構築済み推論用コンテナ~
モデル デプロイの
--待ち時間が短縮される。
--成功率が向上する。
--不要なイメージのビルドを回避できる。
この機能の意味は、モデル デプロイの
--待ち時間短縮
--成功率の向上
--不要なイメージのビルド回避

-参考
docker-image-inference

--モデルのパッケージ化~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-package-models

--推論用の事前構築済み Docker イメージ~
https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-prebuilt-docker-images-inference
--事前構築済み Docker イメージを拡張する~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-extend-prebuilt-

***ダウンロード [#vd317616]
-[[ONNX>https://techinfoofmicrosofttech.osscons.jp/index.php?ML.NET#df076ea1]]~
ダウンロードしたモデルは、登録できる。

※ ソースコードのダウンロード手順は、~
  エントリ・スクリプトやConda 環境の話。

**開発系の機能別 [#mce0e2d7]
登録されたモデルをデプロイする方法が、~
開発系の機能毎に差異があるか?と言うと、無さそう。

***Automated ML [#w3030725]

-参考
--スタジオ UI を使用して自動 ML を設定する~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-use-automated-ml-for-ml-models

***Designer [#rd53158d]

-参考
--スタジオを使用して、デザイナーでトレーニングされたモデルをデプロイする~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-model-designer

***Notebooks [#v56df2a0]

-参考
--azure-ml-python-handson/module3 deployment targets.ipynb at main · yomaki/azure-ml-python-handson~
https://github.com/yomaki/azure-ml-python-handson/blob/main/module3%20deployment%20targets.ipynb

*参考 [#r83a0806]

**YouTube [#m5f10aba]
-MLOps勉強会 第10回 Part1 MLflow + ONNX~
で実現するクラウドネイティブな MLOps~
https://www.youtube.com/watch?v=8wHcx8_459U

**GitHub [#z27570e9]
-Azure Machine Learning で作成した~
モデルの推論を実行する方法について~
Japan Machine Learning Support Blog~
https://jpmlblog.github.io/blog/2021/01/13/AML-model-inference/

**Microsoft Docs [#ccc799d8]
-概念 > モデルをデプロイする。
--エンドポイント~
https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-endpoints
--モデルの移植性(ONNX)~
https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-onnx
--事前構築済み Docker イメージ~
https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-prebuilt-docker-images-inference

-MLOps:ML モデル管理~
https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-model-management-and-deployment

-Azure Databricks ML 実験用の MLflow Tracking~
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-use-mlflow-azure-databricks

----
Tags: [[:クラウド]], [[:BI/AI]], [[:Azure]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS