Skip to content

MS_AzureMachineLearningDeploy

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

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

概要

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

詳細

デプロイ先

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

ローカル

Compute Instance の Jupyter 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 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

移行メモ(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

移行管理: DONE / TODO

Clone this wiki locally