PowerShellでAzure Machine Learningワークスペースを自動作成するスクリプト例

目次

導入文章


Azure Machine Learningは、データサイエンティストや開発者が機械学習モデルを効率的に作成、トレーニング、デプロイできるクラウドベースのサービスです。Azure環境を利用すれば、複雑な計算やデータ処理をスケーラブルに実行することができます。しかし、プロジェクトを開始するにはまずAzure Machine Learningのワークスペースを作成し、その設定を整える必要があります。
手動で設定を行うこともできますが、繰り返し行う作業を自動化すれば効率的に作業を進めることができます。
本記事では、PowerShellを活用してAzure Machine Learningワークスペースを自動作成する方法を、実際のスクリプト例とともに解説します。これにより、プロジェクト開始の手間を大幅に削減し、機械学習環境を素早く準備できるようになります。

PowerShellの基本とAzureとの連携


PowerShellは、Windows環境をはじめとしたさまざまなプラットフォームで使用できる強力なコマンドラインインターフェイスです。特にシステム管理や自動化スクリプトに適しており、クラウド環境の管理にも広く利用されています。Azureとの連携においても、PowerShellは非常に便利なツールであり、Azureリソースの作成や管理を効率的に行うことができます。

PowerShellとAzureの連携方法


AzureをPowerShellで操作するためには、まず「Azure PowerShell」モジュールをインストールする必要があります。このモジュールは、Azureリソースを管理するためのコマンドレット(cmdlet)を提供し、Azureサービスへのアクセスを可能にします。

Azure PowerShellのインストール


以下のコマンドで、Azure PowerShellをインストールできます:

Install-Module -Name Az -AllowClobber -Force -Scope CurrentUser

このコマンドを実行すると、Azure PowerShellモジュールがインストールされ、Azureのリソースを管理できるようになります。

Azureへのログイン


Azureリソースにアクセスするためには、Azureアカウントでログインする必要があります。以下のコマンドでログインを行います:

Connect-AzAccount

このコマンドを実行すると、ブラウザでAzureのログイン画面が表示され、必要な認証情報を入力することでPowerShellからAzureに接続できます。

サブスクリプションの選択


複数のAzureサブスクリプションを所有している場合、以下のコマンドで使用するサブスクリプションを選択できます:

Set-AzContext -Subscription "Your Subscription Name"

これにより、選択したサブスクリプションに関連するリソースを管理することができます。

Azureリソースの確認


Azure PowerShellを使って、サブスクリプション内のリソースを確認することもできます。例えば、サブスクリプション内のすべてのリソースグループを確認するには、以下のコマンドを使用します:

Get-AzResourceGroup

これにより、リソースグループの一覧が表示され、現在のAzure環境に存在するリソースを確認できます。

PowerShellとAzureの連携により、手動で行う作業をスクリプト化し、自動化することが可能になります。これから紹介するAzure Machine Learningワークスペースの作成スクリプトも、PowerShellを活用して効率的に管理できるようになります。

Azure CLIとPowerShellの違い


Azureリソースの管理には、主にAzure CLI(Command-Line Interface)とAzure PowerShellの2つのツールが使われます。どちらも強力なコマンドラインツールであり、Azureの操作をスクリプト化することができますが、それぞれに特徴があり、用途に応じて使い分けることが重要です。

Azure CLIの特徴


Azure CLIは、主にクロスプラットフォームで使用可能なコマンドラインツールです。Linux、macOS、Windowsで動作し、CLIコマンドはシンプルで直感的に使用できます。特に、シェルスクリプトやCI/CDのパイプラインでよく使用されます。Azure CLIは、主にAzureのリソースを作成・管理するためのコマンドを提供しており、特に以下のような用途に適しています:

  • クロスプラットフォームでの使用
  • シェルスクリプトやCI/CDでの自動化
  • シンプルで直感的なコマンド

Azure PowerShellの特徴


Azure PowerShellは、Windows PowerShell環境を基盤にしたコマンドレット(cmdlet)を使用するツールで、Azureリソースの管理を行います。特に、Windows環境で作業している場合や、PowerShellスクリプトの自動化が必要な場合に強力です。Azure PowerShellは、次のような特徴があります:

  • PowerShellスクリプトとの統合が容易
  • Windows環境との親和性が高い
  • 複雑なリソース管理や設定の自動化に優れている

スクリプトの自動化と拡張性


Azure PowerShellは、PowerShellスクリプトの機能を活かしてより複雑な自動化を行う際に非常に有効です。特に、条件分岐やループ、カスタム関数を組み合わせて高度な処理を実行することができます。Azure CLIは、比較的シンプルな操作には便利ですが、PowerShellの柔軟さには及びません。

選ぶべきツールはどちらか


Azure CLIとAzure PowerShellはどちらも優れたツールですが、どちらを選ぶべきかは次のような基準で決めると良いでしょう:

  • クロスプラットフォームで作業する場合 → Azure CLI
  • Windows環境やPowerShellスクリプトを活用する場合 → Azure PowerShell
  • 複雑な自動化や管理が求められる場合 → Azure PowerShell

両者の使い分けを理解しておくことで、Azureリソースの管理がより効率的に行えるようになります。本記事では、PowerShellを使ってAzure Machine Learningのワークスペースを自動作成する方法に焦点を当てていきますが、CLIとの違いを理解しておくことも、作業の幅を広げるうえで有益です。

Azure Machine Learningワークスペースとは


Azure Machine Learning(Azure ML)は、データサイエンティストや開発者が機械学習モデルの開発、トレーニング、デプロイを行うためのクラウドベースのプラットフォームです。Azure MLを活用することで、大規模なデータ処理や複雑な計算を効率的に行うことができ、機械学習のライフサイクル全体を管理することが可能になります。

ワークスペースの役割


Azure Machine Learningのワークスペースは、MLプロジェクトを管理するための論理的なコンテナです。ワークスペース内には、モデルのトレーニングや評価に必要なリソース、データ、ジョブ、実験の情報が格納されます。つまり、ワークスペースは、すべての機械学習関連の活動を一元的に管理できる場所です。

主な機能と要素


ワークスペース内で使用される主要な機能や要素には以下のものがあります:

  • データストレージ:トレーニングデータや評価データなど、機械学習に使用するデータを格納します。
  • 計算リソース:VMやGPU、クラスターなど、計算リソースをワークスペース内で利用できます。
  • 実験とジョブ:実験の実行や、機械学習ジョブをスケジュール・追跡する機能を提供します。
  • モデル管理:学習済みモデルの保存や管理、デプロイに向けた準備を行います。

ワークスペース作成の流れ


Azure MLのワークスペースを作成するためには、以下の手順を踏む必要があります:

  1. Azureサブスクリプションの選択:Azureサブスクリプションが必要です。
  2. リソースグループの作成:ワークスペースを格納するリソースグループを作成します。
  3. ワークスペースの作成:Azureポータルまたはコマンドラインツール(PowerShell、Azure CLI)を使ってワークスペースを作成します。
  4. リソースの設定:データストレージ、計算クラスター、などをワークスペース内で設定します。

ワークスペースの管理と利用


ワークスペースを作成した後は、Azure ML Studioを通じて、データのアップロード、実験の管理、モデルのトレーニング、結果の分析などを行います。PowerShellを使うと、このプロセスをスクリプト化して、自動化することが可能になります。

Azure MLのワークスペースは、機械学習の開発環境を整えるための基盤となるものであり、効率的なプロジェクトの進行に欠かせない存在です。次に、PowerShellを使用してこのワークスペースを自動で作成する方法を見ていきます。

必要なPowerShellモジュールのインストール


Azure Machine Learningの操作には、Azure PowerShellモジュールが必要です。このモジュールには、Azureのリソースを管理するためのコマンドレットが含まれており、機械学習プロジェクトに必要なリソースを作成したり管理したりすることができます。PowerShellを使用してAzure MLのワークスペースを作成するには、まずこのモジュールをインストールする必要があります。

Azure PowerShellのインストール手順


Azure PowerShellをインストールするための手順は以下の通りです。Windows、macOS、Linuxのいずれのプラットフォームでもインストール可能ですが、ここではWindowsを前提に説明します。

ステップ1:PowerShellを管理者として実行


まず、PowerShellを管理者として実行します。これにより、必要なパーミッションでモジュールをインストールすることができます。

  1. スタートメニューを開き、「PowerShell」と入力します。
  2. 表示された「Windows PowerShell」を右クリックし、「管理者として実行」を選択します。

ステップ2:Azモジュールのインストール


Azure PowerShellには、Azというモジュールが必要です。Azは、Azureリソース全般を管理するためのコマンドレットを提供します。以下のコマンドを実行して、Azモジュールをインストールします。

Install-Module -Name Az -AllowClobber -Force -Scope CurrentUser

このコマンドを実行すると、Azureに関連する全てのモジュール(Azureのリソース管理、Azure Machine Learningなど)がインストールされます。インストールの完了には少し時間がかかることがあります。

ステップ3:インストールの確認


インストールが完了したら、次のコマンドでインストールされたモジュールを確認できます:

Get-Module -ListAvailable -Name Az

インストールされているAzモジュールのバージョンや詳細が表示されます。問題なくインストールされていれば、次のステップに進みます。

Azure Machine Learningモジュールのインストール


Azure Machine Learning専用のコマンドレットを使用するためには、Az.MachineLearningモジュールが必要です。このモジュールをインストールするには、以下のコマンドを使用します:

Install-Module -Name Az.MachineLearning -AllowClobber -Force -Scope CurrentUser

これで、Azure Machine Learningに関連するコマンドレット(ワークスペースの作成や管理など)が使用可能になります。

インストール後の確認


インストールが完了した後、次のコマンドでAz.MachineLearningモジュールが正しくインストールされているか確認できます:

Get-Command -Module Az.MachineLearning

このコマンドを実行すると、Az.MachineLearningモジュール内で利用可能なコマンドの一覧が表示されます。

PowerShellでのログイン


Azureのリソースを操作するためには、Azureにログインする必要があります。以下のコマンドでAzureアカウントにサインインします:

Connect-AzAccount

ログイン後、Azureのサブスクリプションやリソースグループなどの操作が可能になります。

これで、PowerShellを使ってAzure Machine Learningの操作を開始する準備が整いました。次は、PowerShellスクリプトを用いてワークスペースを自動作成する方法を見ていきます。

PowerShellでワークスペース作成のスクリプト例


Azure Machine Learningのワークスペースを手動で作成する代わりに、PowerShellスクリプトを利用して自動化することができます。これにより、同じ設定を複数回使用したり、新しいプロジェクトを迅速に立ち上げたりすることが可能になります。以下では、PowerShellを使用してAzure MLのワークスペースを作成するための基本的なスクリプト例を紹介します。

スクリプトの基本構造


Azure MLワークスペースを作成するためには、Azure PowerShellモジュールを使用して、リソースグループ、ストレージアカウント、コンピューティングクラスターなどのリソースを定義する必要があります。以下のスクリプトは、Azure MLワークスペースを作成するための基本的な流れを示しています。

スクリプト例:ワークスペースの作成


次のPowerShellスクリプトは、指定したAzureサブスクリプション、リソースグループ、ワークスペース名を基に、Azure Machine Learningワークスペースを作成するものです。

# Azureにログイン
Connect-AzAccount

# 必要なパラメータを定義
$resourceGroupName = "ml-workspace-rg"
$workspaceName = "myMLWorkspace"
$location = "East US"  # 使用するリージョン
$subscriptionId = "your-subscription-id"  # 自分のサブスクリプションID

# サブスクリプションコンテキストの設定
Set-AzContext -Subscription $subscriptionId

# リソースグループの作成(存在しない場合のみ)
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location

# Azure MLワークスペースの作成
$workspace = New-AzMlWorkspace -ResourceGroupName $resourceGroupName `
    -Name $workspaceName `
    -Location $location `
    -Sku Basic  # スキューはStandardも選択可能

# 結果を表示
Write-Output "Azure MLワークスペース '$workspaceName' が作成されました"

スクリプトの解説


このスクリプトでは、以下のステップでAzure MLワークスペースを作成しています:

  1. Azureにログイン
    Connect-AzAccountコマンドでAzureにログインします。これにより、PowerShellセッションがAzureアカウントに接続されます。
  2. パラメータの設定
    $resourceGroupName$workspaceName$locationなどの変数に、作成するリソースの設定を定義します。ここで、リージョンやリソースグループ名、ワークスペース名を設定します。
  3. サブスクリプションコンテキストの設定
    Set-AzContextコマンドで使用するAzureサブスクリプションを指定します。これにより、ワークスペースを作成するサブスクリプションを明示的に設定します。
  4. リソースグループの作成
    New-AzResourceGroupコマンドで、新しいリソースグループを作成します。リソースグループがすでに存在している場合は、エラーが発生するので、必要に応じて既存のリソースグループを利用することもできます。
  5. ワークスペースの作成
    New-AzMlWorkspaceコマンドを使って、指定したリソースグループ内にAzure MLワークスペースを作成します。スキュー(Sku)は、使用するAzure Machine Learningの料金プラン(例えば、BasicやStandard)を選択できます。
  6. 結果の表示
    最後に、ワークスペースが作成されたことを表示するメッセージを出力します。

カスタマイズ可能なオプション


この基本的なスクリプトは、プロジェクトの要件に合わせて簡単にカスタマイズできます。例えば、以下のような追加の設定を行うことも可能です:

  • ストレージアカウントの指定
    ワークスペースに関連するストレージアカウントを指定して、データの保存場所を制御することができます。
  • コンピューティングリソースの指定
    トレーニングや推論のための計算リソース(VM、GPUインスタンスなど)を自動で作成することもできます。
  • 既存リソースの使用
    すでに存在するリソースグループやストレージアカウント、コンピューティングクラスターを使用する設定に変更することもできます。

このように、PowerShellを用いてワークスペースの作成を自動化することで、迅速に機械学習の開発環境を準備することができます。次は、ワークスペース作成時に使用する主要なパラメーターとその設定方法について詳しく見ていきます。

ワークスペース作成時の主要パラメーターと設定方法


Azure Machine Learningのワークスペースを作成する際に使用する主要なパラメーターには、ワークスペース名、リージョン、リソースグループ、SKUなどが含まれます。これらのパラメーターを適切に設定することで、プロジェクトの要件に合ったAzure MLワークスペースを作成することができます。以下では、それぞれのパラメーターと設定方法について詳しく解説します。

1. リソースグループ(Resource Group)


リソースグループは、Azureリソースを整理するための論理的なコンテナです。Azure MLのワークスペースは、必ずリソースグループ内に作成する必要があります。リソースグループを利用することで、関連するリソースをまとめて管理でき、リソースの削除や管理が容易になります。

設定方法


リソースグループを作成する場合は、以下のようにNew-AzResourceGroupコマンドを使います:

$resourceGroupName = "ml-workspace-rg"
$location = "East US"
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location

上記のコードでは、ml-workspace-rgという名前のリソースグループをEast USリージョンに作成しています。既存のリソースグループを使用する場合は、このステップを省略し、-ResourceGroupNameパラメータを指定するだけです。

2. ワークスペース名(Workspace Name)


ワークスペース名は、Azure ML内で一意である必要があります。この名前は、ワークスペースを識別するために使用されるため、プロジェクトや組織に適した名前を選びましょう。

設定方法


ワークスペース名を指定する方法は簡単です。以下のコードでは、myMLWorkspaceという名前でワークスペースを作成します:

$workspaceName = "myMLWorkspace"

3. リージョン(Location)


ワークスペースを作成する際には、どのAzureリージョンにリソースを配置するかを決める必要があります。リージョンは、リソースの配置先として重要な要素であり、トレーニングデータや計算リソースのアクセス速度に影響を与えます。

設定方法


リージョンは、-Locationパラメータで指定します。例えば、以下のようにEast USリージョンを指定することができます:

$location = "East US"

主要なリージョンには、East USWest USNorth EuropeSoutheast Asiaなどがあります。選択するリージョンは、プロジェクトのニーズやデータ保護の要件に基づいて選んでください。

4. SKU(Pricing Tier)


ワークスペースを作成する際に、どのSKU(料金プラン)を使用するかを選択することができます。Azure Machine LearningのSKUは、ワークスペースに関連するリソース(データストレージや計算クラスター)の性能とコストを決定します。

設定方法


Azure MLワークスペースには、通常「Basic」または「Standard」のSKUを選択します。Basicは、試験的な用途や小規模なプロジェクトに適しています。一方、Standardは、高度なトレーニングや大規模なプロジェクトに適しています。

$sku = "Basic"  # または "Standard"

このパラメーターは、ワークスペース作成時に指定することができます。例えば、以下のようにワークスペースをBasicプランで作成します:

$workspace = New-AzMlWorkspace -ResourceGroupName $resourceGroupName `
    -Name $workspaceName `
    -Location $location `
    -Sku $sku

5. ストレージアカウント(Storage Account)


Azure Machine Learningワークスペースには、データやモデルを格納するためのストレージアカウントが必要です。ワークスペース作成時に自動でストレージアカウントが作成されますが、既存のストレージアカウントを指定することもできます。

設定方法


ストレージアカウントを指定する場合、-StorageAccountパラメータを使って既存のアカウントを指定します。もし指定しない場合、Azure MLは自動で新しいストレージアカウントを作成します。

$storageAccount = "myStorageAccount"  # 既存のストレージアカウント名
$workspace = New-AzMlWorkspace -ResourceGroupName $resourceGroupName `
    -Name $workspaceName `
    -Location $location `
    -Sku $sku `
    -StorageAccount $storageAccount

6. コンピューティングクラスター(Compute Cluster)


機械学習モデルのトレーニングを行うためには、計算リソースとしてコンピューティングクラスターを設定することができます。これにより、大規模なデータセットを高速に処理することが可能になります。

設定方法


コンピューティングクラスターを作成する場合、-ComputeTargetパラメータでターゲットとなるコンピュータリソースを指定します。例えば、次のようにクラスターを設定することができます:

$computeTarget = "cpu-cluster"
$workspace = New-AzMlWorkspace -ResourceGroupName $resourceGroupName `
    -Name $workspaceName `
    -Location $location `
    -Sku $sku `
    -ComputeTarget $computeTarget

コンピューティングリソースは、特に大規模なデータセットを扱う場合や深層学習モデルをトレーニングする場合に重要な要素です。

まとめ


Azure Machine Learningのワークスペースを作成する際の主要パラメーターには、リソースグループ、ワークスペース名、リージョン、SKU(料金プラン)、ストレージアカウント、コンピューティングクラスターなどがあり、これらを適切に設定することで、プロジェクトに最適なワークスペースを構築できます。PowerShellを使用することで、これらの設定を自動化し、迅速に機械学習環境を準備することができます。

ワークスペース作成後のリソース確認と管理


Azure Machine Learningワークスペースを作成した後、作成したリソースが正しくセットアップされているか確認することが重要です。また、作成したリソースを管理するための手順も知っておくと便利です。以下では、PowerShellを使用してワークスペースを管理する方法や、作成後に確認すべきポイントを説明します。

1. 作成したワークスペースの確認


作成したAzure MLワークスペースが正常に作成されたかどうかを確認するためには、Get-AzMlWorkspaceコマンドレットを使用します。このコマンドを実行することで、指定したリソースグループ内のすべてのワークスペースを確認できます。

確認方法


以下のコマンドでワークスペースを確認できます:

$resourceGroupName = "ml-workspace-rg"
Get-AzMlWorkspace -ResourceGroupName $resourceGroupName

このコマンドを実行すると、指定したリソースグループ内にあるすべてのワークスペースが一覧表示され、作成したワークスペースの詳細を確認することができます。

2. ワークスペースの詳細情報を表示


特定のワークスペースに関する詳細情報(場所、SKU、リソースなど)を表示するには、Get-AzMlWorkspaceコマンドにワークスペース名を指定して実行します。

詳細情報の表示方法


次のようにコマンドを実行します:

$workspaceName = "myMLWorkspace"
$resourceGroupName = "ml-workspace-rg"
Get-AzMlWorkspace -ResourceGroupName $resourceGroupName -Name $workspaceName

これにより、指定したワークスペースの詳細情報が表示され、リージョンやSKU、関連するストレージアカウントなどの情報を確認することができます。

3. リソースグループ内のすべてのリソースを確認


Azureでは、リソースグループ内に複数のリソースが存在する場合があります。リソースグループ内のすべてのリソースを確認するには、Get-AzResourceコマンドを使用します。これを使うと、ワークスペース以外のリソース(ストレージアカウント、コンピューティングクラスターなど)も確認できます。

リソースグループ内のリソース確認方法


以下のコマンドを使用して、リソースグループ内のすべてのリソースを表示します:

$resourceGroupName = "ml-workspace-rg"
Get-AzResource -ResourceGroupName $resourceGroupName

これにより、リソースグループ内のすべてのリソース(仮想マシン、ストレージアカウント、ネットワークなど)が一覧表示され、必要に応じて管理や設定変更を行うことができます。

4. コンピューティングクラスターの管理


作成したワークスペースには、機械学習のトレーニングを実行するためのコンピューティングクラスターが必要です。コンピューティングクラスターを管理するためのコマンドもいくつかあります。

コンピューティングクラスターの一覧表示


Get-AzMlComputeコマンドを使用すると、Azure MLワークスペース内のすべてのコンピューティングリソース(クラスター)を確認できます。

$workspaceName = "myMLWorkspace"
$resourceGroupName = "ml-workspace-rg"
Get-AzMlCompute -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName

これにより、ワークスペース内のコンピューティングクラスター(CPU、GPUなど)やその状態(稼働中、停止中など)を一覧表示できます。

コンピューティングクラスターの作成


コンピューティングクラスターがまだ作成されていない場合は、New-AzMlComputeコマンドを使用して新しいクラスターを作成できます。例えば、以下のコマンドでクラスターを作成します:

New-AzMlCompute -ResourceGroupName $resourceGroupName `
    -WorkspaceName $workspaceName `
    -Name "cpu-cluster" `
    -Location "East US" `
    -Size "STANDARD_DS3_V2" `
    -MaxNodeCount 4

このコマンドでは、cpu-clusterという名前のクラスターをEast USリージョンに作成し、最大4台のノードを設定しています。

5. ワークスペースの削除


不要になったワークスペースを削除する場合、Remove-AzMlWorkspaceコマンドを使用して簡単に削除できます。ただし、ワークスペースを削除すると、関連するすべてのリソース(データストレージ、コンピューティングリソースなど)も削除されるため、慎重に実行する必要があります。

ワークスペース削除方法


ワークスペースを削除するには、次のコマンドを使用します:

$workspaceName = "myMLWorkspace"
$resourceGroupName = "ml-workspace-rg"
Remove-AzMlWorkspace -ResourceGroupName $resourceGroupName -Name $workspaceName

このコマンドを実行すると、指定したワークスペースが完全に削除されます。

まとめ


Azure Machine Learningのワークスペースを作成した後、リソースの管理や確認を行うことは非常に重要です。PowerShellを使用することで、作成したワークスペースの詳細情報やリソースグループ内のリソースを簡単に確認でき、コンピューティングクラスターの管理やワークスペースの削除もスムーズに行うことができます。これにより、効率的にプロジェクトの管理が可能となり、迅速に開発環境を整備できます。

Azure Machine Learningワークスペースを使用した機械学習モデルのトレーニングとデプロイ


Azure Machine Learningのワークスペースを作成し、機械学習環境を構築した後、次に行うべきは実際にモデルをトレーニングし、その結果をデプロイすることです。ここでは、PowerShellを使用して機械学習モデルをトレーニングする方法と、トレーニング後のモデルをデプロイする手順を詳しく説明します。

1. 機械学習モデルのトレーニング環境のセットアップ


Azure Machine Learningでモデルのトレーニングを行うには、まず必要なリソースをセットアップする必要があります。これには、コンピューティングクラスターの準備、データストレージの設定、トレーニングスクリプトの用意などが含まれます。

コンピューティングクラスターの設定


トレーニングに必要な計算リソースをセットアップします。前述のように、PowerShellを使用してコンピューティングクラスターを作成できます。例えば、以下のようにクラスターをセットアップします:

$computeTargetName = "ml-training-cluster"
$computeTarget = New-AzMlCompute -ResourceGroupName $resourceGroupName `
    -WorkspaceName $workspaceName `
    -Name $computeTargetName `
    -Location "East US" `
    -Size "STANDARD_NC6" `
    -MaxNodeCount 4

このコードでは、ml-training-clusterという名前のGPUリソース(STANDARD_NC6)のコンピューティングクラスターを作成し、最大4台のノードでトレーニングを行います。

データストレージの設定


トレーニングに使用するデータを保存するためのストレージアカウントを設定します。PowerShellを使用して、Azure Blob StorageやAzure File Storageをワークスペースに関連付けてデータの保存場所を設定できます。

$storageAccountName = "mldatastorage"
$containerName = "trainingdata"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName `
    -Name $storageAccountName `
    -Location "East US" `
    -Sku "Standard_LRS" `
    -Kind "StorageV2"
$container = New-AzStorageContainer -Context $storageAccount.Context -Name $containerName

このコードでは、mldatastorageというストレージアカウントを作成し、その中にtrainingdataというコンテナを設定しています。

2. トレーニングスクリプトの準備


次に、機械学習モデルをトレーニングするためのスクリプトを準備します。例えば、Pythonを使用してモデルをトレーニングする場合、以下のようなスクリプトを作成します:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import joblib

# データの読み込み
data = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3)

# モデルのトレーニング
model = RandomForestClassifier()
model.fit(X_train, y_train)

# モデルの評価
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

# モデルの保存
joblib.dump(model, 'model.pkl')

このコードでは、Irisデータセットを使用して、ランダムフォレスト分類器をトレーニングし、精度を評価しています。最後に、トレーニングしたモデルをmodel.pklとして保存します。

3. モデルのトレーニング実行


準備したスクリプトをAzure MLワークスペース上で実行するためには、トレーニングジョブを作成して実行します。PowerShellを使用して、次のようにトレーニングジョブを開始することができます。

トレーニングジョブの実行


まず、トレーニングスクリプトをAzure MLのワークスペースにアップロードし、その後トレーニングジョブを実行します。

$scriptPath = "C:\scripts\train_model.py"  # トレーニングスクリプトのパス
$computeTargetName = "ml-training-cluster"

$runConfig = New-AzMlRunConfiguration -ComputeTarget $computeTargetName -ScriptFilePath $scriptPath
$run = Submit-AzMlExperimentRun -WorkspaceName $workspaceName -ExperimentName "iris-training-experiment" -RunConfiguration $runConfig

上記のコードでは、train_model.pyというスクリプトを実行するために、指定したコンピューティングクラスター上でトレーニングジョブを実行します。

4. モデルのデプロイ


モデルのトレーニングが完了したら、次にそのモデルを実際に利用できるようにデプロイします。Azure MLでは、モデルをWebサービスとしてデプロイすることができます。

モデルのデプロイ準備


トレーニング後のモデルファイル(model.pkl)をAzure MLに登録し、デプロイの準備をします。

$modelPath = "C:\models\model.pkl"
$registeredModel = Register-AzMlModel -WorkspaceName $workspaceName -ModelPath $modelPath -Name "iris-model"

このコードでは、ローカルのmodel.pklをAzure MLワークスペースに登録しています。

Webサービスとしてのデプロイ


次に、登録したモデルをWebサービスとしてデプロイします。以下のPowerShellスクリプトでは、aks(Azure Kubernetes Service)を使ってモデルをデプロイしています。

$aksClusterName = "ml-aks-cluster"
$aksCompute = New-AzMlComputeTarget -WorkspaceName $workspaceName -ComputeType "AKS" -ComputeName $aksClusterName

$deploymentConfig = New-AzMlWebServiceConfiguration -Model $registeredModel -ComputeTarget $aksCompute
$webService = Deploy-AzMlWebService -WorkspaceName $workspaceName -WebServiceName "iris-predictor" -WebServiceConfiguration $deploymentConfig

このコードでは、aksクラスタにiris-predictorという名前でWebサービスをデプロイしています。

5. デプロイされたモデルのテスト


デプロイ後、モデルが正しく動作しているかテストするためには、APIエンドポイントを呼び出して予測を行います。

$serviceEndpoint = $webService.Endpoint
$inputData = @{"sepal_length"=5.1; "sepal_width"=3.5; "petal_length"=1.4; "petal_width"=0.2}
$prediction = Invoke-RestMethod -Uri $serviceEndpoint -Method Post -Body ($inputData | ConvertTo-Json) -ContentType "application/json"
Write-Host "Prediction: $prediction"

このコードでは、デプロイされたWebサービスに対してデータを送信し、予測結果を取得します。

まとめ


Azure Machine Learningワークスペースを使用して機械学習モデルをトレーニングし、デプロイするプロセスは、計算リソースやストレージの設定から、モデルのトレーニング、登録、デプロイ、そしてテストまで多岐にわたります。PowerShellを使用することで、この一連の流れを効率的に自動化し、スムーズに実行できます。

コメント

コメントする

目次