AI-300 · LESSON 1
MLOps インフラストラクチャの設計と実装15–20% · 3項目
Azure Machine Learning のワークスペースを中心に、計算資源・データ・環境などの資産を整え、Bicep などのコード(IaC)で再現可能に構築する方法を学びます。
1.1ワークスペースのリソースを作成・管理する
Create and manage resources in a Machine Learning workspace
概念
ワークスペースは Azure Machine Learning の作業の単位で、学習・デプロイ・資産をまとめて管理します。作成時に Storage アカウント、Key Vault、Application Insights、Container Registry が関連付けられます。計算資源にはコンピューティングインスタンス(個人の開発用 VM)、コンピューティングクラスター(ジョブ用に自動でスケール)、サーバーレスコンピューティング(クラスターを管理せずにジョブを実行)があります。
仕組み・手順
- ワークスペースを作成し、関連リソース(Storage・Key Vault・ACR・Application Insights)を確認する
- 開発者ごとにコンピューティングインスタンスを用意し、アイドル時の自動シャットダウンを設定する
- ジョブ用にコンピューティングクラスターを作り、最小ノード数 0・最大ノード数を設定してコストを抑える(またはサーバーレスを使う)
- マネージド仮想ネットワーク(インターネット送信の許可・承認済みのみ)とプライベートエンドポイントで閉域化する
- Azure RBAC(AzureML データサイエンティストなど)で権限を最小にする
業務での例
分析チーム 5 人が共通のワークスペースを使い、各自のコンピューティングインスタンスは 30 分のアイドルで停止、学習ジョブは最小 0 ノードのクラスターで実行して夜間の費用をゼロにする。
紛らわしい点・試験の注意
- コンピューティングインスタンスは個人の開発用で、大規模な並列学習には向かない(ジョブはクラスターかサーバーレス)
- 最小ノード数を 1 以上にすると、使っていない間も課金される
- マネージド VNet の「承認済みの送信のみ」では、必要な外部の送信先を明示的に許可する
ミニクイズ
Q1. Azure Machine Learning で、学習用ジョブを必要な時だけ複数ノードで実行し、使わない時は費用を抑えたい。適切なコンピューティングはどれか。
- 常時起動の GPU 付きコンピューティングインスタンスを、ジョブの数だけ用意する
- 最小ノード数を最大ノード数と同じにしたコンピューティングクラスター
- サーバーレス Spark コンピューティングで学習ジョブを実行する
- 最小ノード数を 0 に設定した自動スケールのコンピューティングクラスター
答えと解説を見る
正解:D 最小ノード数を 0 に設定した自動スケールのコンピューティングクラスター
クラスターは負荷に応じてスケールし、最小 0 なら待機中の費用を抑えられる。 【他の選択肢】インスタンスは単一ノードで常時課金される。最小ノード数を最大と同じにすると待機中も課金される。サーバーレス Spark はデータ処理向けで、複数ノードの学習ジョブの選択肢ではない。
Q2. 学習時と推論時でライブラリのバージョン差異による不具合が起きた。再現性を高めるために使うべきものはどれか。
- 依存関係とイメージを定義した環境(Environment)
- コンピューティングインスタンスの既定の Python カーネル
- 学習スクリプトの先頭で pip install する処理
- ジョブごとに指定する最新の キュレーション環境
答えと解説を見る
正解:A 依存関係とイメージを定義した環境(Environment)
環境を定義・バージョン管理すると、学習と推論で同じ依存関係を使える。 【他の選択肢】実行時の pip install はバージョンが固定されない。インスタンスのカーネルは推論時に再現されない。毎回最新の環境ではバージョン差異を防げない。
参考リンク
1.2ワークスペースの資産を作成・管理する
Create and manage assets in a Machine Learning workspace
概念
資産(アセット)は、データ資産・環境・コンポーネント・モデルなど、再利用できる版付きの部品です。データストアは Blob や ADLS Gen2 への接続情報、データ資産はその中の特定のデータ(uri_file・uri_folder・mltable)を名前と版で参照します。環境は Docker イメージと conda の依存関係の組です。
仕組み・手順
- データストアを登録する(ID ベースのアクセスを推奨し、資格情報の埋め込みを避ける)
- データ資産を名前と版で登録し、ジョブからは azureml:name:version で参照する
- キュレーション済み環境か、独自の環境(Dockerfile・conda.yml)を版付きで登録する
- 前処理・学習などをコンポーネントとして登録し、パイプラインで再利用する
業務での例
毎月のデータを sales-data の版 2026.10 として登録し、どのモデルがどのデータの版で学習されたかを追跡できるようにする。
紛らわしい点・試験の注意
- データストアは「接続」、データ資産は「データそのものへの参照」。混同しやすい
- 表形式で読み込みのスキーマを定義したい場合は mltable
- 環境の版を固定しないと、ライブラリの更新で再現性が失われる
ミニクイズ
Q1. データストアとデータ資産の関係の説明として正しいものはどれか。
- データストアはバージョン管理された参照、データ資産はストレージアカウントの接続設定
- データ資産はストレージの認証情報を保持し、データストアはデータそのものを複製して持つ
- データストアはストレージへの接続情報、データ資産はデータへのバージョン管理可能な参照
- データストアとデータ資産は同じもので、ジョブの YAML での呼び方が違うだけである
答えと解説を見る
正解:C データストアはストレージへの接続情報、データ資産はデータへのバージョン管理可能な参照
接続(データストア)と参照(データ資産)を分けることで、資格情報を露出せずにデータを扱える。 【他の選択肢】データ資産は認証情報を持たず、データストアはデータを複製しない。2 つ目は役割が逆。両者は異なる概念である。
Q2. 開発ワークスペースで作ったモデルと環境を、本番ワークスペースでも使いたい。適切な方法はどれか。
- 開発ワークスペースのデータストアを本番からも参照させる
- レジストリを使ってワークスペース間で資産を共有する
- 本番ワークスペースで同じデータを使ってモデルを再学習する
- モデルをダウンロードし、本番ワークスペースへ手動で登録する
答えと解説を見る
正解:B レジストリを使ってワークスペース間で資産を共有する
レジストリはワークスペースをまたいだ資産共有の仕組み。 【他の選択肢】再学習では同一のモデルにならない。手動の登録は系譜が途切れる。データストアの共有ではモデルと環境を受け渡せない。
参考リンク
1.3Machine Learning の IaC を実装する
Implement IaC for Machine Learning
概念
Infrastructure as Code(IaC)は、ワークスペースや計算資源をコードで定義し、同じ構成を何度でも作れるようにする方法です。Azure では Bicep・ARM テンプレート・Terraform、ML の資産は Azure CLI の ml 拡張(v2)の YAML や Python SDK v2 で定義します。
仕組み・手順
- ワークスペース・ネットワーク・計算資源を Bicep で定義し、Git で管理する
- 開発・テスト・本番の環境ごとにパラメータファイルを分ける
- ジョブ・環境・エンドポイントを YAML で定義し、az ml コマンドで作成する
- GitHub Actions や Azure Pipelines から、サービスプリンシパルやワークロード ID フェデレーションで認証して適用する
業務での例
本番のワークスペースへの変更は必ずプルリクエストのレビューを通し、パイプラインから Bicep をデプロイして手作業の設定の差分をなくす。
紛らわしい点・試験の注意
- ポータルでの手作業の変更は IaC と差分が生じる(ドリフト)
- CLI v1(azureml 拡張)と v2(ml 拡張)は別物。試験は v2 の YAML の考え方
- シークレットはコードに書かず Key Vault や GitHub のシークレットを使う
ミニクイズ
Q1. ワークスペースと関連リソースの作成を、毎回同じ構成で再現したい。適切な方法はどれか。
- Bicep テンプレートと Azure CLI で定義し、GitHub Actions で自動実行する
- Python SDK のノートブックで作成し、セルの出力を記録として残す
- ポータルで作成した後に ARM テンプレートをエクスポートし、手順書に添付する
- Azure CLI のコマンドを担当者が手順書に従って毎回手で実行する
答えと解説を見る
正解:A Bicep テンプレートと Azure CLI で定義し、GitHub Actions で自動実行する
IaC で定義すると構成の差異がなくなり、レビューと変更履歴も残る。 【他の選択肢】エクスポートした ARM テンプレートは記録で、継続的な再現の仕組みではない。手作業やノートブックの実行は同じ構成の再現を保証しない。
Q2. フェデレーション資格情報(OIDC)を設定する際に、Entra ID 側で信頼の条件として指定するものとして最も適切なものはどれか。
- GitHub の組織・リポジトリ・ブランチや環境(subject)
- GitHub 利用者のユーザー名と個人アクセストークン
- ワークフローを実行するランナーの IP アドレス
- ワークフローの YAML ファイルの名前と、実行するジョブの名前
答えと解説を見る
正解:A GitHub の組織・リポジトリ・ブランチや環境(subject)
フェデレーション資格情報では、どのリポジトリ・ブランチ・環境から来たトークンを信頼するか(subject)を指定する。 【他の選択肢】フェデレーション資格情報は subject(リポジトリやブランチ、環境)で信頼を決める。ファイル名や IP、個人のトークンは条件にしない。
参考リンク
レッスンは当サイトがMicrosoft Learn の公開ページをもとに独自に作成したもので、試験の内容を保証するものではありません。製品の仕様は変わることがあるため、参考リンク先の最新情報を確認してください。
ご利用上の注意(非公式・独自問題・合格保証なし)
- 本サイトの問題は、公式に公開されているスキル概要・試験ガイドをもとに当サイトが独自に作成した練習問題であり、実際の試験問題ではありません。
- Microsoft、Azure、Copilot、Microsoft 365、Dynamics 365、Power Platform は Microsoft グループの商標です。本サイトは Microsoft と提携しておらず、Microsoft による承認・推奨を受けたものではありません。
- 本コンテンツは学習の補助であり、合格を保証するものではありません。試験の内容・形式・前提条件は予告なく変更されます。受験前に必ず公式ページで最新情報を確認してください。
- 本模擬試験の正答率は、公式試験の換算(スケール)スコア(合格 700)とは換算できず、合否を予測するものではありません。
- 未ログイン時の進捗はこのブラウザ内(localStorage)に保存します。Google でログインすると学習記録をアカウントに同期します。端末内の記録とサーバー上の記録は別に削除します。詳しくは保存・同期の説明とCookie・保存設定をご確認ください。