-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureMachineLearning
- 戻る
- .NET開発 > DX系 > AI > ML.NET
-
AzureのAI系サービス
- Azure Machine Learning
- Azure Databricks
- Azure Cognitive Services
- Azure OpenAI Service(
MS_AzureOpenAIService.md) - Azure Applied AI Services(
MS_AzureAppliedAIServices.md) - Azure AI インフラストラクチャ(
MS_AzureAIInfrastructure.md)
-
機械学習モデルを構築、トレーニング、デプロイが可能なプラットフォーム
-
様々な機能で専門的な知識を必要とするデータサイエンスを
エンジニアリングに落としている。- Notebook により機械学習プロセスの設計・実装と実行をする機能
- GUI、マウス操作で機械学習プロセスを設計・実行する機能
- 機械学習プロセス設計の煩雑さを自動化によって解消する AutoML 機能
補足(3 つの入口という設計): 本ページの要点は、
同じことを 3 通りのやり方で実現できるという構成にある。難しい ◀────────────────────────────────▶ 易しい [ Notebooks ] [ Designer ] [ Automated ML ] コードで書く GUI で組む 設定するだけ 自由度:高 自由度:中 自由度:低上達するほど左に寄るのではなく、
問題の性質で使い分けるのが正しい。
定型的な予測なら AutoML で十分な精度が出ることも多く、
そこから始めて足りなければ左に移る、という進め方が効率的である。
- 機械学習のモデルのトレーニングやデプロイに用いるすべてのリソースを管理する場所。
- 様々な PaaS と連携して動いている。その他、様々なリソースやアセットを持つ。
補足: ワークスペースを作ると、
ストレージ アカウント、Key Vault、
Application Insights、Container Registry
が併せて作成される(または既存のものを指定する)。
「様々な PaaS と連携して動いている」とはこの意味で、
削除するときはこれらも残る点に注意が要る。
-
実験
機械学習のモデル構築のためにトレーニングを行うことを指す。 -
実行
- 実験に関する実行は、スクリプトを 1 回行うこと。
- メタデータ、メトリック、出力ファイル、スナップショットなどが記録される。
-
実行構成
実行方法を定義した命令。 -
スナップショット
実行時にスクリプトに含まれているファイルが実行レコードに保存される。
補足(なぜ実行を記録するのか): 機械学習では
**「あのとき精度が良かったモデルを再現できない」**という事故が起きやすい。
コード、データ、パラメータ、乱数シードのどれか 1 つ違えば結果が変わるためである。実行のたびにスナップショット(コード)とメトリック(結果)を
自動で残すのは、この再現性の問題への対処であり、
Azure Databricks の MLflow と同じ動機を持つ
(実際、現在の Azure ML は MLflow 互換である)。
-
TensorFlow、PyTorch、Scikit-learn(
DNET_ScikitLearn.md)、Chainer
のような、外部のフレームワークを使うことができる。 -
ワークスペース内の学習モデルは、モデルレジストリで追跡可能
- クラウド上の Web サービス、IoT をエンドポイントとして指定
- 指定したエンドポイントにモジュールをデプロイする。
移行メモ(誤字): 原文の「措定したエンドポイント」は
指定したの誤変換と判断し修正した。
-
Azure Machine Learning 開発者向け Web ポータル
-
UI としては、言語(Python、R)と GUI があり、Studio は GUI に相当する。
-
ただ、言語(Python、R)だけでは完結しないので、
言語を使用するときも Studio を併用する必要があるらしい。 -
ただし、言語を使用しないケースでは、Studio だけで完結できる。
2015 年にリリースされた Azure Machine Learning Studio が先行して GUI 環境を実現。
-
ドラッグ アンド ドロップ機械学習ビルダー
-
コード・ファーストが存在しなかった。
-
Azure Machine Learning と相互運用できない。
-
2024 年 8 月 31 日に終了
-
2021 年 12 月 1 日以降、新しいリソースは作成できない。
補足: 予告どおり Studio (classic) は 2024 年 8 月末に終了した。
「相互運用できない」という原文の指摘のとおり、
classic の資産は自動移行できず、
Designer で作り直す必要があった点が移行時の課題になった。
以下のような構成になっている。
-
Auther(作成者)
-
Assets(資産)
- Datasets(データの登録・管理)
- Experiments(実験記録)
- Pipelines(データパイプライン)
- Models(モデル管理)
- Endpoints(エンドポイント管理)
-
Manage(環境・データの管理)
- Compute(計算環境)
- Datastores(データソース)
- Data Labeling(ラベリング)
-
(自動機械学習)
-
所謂一つの Auto ML(
DNET_MachineLearning.md) -
データから最高のモデルを探索
-
-
GUI で設定する場合、コードで設定する場合がある。
(コードで設定する場合は Notebooks から行う。) -
自動実行前の、ユーザ入力
- 実験名を設定
- コンピューターの選択(計算環境の設定)
- データセットの選択
- 目的変数の選択
- タスク選択・構成
- 種類(クラス分類、回帰、時系列予測)
- 精度指標、アルゴリズム制限、学習時間、検証方法
-
ユーザ入力後、
以下の学習と評価を自動実行する。-
特徴量エンジニアリング
- 特徴量の手動選択も可能
- 欠損データ補完方法を選択可能
-
モデルとモデルを作成するアルゴリズムの選択
-
作成されたモデルの(ハイパーパラメタ)チューニング
-
モデルのリーダーボード(ランキング的な)と解釈
-
-
実行結果の確認
- 実行 ID をクリック
- 以下のタブからチェック可能
- 詳細
実行 ID の詳細情報 - データ ガードレール
データの品質をチェックできる。 - モデル
モデルをチェックできる。
・モデルのリーダーボード
・個別のモデルの概要、説明、メトリック
・, etc.
- 詳細
-
モデルを推論環境にデプロイして推論(リアルタイム or バッチ)
補足(AutoML の実像と限界): AutoML は「ボタンを押せば
良いモデルができる」ものではない。実際には、
- データの品質(欠損、偏り、リーク)が結果をほぼ決める、
- 目的変数とタスクの選択を間違えると意味のない結果が出る、
- 時間制限を短くすると探索が不十分になる、
という点で人の判断が要る。
原文が挙げているデータ ガードレールは、まさに
「そのデータで学習してよいか」を機械的に警告する機能であり、
AutoML を使ううえで最初に見るべきタブである。なお、データ リーク(目的変数の情報が説明変数に混入すること)は
AutoML でも自動検出しきれない。
「精度が異様に高い」ときは、まずこれを疑うこと。
-
(GUI 機械学習)
-
Automated ML(自動機械学習)より若干難しい。
-
マウス操作でパイプライン構築できる。
-
-
パイプライン構築
-
テンプレートを選択
0から設計するか、テンプレートを選択してカスタマイズする。 -
パイプラインの構成
-
特徴量エンジニアリング
・特徴量の手動選択も可能
・欠損データ補完方法を選択可能 -
データ分割(学習:テスト=7:3)
-
モデル作成アルゴリズムの選択
(回帰、分類、クラスタリング) -
モデルの学習
-
モデルのスコア付け
-
モデルの評価
-
パイプラインの実行
- コンピューターの選択(計算環境の設定)
- 実験名を設定 or 選択し実験を開始。
-
-
実行結果の確認
- 実行 ID をクリック
- 以下のタブからチェック可能
- グラフ
- 手順
- , etc.
-
モデルを推論環境にデプロイして推論(リアルタイム or バッチ)
-
また、Designer で作成したモノを Notebooks で使えるコードにエクスポート可能。
-
(コーディング環境)
-
以下のファイルの管理
(ストレージにホストされる)- Jupyter Notebook(
DNET_PySpark.md) - Python、R、スクリプト
- Jupyter Notebook(
-
ファイルを作成 or 選択して
- サンプルも用意されていて、
これをファイル管理下にクローンできる。 - また、GitHub 上のコードを
ファイル管理下にクローンできる。
(Jupyter → Terminal で git clone コマンド実行)
- サンプルも用意されていて、
-
コーディング
- Jupyter Notebook 風インターフェイス
- Visual Studio Code
-
-
パイプライン構築
-
テンプレートを選択
0から設計・実装するか、テンプレートを選択してカスタマイズする。 -
パイプラインの構成
コーディングによってパイプラインを構成する。 -
パイプラインの実行
- コンピューターの選択(計算環境の設定)
- 実験名は SDK を使用したコーディングで設定する。
- Notebook を実行
-
-
実行結果の確認
- 標準出力で確認
- SDK を使って確認
-
モデルを推論環境にデプロイして推論(リアルタイム or バッチ)
(計算環境)
-
Compute Instance
≒ ローカル環境(開発・学習・推論で利用可能)- R Studio
- Jupyter/JupyterLab(
DNET_IDE.md)(Web ブラウザ上で開く) - Visual Studio Code(ローカルで開く)
※ Notebooks(コーディング環境)管理下のファイルを使う。
※ 各種の SDK、Azure Machine Learning Python SDK もインストール済み。 -
Compute Clusters
≒ 学習環境- 様々なスペックの VM
- 自動スケールアップ・ダウン
- ジョブ、スケジュール管理
- ライブラリ・データの自動準備
- 低優先度オプション(スポット VM)
-
推論環境
-
Azure Databricks と同じクォータ制限がある
(ただし、ワークスペース単位に設定可能)。
補足(コストの要点): Azure ML で最も費用に効くのが Compute である。
種類 課金 注意点 Compute Instance 起動している間ずっと(VM 料金) 止め忘れが最大の事故。自動シャットダウンを設定する Compute Cluster ジョブ実行中のみ(最小ノード数を 0 にした場合) 最小ノード数を 0 にするのが定石 推論エンドポイント 常時稼働 使わないなら削除する Compute Instance は個人に紐づく開発環境なので、
「作った人が休みの間ずっと課金される」ことになりやすい。
Azure Policy や Azure Alerts で
検知する仕組みを併せて用意しておくとよい。補足(最新化): 推論環境は現在、
マネージド オンライン エンドポイントが推奨されており、
AKS / ACI を自前で用意する必要がなくなっている。
(データの登録・管理)
-
データの選択
- アップロード
- ダウンロード
- ストレージから選択
- オープンデータから選択
-
スキーマの設定
(モデル管理)
-
Notebooks(コーディング環境)と Python などを
使用して開発したモデルを登録できる。
補足: DevOps の考え方を機械学習に適用したもの。
モデルの学習 → 評価 → 登録 → デプロイ → 監視 → 再学習という
サイクルを自動化・再現可能にする。通常の DevOps と違うのは、コードだけでなくデータとモデルも
バージョン管理と再現性の対象になる点である。
また、モデルは時間とともに劣化する(データ ドリフト)ため、
「デプロイして終わり」にならず、監視と再学習が前提になる。
補足: Responsible AI の実装。Azure ML には
責任ある AI ダッシュボードがあり、
- 解釈可能性(なぜその予測になったか)、
- 公平性(属性による偏りがないか)、
- 誤差分析(どのようなデータで間違えるか)、
- 因果推論・反実仮想、
といった観点でモデルを検査できる。
「精度が高い」だけでは本番投入できない、という要求への対応である。
ONNX(DNET_DeepLearning.md)、RevoScaleR でエッジなどへ展開できる。
- エッジ
- SQL Server(PREDICT 関数)
- Azure Synapse
- Azure Stream Analytics
- Azure Databricks
補足(ONNX の意義): ONNX (Open Neural Network Exchange) は
学習済みモデルの共通フォーマットである。PyTorch で学習 ──▶ [ ONNX ] ──▶ C# アプリで推論(ONNX Runtime) TensorFlow で学習 ─┘ エッジ デバイスで推論 SQL Server の PREDICT で推論「学習は Python、推論は .NET」という構成が取れるのは、
この仕組みがあるため。
ML.NET も ONNX モデルを読み込んで推論できる。
-
Microsoft Azure / Azure Machine Learning とは
https://www.ossnews.jp/oss_info/Azure_Machine_Learning -
Azure Machine Learning Studio による機械学習入門
|コラム|クラウドソリューション|サービス|法人のお客さま|NTT東日本
https://business.ntt-east.co.jp/content/cloudsolution/column-75.html -
Azure Machine Learning とは?用語や Studio との違いなどを解説
https://www.cloud-for-all.com/blog/what-is-azure-machine-learning.html
-
クラウド時代の最強機械学習プラットフォーム
Azure Machine Learning まとめ
https://qiita.com/aical/items/2fbc8814d4eb24e316c9 -
Amazon SageMaker と Azure ML における機械学習モデルのサービング技術比較
-
Azure Machine Learning 概要
https://www.youtube.com/watch?v=FstdNRDHrxQ -
AutoML & Designer 概要
https://www.youtube.com/watch?v=0nGdTPJvjDI -
Synapse Analytics 連携
https://www.youtube.com/watch?v=eUBgLY5LwrI
- Azure Machine Learning - サービスとしての ML
https://azure.microsoft.com/ja-jp/products/machine-learning/
-
Azure Machine Learning のドキュメント
https://learn.microsoft.com/ja-jp/azure/machine-learning/ -
Azure Machine Learning とは
https://learn.microsoft.com/ja-jp/azure/machine-learning/overview-what-is-azure-machine-learning -
Azure Machine Learning スタジオとは
https://learn.microsoft.com/ja-jp/azure/machine-learning/overview-what-is-azure-machine-learning#studio
- Introduction to Azure Machine Learning
https://learn.microsoft.com/ja-jp/training/paths/create-machine-learn-models/
- 自動機械学習 (AutoML) とは
https://learn.microsoft.com/ja-jp/azure/machine-learning/concept-automated-ml - Azure Machine Learning デザイナーとは
https://learn.microsoft.com/ja-jp/azure/machine-learning/concept-designer
https://azure.github.io/machine-learning-best-practices
https://github.com/aladdinpersson/Machine-Learning-Collection
Tags: 移行, クラウド, BI/AI, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。