Skip to content

MS_AzureMachineLearningDeploy

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

Azure Machine Learningのモデルのデプロイ

概要

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

詳細

デプロイ先

のコンピューティング環境

ローカル

Compute InstanceJupyter Notebook から、
同じ VM 上へモデルをデプロイ。

ACI

Azure Container Instances (ACI)

AKS

Azure Kubernetes Service (AKS)

その他のデプロイ先

移行メモ(リンク切れ・重複): 「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 が中心である。

モデルの形式

WebAPI

  • 作成したモデルを ローカル / ACI / AKS のいずれかにデプロイ。

  • デプロイは、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 exportconda 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

移行メモ(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 モデルを読み込めるのもこのためである。

開発系の機能別

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

Automated ML

Designer

Notebooks

参考

YouTube

GitHub

Microsoft Docs

本 Wiki 内


Tags: クラウド, BI/AI, Azure

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally