Skip to content

MS_AzureMachineLearning

nishi_74322014 edited this page Aug 19, 2026 · 1 revision

Azure Machine Learning

概要

  • 機械学習モデルを構築、トレーニング、デプロイが可能なプラットフォーム

  • 様々な機能で専門的な知識を必要とするデータサイエンスを
    エンジニアリングに落としている。

    • Notebook により機械学習プロセスの設計・実装と実行をする機能
    • GUI、マウス操作で機械学習プロセスを設計・実行する機能
    • 機械学習プロセス設計の煩雑さを自動化によって解消する AutoML 機能

補足(3 つの入口という設計): 本ページの要点は、
同じことを 3 通りのやり方で実現できるという構成にある。

難しい ◀────────────────────────────────▶ 易しい
[ Notebooks ]     [ Designer ]     [ Automated ML ]
 コードで書く      GUI で組む       設定するだけ
 自由度:高        自由度:中        自由度:低

上達するほど左に寄るのではなく、
問題の性質で使い分けるのが正しい。
定型的な予測なら AutoML で十分な精度が出ることも多く、
そこから始めて足りなければ左に移る、という進め方が効率的である。

詳細

用語

ワークスペース

  • 機械学習のモデルのトレーニングやデプロイに用いるすべてのリソースを管理する場所。
  • 様々な PaaS と連携して動いている。その他、様々なリソースやアセットを持つ。

補足: ワークスペースを作ると、
ストレージ アカウントKey Vault
Application InsightsContainer Registry

が併せて作成される(または既存のものを指定する)。
「様々な PaaS と連携して動いている」とはこの意味で、
削除するときはこれらも残る点に注意が要る。

実験、実行、実行構成、スナップショット

  • 実験
    機械学習のモデル構築のためにトレーニングを行うことを指す。

  • 実行

    • 実験に関する実行は、スクリプトを 1 回行うこと。
    • メタデータ、メトリック、出力ファイル、スナップショットなどが記録される。
  • 実行構成
    実行方法を定義した命令。

  • スナップショット
    実行時にスクリプトに含まれているファイルが実行レコードに保存される。

補足(なぜ実行を記録するのか): 機械学習では
**「あのとき精度が良かったモデルを再現できない」**という事故が起きやすい。
コード、データ、パラメータ、乱数シードのどれか 1 つ違えば結果が変わるためである。

実行のたびにスナップショット(コード)とメトリック(結果)を
自動で残す
のは、この再現性の問題への対処であり、
Azure Databricks の MLflow と同じ動機を持つ
(実際、現在の Azure ML は MLflow 互換である)。

モデル、モデルレジストリ

  • TensorFlow、PyTorch、Scikit-learn(DNET_ScikitLearn.md)、Chainer
    のような、外部のフレームワークを使うことができる。

  • ワークスペース内の学習モデルは、モデルレジストリで追跡可能

エンドポイント

  • クラウド上の Web サービス、IoT をエンドポイントとして指定
  • 指定したエンドポイントにモジュールをデプロイする。

移行メモ(誤字): 原文の「措定したエンドポイント」は
指定したの誤変換と判断し修正した。

Machine Learning Studio

  • Azure Machine Learning 開発者向け Web ポータル

  • UI としては、言語(Python、R)と GUI があり、Studio は GUI に相当する。

  • ただ、言語(Python、R)だけでは完結しないので、
    言語を使用するときも Studio を併用する必要があるらしい。

  • ただし、言語を使用しないケースでは、Studio だけで完結できる。

(classic)

2015 年にリリースされた Azure Machine Learning Studio が先行して GUI 環境を実現。

  • ドラッグ アンド ドロップ機械学習ビルダー

  • コード・ファーストが存在しなかった。

  • Azure Machine Learning と相互運用できない。

  • 2024 年 8 月 31 日に終了

  • 2021 年 12 月 1 日以降、新しいリソースは作成できない。

補足: 予告どおり Studio (classic) は 2024 年 8 月末に終了した。
「相互運用できない」という原文の指摘のとおり、
classic の資産は自動移行できず、
Designer で作り直す必要があった点が移行時の課題になった。

メニュー

以下のような構成になっている。

機能

開発系の機能

Automated ML

  • (自動機械学習)

    • 所謂一つの Auto ML(DNET_MachineLearning.md

    • データから最高のモデルを探索

  • GUI で設定する場合、コードで設定する場合がある。
    (コードで設定する場合は Notebooks から行う。)

  • 自動実行前の、ユーザ入力

  • ユーザ入力後、
    以下の学習と評価を自動実行する。

    • 特徴量エンジニアリング

      • 特徴量の手動選択も可能
      • 欠損データ補完方法を選択可能
    • モデルとモデルを作成するアルゴリズムの選択

    • 作成されたモデルの(ハイパーパラメタ)チューニング

    • モデルのリーダーボード(ランキング的な)と解釈

  • 実行結果の確認

    • 実行 ID をクリック
    • 以下のタブからチェック可能
      • 詳細
        実行 ID の詳細情報
      • データ ガードレール
        データの品質をチェックできる。
      • モデル
        モデルをチェックできる。
        ・モデルのリーダーボード
        ・個別のモデルの概要、説明、メトリック
        ・, etc.
  • モデルを推論環境にデプロイして推論(リアルタイム or バッチ)

補足(AutoML の実像と限界): AutoML は「ボタンを押せば
良いモデルができる」ものではない。実際には、

  • データの品質(欠損、偏り、リーク)が結果をほぼ決める、
  • 目的変数とタスクの選択を間違えると意味のない結果が出る、
  • 時間制限を短くすると探索が不十分になる、

という点で人の判断が要る。
原文が挙げているデータ ガードレールは、まさに
「そのデータで学習してよいか」を機械的に警告する機能であり、
AutoML を使ううえで最初に見るべきタブである。

なお、データ リーク(目的変数の情報が説明変数に混入すること)は
AutoML でも自動検出しきれない。
「精度が異様に高い」ときは、まずこれを疑うこと。

Designer

  • (GUI 機械学習)

  • パイプライン構築

    • テンプレートを選択
      0から設計するか、テンプレートを選択してカスタマイズする。

    • パイプラインの構成

      • データセットの選択

      • 特徴量エンジニアリング
        ・特徴量の手動選択も可能
        ・欠損データ補完方法を選択可能

      • データ分割(学習:テスト=7:3)

      • モデル作成アルゴリズムの選択
        (回帰、分類、クラスタリング)

      • モデルの学習

      • モデルのスコア付け

      • モデルの評価

    • パイプラインの実行

  • 実行結果の確認

    • 実行 ID をクリック
    • 以下のタブからチェック可能
      • グラフ
      • 手順
      • , etc.
  • モデルを推論環境にデプロイして推論(リアルタイム or バッチ)

  • また、Designer で作成したモノを Notebooks で使えるコードにエクスポート可能。

Notebooks

  • (コーディング環境)

    • 以下のファイルの管理
      (ストレージにホストされる)

      • Jupyter Notebook(DNET_PySpark.md
      • Python、R、スクリプト
    • ファイルを作成 or 選択して

      • サンプルも用意されていて、
        これをファイル管理下にクローンできる。
      • また、GitHub 上のコードを
        ファイル管理下にクローンできる。
        (Jupyter → Terminal で git clone コマンド実行)
    • コーディング

  • パイプライン構築

    • テンプレートを選択
      0から設計・実装するか、テンプレートを選択してカスタマイズする。

    • パイプラインの構成
      コーディングによってパイプラインを構成する。

    • パイプラインの実行

  • 実行結果の確認

    • 標準出力で確認
    • SDK を使って確認
  • モデルを推論環境にデプロイして推論(リアルタイム or バッチ)

インフラ系の機能

Compute

(計算環境)

  • Compute Instance
    ≒ ローカル環境(開発・学習・推論で利用可能)

    • R Studio
    • Jupyter/JupyterLab(DNET_IDE.md)(Web ブラウザ上で開く)
    • Visual Studio Code(ローカルで開く)

    Notebooks(コーディング環境)管理下のファイルを使う。
    ※ 各種の SDK、Azure Machine Learning Python SDK もインストール済み。

  • Compute Clusters
    ≒ 学習環境

    • 様々なスペックの VM
    • 自動スケールアップ・ダウン
    • ジョブ、スケジュール管理
    • ライブラリ・データの自動準備
    • 低優先度オプション(スポット VM)
  • 推論環境

    • 推論クラスタの実体は、AKS らしい。
    • 推論クラスタではない環境として、ローカル(Compute Instance)、
      ACI などもあるもよう。
    • デプロイ後は WebAPI として使用できる(ACI でも AKS でも認証が使えるようになっている)。
  • Azure Databricks と同じクォータ制限がある
    (ただし、ワークスペース単位に設定可能)。

補足(コストの要点): Azure ML で最も費用に効くのが Compute である。

種類 課金 注意点
Compute Instance 起動している間ずっと(VM 料金) 止め忘れが最大の事故。自動シャットダウンを設定する
Compute Cluster ジョブ実行中のみ(最小ノード数を 0 にした場合) 最小ノード数を 0 にするのが定石
推論エンドポイント 常時稼働 使わないなら削除する

Compute Instance は個人に紐づく開発環境なので、
「作った人が休みの間ずっと課金される」ことになりやすい。
Azure PolicyAzure Alerts
検知する仕組みを併せて用意しておくとよい。

補足(最新化): 推論環境は現在、
マネージド オンライン エンドポイントが推奨されており、
AKS / ACI を自前で用意する必要がなくなっている。

Datasets

(データの登録・管理)

  • データの選択

    • アップロード
    • ダウンロード
    • ストレージから選択
    • オープンデータから選択
  • スキーマの設定

Models

(モデル管理)

その他の機能

MLOps

補足: DevOps の考え方を機械学習に適用したもの。
モデルの学習 → 評価 → 登録 → デプロイ → 監視 → 再学習という
サイクルを自動化・再現可能にする。

通常の DevOps と違うのは、コードだけでなくデータとモデルも
バージョン管理と再現性の対象になる
点である。
また、モデルは時間とともに劣化する(データ ドリフト)ため、
「デプロイして終わり」にならず、監視と再学習が前提になる。

責任ある ML

補足: Responsible AI の実装。Azure ML には
責任ある AI ダッシュボードがあり、

  • 解釈可能性(なぜその予測になったか)、
  • 公平性(属性による偏りがないか)、
  • 誤差分析(どのようなデータで間違えるか)、
  • 因果推論・反実仮想

といった観点でモデルを検査できる。
「精度が高い」だけでは本番投入できない、という要求への対応である。

オープン&相互運用性

  • モデル

    • PyTorch
    • TensorFlow
    • scikit-learn
    • XGBoost
    • LightGBM
  • 言語やフレームワーク

モデルの他環境への展開

ONNX(DNET_DeepLearning.md)、RevoScaleR でエッジなどへ展開できる。

補足(ONNX の意義): ONNX (Open Neural Network Exchange)
学習済みモデルの共通フォーマットである。

PyTorch で学習 ──▶ [ ONNX ] ──▶ C# アプリで推論(ONNX Runtime)
TensorFlow で学習 ─┘             エッジ デバイスで推論
                                 SQL Server の PREDICT で推論

「学習は Python、推論は .NET」という構成が取れるのは、
この仕組みがあるため。
ML.NET も ONNX モデルを読み込んで推論できる。

補足

チュートリアル(MS_AzureMachineLearningTutorial.md

アルゴリズム・モデル(MS_AzureMachineLearningAlgorithms.md

モデルのデプロイ(MS_AzureMachineLearningDeploy.md

参考

Qiita

YouTube

Tech Briefing: Azure Machine Learning

microsoft.com

Microsoft Azure

Microsoft Learn

Learn

機能

GitHub

Machine Learning Best Practices

https://azure.github.io/machine-learning-best-practices

Machine-Learning-Collection

https://github.com/aladdinpersson/Machine-Learning-Collection


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

NetDevInfraWiki

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

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally