-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureMachineLearningDeploy
- 戻る(Azure Machine Learning)
- Azure Machine Learningチュートリアル
- Azure Machine Learningのアルゴリズム・モデル
- Azure Machine Learningのモデルのデプロイ
Azure Machine Learning(AzML)のモデルのデプロイについて。
(特に、クロスプラットフォームのデプロイについて確認したい。)
のコンピューティング環境
Compute Instance の Jupyter Notebook から、
同じ VM 上へモデルをデプロイ。
Azure Container Instances (ACI)
Azure Kubernetes Service (AKS)
-
GPU
リアルタイム画像処理に特化した演算装置- GPU 対応マシンのコンピューティング環境を作成
- Python の SDK でWebAPI としてデプロイする。
-
FPGA
製造後に購入者や設計者が構成を設定できる集積回路- TensorFlow モデルを定義する
- SavedModel でモデルをシリアライズ(ZIP へ)
- Python の SDK で、
- SavedModel でモデルをデシリアライズ(ZIP から)
- TensorFlow グラフを ONNX 形式に変換
- FPGA 対応マシンのコンピューティング環境を作成
- Docker イメージ化してコンピューティング環境にデプロイ
- Docker コンテナは、gRPC と TensorFlow Serving の "予測" API をサポート
-
Cognitive Search
-
参考
移行メモ(リンク切れ・重複): 「Cognitive Search」のリンク先は
元 Wiki 側に実体が無かったためプレーン テキストにした
(Azure Applied AI Servicesの
Azure Cognitive Search を参照。現在は Azure AI Search に改称)。
また、参考の FPGA のリンクが同じ URL で 2 回書かれていたため 1 つにした。
補足(FPGA サービスは終了): Azure Machine Learning の
FPGA(Project Brainwave)を使った推論は提供終了している。
現在、専用ハードウェアでの推論は GPU が中心である。
-
デプロイは、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 で定義する。
(デプロイ先は、前述の選択肢から選択可能) -
以下のコードでモデルを 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)
-
-
移行メモ(誤記): Python 版の手順の最後が
「以下の CLI のコマンドでモデルを WebAPI としてデプロイする」と
なっていたが、続くのは Python のコードなので
「以下のコードで」に改めた。
補足(CLI と SDK が「ややこしい」理由): 著者の言うとおり
CLI(JSON)と Python SDK(クラス)で同じことを別の書き方で行う二重構造になっていた。
現在は CLI v2 / SDK v2 に刷新され、
- どちらも YAML でリソースを定義する形に統一
- デプロイ先は「オンライン エンドポイント(マネージド/Kubernetes)」と
「バッチ エンドポイント」に整理され、本ページの
azureml.core(SDK v1)は非推奨になっている。
上記のコードは v1 時代の記録として読むこと。
- バッチ エンドポイントがプレビューで存在する。
- 分散処理の場合は、Azure Databricksに持って行くとか?
補足(バッチ エンドポイントは GA): 「プレビューで存在する」と
書かれていたバッチ エンドポイントは、その後 **一般提供(GA)**になった。
大量データに対する非同期のスコアリングを、
コンピューティング クラスター上で並列実行できる。
-
モデル同梱されたコンテナ
モデルをデプロイせずに Docker イメージを作成する。- Docker イメージをダウンロードして実行
- Docker ビルドに使用するファイルをダウンロード
- Docker コンテナを実行するとWebAPIを公開する
-
事前構築済み推論用コンテナ
この機能の意味は、モデル デプロイの- 待ち時間短縮
- 成功率の向上
- 不要なイメージのビルド回避
-
参考
-
モデルのパッケージ化
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-docker-images-inference
-
移行メモ(URL の欠落): 「事前構築済み Docker イメージを拡張する」の URL が
how-to-extend-prebuilt-で途切れていたため、
正しいページ名(how-to-extend-prebuilt-docker-images-inference)を補った。
また、参考の直前にあったdocker-image-inferenceという
意味の取れない断片は、この URL の切れ端と判断して除去した。
- ONNX(ML.NETを参照)
ダウンロードしたモデルは、登録できる。
※ ソースコードのダウンロード手順は、
エントリ・スクリプトや Conda 環境の話。
補足(ONNX が「クロスプラットフォームのデプロイ」の答え): 冒頭で
著者が確認したいと述べている「クロスプラットフォームのデプロイ」は、
ONNX(Open Neural Network Exchange)形式でモデルを書き出すのが解になる。
ONNX にしておけば、ONNX Runtime を通じて
Windows / Linux / モバイル、C# / Python / C++ のいずれからも
同じモデルを推論に使える。
ML.NET から ONNX モデルを読み込めるのもこのためである。
登録されたモデルをデプロイする方法が、
開発系の機能毎に差異があるか?と言うと、無さそう。
- 参考
- スタジオ UI を使用して自動 ML を設定する
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-use-automated-ml-for-ml-models
- スタジオ UI を使用して自動 ML を設定する
- 参考
- スタジオを使用して、デザイナーでトレーニングされたモデルをデプロイする
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-model-designer
- スタジオを使用して、デザイナーでトレーニングされたモデルをデプロイする
- 参考
- 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
- azure-ml-python-handson/module3 deployment targets.ipynb at main · yomaki/azure-ml-python-handson
- MLOps勉強会 第10回 Part1 MLflow + ONNX
で実現するクラウドネイティブな MLOps
https://www.youtube.com/watch?v=8wHcx8_459U
- Azure Machine Learning で作成した
モデルの推論を実行する方法について
Japan Machine Learning Support Blog
https://jpmlblog.github.io/blog/2021/01/13/AML-model-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
- Azure Machine Learning
- Azure Machine Learningチュートリアル
- Azure Machine Learningのアルゴリズム・モデル
- Azure Container Instances (ACI) / Azure Kubernetes Service (AKS)
- ML.NET
Tags: クラウド, BI/AI, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。