適用対象:Machine Learning Studio (クラシック)
Azure Machine Learning
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日付までに Azure Machine Learning に移行することをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning の詳細
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
再トレーニングは、機械学習モデルが正確であり、利用できる最も関連性の高いデータに基づいている状態を確保するための 1 つの方法です。 この記事では、Studio (クラシック) で新しい Web サービスとして機械学習モデルを再トレーニングし、デプロイする方法について説明します。 従来の Web サービスを再トレーニングする場合は、 このハウツー記事を参照してください。
この記事では、予測 Web サービスが既にデプロイされていることを前提としています。 予測 Web サービスをまだお持ちでない場合は、 Studio (クラシック) Web サービスをデプロイする方法をここで確認してください。
次の手順に従って、機械学習の新しい Web サービスを再トレーニングし、デプロイします。
- 再トレーニング Web サービスをデプロイする
- 再トレーニング Web サービスを使用して新しいモデルをトレーニングする
- 新しいモデルを使用するように既存の 予測実験 を更新する
注意
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、 Azure PowerShell のインストール に関するページを参照してください。 Az PowerShell モジュールに移行する方法については、「 Azure PowerShell を AzureRM から Az に移行する」を参照してください。
再学習用のWebサービスを展開する
再トレーニング Web サービスを使用すると、新しいデータなど、新しい一連のパラメーターを指定してモデルを再トレーニングし、後の処理のために保存することができます。 Web サービス出力をトレーニング モデルに接続すると、トレーニング実験で使用できる新しいモデルが出力されます。
次の手順を実行して、再トレーニング Web サービスをデプロイします。
Web サービス入力モジュールをデータ入力に接続します。 通常は、入力データが最初のトレーニング データと同じ方法で処理されるようにします。
Web サービス出力 モジュールを モデルのトレーニング の出力に接続します。
モデルの評価モジュールがある場合は、Web サービス出力モジュールを接続して評価結果を出力できます
実験を実行します。
実験を実行した後のワークフローは、次の画像のようになります。
以上の手順で、トレーニング済みのモデルとモデル評価結果を出力する再トレーニング Web サービスとして、トレーニング実験をデプロイしました。
実験キャンバスの下部にある [Web サービスのセットアップ] をクリックします
[ Web サービスのデプロイ] [新規] を選択します。 Machine Learning Web サービス ポータルが開き、[ Web サービスのデプロイ ] ページが開きます。
Web サービスの名前を入力し、支払プランを選択します。
[ デプロイ] を選択します。
モデルの再トレーニング
この例では、C# を使用して再トレーニング アプリケーションを作成します。 Python または R サンプル コードを使用してこのタスクを行うこともできます。
次の手順を実行して、再トレーニング API を呼び出します。
- Visual Studio で C# コンソール アプリケーションを作成する: New>Project>Visual C#>Windows クラシック デスクトップ>Console アプリ (.NET Framework))。
- Machine Learning Web サービス ポータルにサインインします。
- 使用する Web サービスをクリックします。
- 使用をクリックします。
- [ 使用 ] ページの下部にある [ サンプル コード ] セクションで、[ バッチ] をクリックします。
- バッチ実行用 C# のサンプル コードをコピーして、Program.cs ファイルに貼り付けます。 名前空間は変更しないように注意します。
コメントに示されているように Nuget パッケージ Microsoft.AspNet.WebApi.Client を追加します。 Microsoft.WindowsAzure.Storage.dllへの参照を追加するには、 Azure Storage サービス用のクライアント ライブラリをインストールすることが必要になる場合があります。
次のスクリーンショットは、Machine Learning Web サービス ポータルの [ 使用 ] ページを示しています。
ApiKey 宣言の更新
apikey 宣言を見つけます。
const string apiKey = "abc123"; // Replace this with the API key for the web service
使用ページの基本的な消費情報セクションで、主キーを見つけて、apikey宣言にコピーします。
Azure Storage 情報を更新する
BES サンプル コードは、ファイルをローカル ドライブ ("C:\temp\CensusInput.csv" など) から Azure Storage にアップロードして処理し、その結果を Azure Storage に書き込みます。
- Azure portal にサインインする
- 左側のナビゲーション列で、[ その他のサービス] をクリックし、 ストレージ アカウントを検索して選択します。
- ストレージ アカウントの一覧から、再トレーニング済みのモデルを格納するいずれかのアカウントを選択します。
- 左側のナビゲーション列で、[ アクセス キー] をクリックします。
- プライマリ アクセス キーをコピーして保存します。
- 左側のナビゲーション列で、[ BLOB] をクリックします。
- 既存のコンテナーを選択するか、コンテナーを新規作成して、名前を保存します。
StorageAccountName、StorageAccountKey、StorageContainerName の宣言を見つけて、ポータルから保存した値を更新します。
const string StorageAccountName = "mystorageacct"; // Replace this with your Azure storage account name
const string StorageAccountKey = "a_storage_account_key"; // Replace this with your Azure Storage key
const string StorageContainerName = "mycontainer"; // Replace this with your Azure Storage container name
また、入力ファイルがコードで指定した場所で有効であることを確認する必要があります。
出力場所の指定
要求ペイロードで出力場所を指定する場合は、 RelativeLocation で指定されているファイルの拡張子を ilearner
として指定する必要があります。
Outputs = new Dictionary<string, AzureBlobDataReference>() {
{
"output1",
new AzureBlobDataReference()
{
ConnectionString = storageConnectionString,
RelativeLocation = string.Format("{0}/output1results.ilearner", StorageContainerName) /*Replace this with the ___location you want to use for your output file and a valid file extension (usually .csv for scoring results or .ilearner for trained models)*/
}
},
再トレーニング出力の例を次に示します。
再トレーニングの結果を評価する
アプリケーションを実行すると、評価結果へのアクセスに必要な URL と Shared Access Signature トークンが出力に示されます。
再トレーニングされたモデルのパフォーマンス結果を確認するには、Output2 の出力結果から BaseLocation、RelativeLocation、SasBlobToken を組み合わせ、完全な URL をブラウザーのアドレス バーに貼り付けます。
この結果で、新しくトレーニングされたモデルのパフォーマンスが、既存のモデルよりも優れているかどうかを確認します。
出力結果から BaseLocation、 RelativeLocation、 SasBlobToken を保存します。
予測実験を更新する
Azure Resource Manager にサインインする
まず、 Connect-AzAccount コマンドレットを使用して、PowerShell 環境内から Azure アカウントにサインインします。
Web サービス定義オブジェクトを取得する
次に、 Get-AzMlWebService コマンドレットを呼び出して Web サービス定義オブジェクトを取得します。
$wsd = Get-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'
既存の Web サービスのリソース グループ名を決定するには、パラメーターを指定せずに Get-AzMlWebService コマンドレットを実行してご利用のサブスクリプションの Web サービスを表示します。 Web サービスを見つけて、その Web サービス ID を確認します。 リソース グループの名前は、 resourceGroups 要素の直後にある ID の 4 番目の要素です。 次の例では、リソース グループ名は Default-MachineLearning-SouthCentralUS です。
Properties : Microsoft.Azure.Management.MachineLearning.WebServices.Models.WebServicePropertiesForGraph
Id : /subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Name : RetrainSamplePre.2016.8.17.0.3.51.237
Location : South Central US
Type : Microsoft.MachineLearning/webServices
Tags : {}
または、既存の Web サービスのリソース グループ名を判断するには、Machine Learning Web サービス ポータルにサインインします。 Web サービスを選択します。 リソース グループ名は、 resourceGroups 要素の直後にある Web サービスの URL の 5 番目の要素です。 次の例では、リソース グループ名は Default-MachineLearning-SouthCentralUS です。
https://services.azureml.net/subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Web サービス定義オブジェクトを JSON としてエクスポートする
新しくトレーニングされたモデルを使用するようにトレーニング済みモデルの定義を変更するには、まず Export-AzMlWebService コマンドレットを使用して JSON 形式のファイルにエクスポートする必要があります。
Export-AzMlWebService -WebService $wsd -OutputFile "C:\temp\mlservice_export.json"
ilearner BLOB への参照を更新する
資産で[トレーニング済みモデル]を見つけ、locationInfo ノードの URI 値を ilearner BLOB の URI で更新します。 URI は、BES 再トレーニング呼び出しの出力から BaseLocation と RelativeLocation を組み合わせることによって生成されます。
"asset3": {
"name": "Retrain Sample [trained model]",
"type": "Resource",
"locationInfo": {
"uri": "https://mltestaccount.blob.core.windows.net/azuremlassetscontainer/baca7bca650f46218633552c0bcbba0e.ilearner"
},
"outputPorts": {
"Results dataset": {
"type": "Dataset"
}
}
},
JSON を Web サービス定義オブジェクトにインポートする
Import-AzMlWebService コマンドレットを使用して、変更した JSON ファイルを Web サービス定義オブジェクトに変換し直します。このオブジェクトを使用して、事前実験を更新できます。
$wsd = Import-AzMlWebService -InputFile "C:\temp\mlservice_export.json"
Web サービスを更新する
最後に、 Update-AzMlWebService コマンドレットを使用して予測実験を更新します。
Update-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'
次のステップ
Web サービスの管理または複数の実験の実行の追跡を行う方法については、次の記事を参照してください。