Azure Machine Learning を使用してモデルをトレーニングする

適用対象: Python SDK azure-ai-ml v2 (現行)

Azure Machine Learning には、SDK を使用したコード ファースト ソリューションから、自動機械学習やビジュアル デザイナーなどのコーディングの少ないソリューションまで、モデルをトレーニングするためのいくつかの方法が用意されています。 次の一覧を使用して、ご自身にどのトレーニング方法が適しているかを判断してください。

  • Azure Machine Learning SDK for Python:Python SDK には、モデルをトレーニングするためのいくつかの方法が用意されており、それぞれに異なる機能があります。

    トレーニング方法 説明
    command() モデルをトレーニングする一般的な方法は、トレーニング スクリプト、環境、コンピューティング情報を含む command() を送信することです。
    自動機械学習 自動機械学習を使用すると、データ サイエンスやプログラミングに関する豊富な知識がなくてもモデルをトレーニングすることができます。 データ サイエンスとプログラミングの経験がある人に対しては、アルゴリズムの選択とハイパーパラメーターのチューニングを自動化することによって時間とリソースを節約する手段が提供されます。 自動機械学習を使用する場合、ジョブ構成の定義について心配する必要はありません。
    機械学習パイプライン パイプラインは別のトレーニング方法ではなく、モジュール型の再利用可能な手順を使用してワークフローを定義する方法であり、トレーニングをワークフローの一部として含めることができます。 機械学習パイプラインでは、自動機械学習と実行構成を使用したモデルのトレーニングがサポートされています。 パイプラインはトレーニングに明示的に重点を置いていないため、パイプラインを使用する理由は、他のトレーニング方法と大きく異なります。 一般に、以下の場合にパイプラインを使用できます。
    * 実行時間の長いトレーニング ジョブやデータ準備など、無人プロセスをスケジュール設定する
    * 異種コンピューティング リソースとストレージの場所全体で調整された複数の手順を使用する。
    * 再トレーニングやバッチ スコアリングなどの特定のシナリオ向けにパイプラインを再利用可能なテンプレートとして使用する。
    * ワークフローのデータソース、入力、出力を追跡してバージョン管理する
    * ワークフローが、特定の手順で個別に作業するさまざまなチームによって実装される。 その後、手順をパイプラインに結合して、ワークフローを実装できます。
  • デザイナー: Azure Machine Learning デザイナーでは、概念実証を構築するため、またはコーディングの経験がほとんどないないユーザーのために、機械学習への簡単なエントリポイントが用意されています。 これにより、ドラッグ アンド ドロップ Web ベース UI を使用してモデルをトレーニングできます。 Python コードを設計の一部として使用したり、コードを記述せずにモデルをトレーニングしたりすることができます。

  • Azure CLI: 機械学習 CLI には Azure Machine Learning を使用した一般的なタスク用のコマンドが用意されており、多くの場合、スクリプト作成とタスクの自動化に使用されます。 たとえば、トレーニング スクリプトまたはパイプラインを作成した後、スケジュールに基づいて、またはトレーニングに使用するデータ ファイルが更新されたときに、Azure CLI を使用してトレーニングのジョブを開始することができます。 トレーニング モデルの場合は、トレーニング ジョブを送信するコマンドが用意されています。 実行構成またはパイプラインを使用してジョブを送信できます。

これらの各トレーニング方法では、トレーニング用にさまざまな種類のコンピューティング リソースを使用できます。 これらのリソースをまとめて、コンピューティング先と呼びます。 コンピューティング先は、ローカル マシンでも、Azure Machine Learning コンピューティング、Azure HDInsight、リモート仮想マシンなどのクラウド リソースでもかまいません。

Python SDK

Python 用 Azure Machine Learning SDK では、Azure Machine Learning を使用して、機械学習のワークフローをビルドして実行できます。 対話型の Python セッション、Jupyter Notebook、Visual Studio Code、またはその他の IDE からサービスと対話できます。

コマンドを送信する

Azure Machine Learning の汎用トレーニング ジョブは、command() を使って定義できます。 その場合、コマンドがトレーニング スクリプトと共に使われて、指定したコンピューティング先でモデルがトレーニングされます。

ローカル コンピューター用のコマンドから始めて、必要に応じてクラウドベースのコンピューティング先に切り替えることができます。 コンピューティング先を変更する場合は、使用するコマンドのコンピューティング パラメーターのみを変更します。 実行によって、入力、出力、ログなどのトレーニング ジョブに関する情報もログに記録されます。

自動化された機械学習

イテレーション、ハイパーパラメーターの設定、特徴付け、その他の設定を定義します。 トレーニング中、Azure Machine Learning では、さまざまなアルゴリズムとパラメーターが並列に試行されます。 トレーニングは、定義した終了基準が満たされると終了します。

ヒント

Python SDK に加えて、Azure Machine Learning Studio を通じて自動 ML を使用することもできます。

機械学習パイプライン

機械学習パイプラインでは、前述のトレーニング方法を使用できます。 パイプラインは、ワークフローの作成だけに関するものではないため、モデルのトレーニング以外のものも含まれます。

トレーニング ジョブを送信したときの動作を理解する

Azure トレーニング ライフサイクルは次の要素で構成されています。

  1. プロジェクト フォルダー内のファイルを圧縮し、クラウドにアップロードします。

    ヒント

    不要なファイルがスナップショットに含まれないようにするには、無視ファイル (.gitignore または .amlignore) を作成します。 除外するファイルとディレクトリをこのファイルに追加します。 このファイル内で使用する構文の詳細については、.gitignore構文とパターンを参照してください。 .amlignore ファイルでは同じ構文を使用します。 "両方のファイルが存在する場合は、.amlignore ファイルが使用され、.gitignore ファイルは使用されません。 "

  2. コンピューティング クラスター (またはサーバーレス コンピューティング) のスケールアップ

  3. Dockerfile のビルドまたは計算ノードへのダウンロード

    1. システムにより、次のハッシュが計算されます。
    2. システムでは、ワークスペース Azure Container Registry (ACR) の検索で、このハッシュがキーとして使用されます
    3. 見つからない場合、グローバル ACR で一致するものが検索されます
    4. 見つからない場合、システムでは新しいイメージがビルドされます (これはキャッシュされ、ワークスペース ACR に登録されます)
  4. 計算ノード上の一時記憶域への圧縮されたプロジェクト ファイルのダウンロード

  5. プロジェクト ファイルの解凍

  6. python <entry script> <arguments> を実行する計算ノード

  7. ログ、モデル ファイル、./outputs に書き込まれたその他のファイルの、ワークスペースに関連付けられているストレージ アカウントへの保存

  8. 一時記憶域の削除など、コンピューティングのスケールダウン

Azure Machine Learning デザイナー

デザイナーを使用すると、Web ブラウザーでドラッグ アンド ドロップ インターフェイスを使用してモデルをトレーニングできます。

Azure CLI

機械学習 CLI は、Azure CLI 用の拡張機能です。 Azure Machine Learning を操作するためのクロスプラットフォーム CLI コマンドが提供されます。 通常は、CLI を使用して、機械学習モデルのトレーニングなどのタスクを自動化します。

VS Code

VS Code 拡張機能を使用して、トレーニング ジョブを実行および管理できます。 詳細については、VS Code リソース管理の攻略ガイドに関するページをご覧ください。

次のステップ

チュートリアルで、Jupyter ノートブックで Python SDK v2 を使って運用 ML パイプラインを作成する方法を理解します。