次の方法で共有


機械学習モデルの再トレーニングとデプロイ

適用対象:適用対象。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 (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

再トレーニングは、機械学習モデルが正確であり、利用できる最も関連性の高いデータに基づいている状態を確保するための 1 つの方法です。 この記事では、Studio (クラシック) で新しい Web サービスとして機械学習モデルを再トレーニングし、デプロイする方法について説明します。 従来の Web サービスを再トレーニングする場合は、 このハウツー記事を参照してください。

この記事では、予測 Web サービスが既にデプロイされていることを前提としています。 予測 Web サービスをまだお持ちでない場合は、 Studio (クラシック) Web サービスをデプロイする方法をここで確認してください。

次の手順に従って、機械学習の新しい Web サービスを再トレーニングし、デプロイします。

  1. 再トレーニング Web サービスをデプロイする
  2. 再トレーニング Web サービスを使用して新しいモデルをトレーニングする
  3. 新しいモデルを使用するように既存の 予測実験 を更新する

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、 Azure PowerShell のインストール に関するページを参照してください。 Az PowerShell モジュールに移行する方法については、「 Azure PowerShell を AzureRM から Az に移行する」を参照してください。

再学習用のWebサービスを展開する

再トレーニング Web サービスを使用すると、新しいデータなど、新しい一連のパラメーターを指定してモデルを再トレーニングし、後の処理のために保存することができます。 Web サービス出力トレーニング モデルに接続すると、トレーニング実験で使用できる新しいモデルが出力されます。

次の手順を実行して、再トレーニング Web サービスをデプロイします。

  1. Web サービス入力モジュールをデータ入力に接続します。 通常は、入力データが最初のトレーニング データと同じ方法で処理されるようにします。

  2. Web サービス出力 モジュールを モデルのトレーニング の出力に接続します。

  3. モデルの評価モジュールがある場合は、Web サービス出力モジュールを接続して評価結果を出力できます

  4. 実験を実行します。

    実験を実行した後のワークフローは、次の画像のようになります。

    結果のワークフロー

    以上の手順で、トレーニング済みのモデルとモデル評価結果を出力する再トレーニング Web サービスとして、トレーニング実験をデプロイしました。

  5. 実験キャンバスの下部にある [Web サービスのセットアップ] をクリックします

  6. [ Web サービスのデプロイ] [新規] を選択します。 Machine Learning Web サービス ポータルが開き、[ Web サービスのデプロイ ] ページが開きます。

  7. Web サービスの名前を入力し、支払プランを選択します。

  8. [ デプロイ] を選択します

モデルの再トレーニング

この例では、C# を使用して再トレーニング アプリケーションを作成します。 Python または R サンプル コードを使用してこのタスクを行うこともできます。

次の手順を実行して、再トレーニング API を呼び出します。

  1. Visual Studio で C# コンソール アプリケーションを作成する: New>Project>Visual C#>Windows クラシック デスクトップ>Console アプリ (.NET Framework))。
  2. Machine Learning Web サービス ポータルにサインインします。
  3. 使用する Web サービスをクリックします。
  4. 使用をクリックします。
  5. [ 使用 ] ページの下部にある [ サンプル コード ] セクションで、[ バッチ] をクリックします。
  6. バッチ実行用 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 に書き込みます。

  1. Azure portal にサインインする
  2. 左側のナビゲーション列で、[ その他のサービス] をクリックし、 ストレージ アカウントを検索して選択します。
  3. ストレージ アカウントの一覧から、再トレーニング済みのモデルを格納するいずれかのアカウントを選択します。
  4. 左側のナビゲーション列で、[ アクセス キー] をクリックします。
  5. プライマリ アクセス キーをコピーして保存します。
  6. 左側のナビゲーション列で、[ BLOB] をクリックします。
  7. 既存のコンテナーを選択するか、コンテナーを新規作成して、名前を保存します。

StorageAccountNameStorageAccountKeyStorageContainerName の宣言を見つけて、ポータルから保存した値を更新します。

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 の出力結果から BaseLocationRelativeLocationSasBlobToken を組み合わせ、完全な URL をブラウザーのアドレス バーに貼り付けます。

この結果で、新しくトレーニングされたモデルのパフォーマンスが、既存のモデルよりも優れているかどうかを確認します。

出力結果から BaseLocationRelativeLocationSasBlobToken を保存します。

予測実験を更新する

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 再トレーニング呼び出しの出力から BaseLocationRelativeLocation を組み合わせることによって生成されます。

"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 サービスの管理または複数の実験の実行の追跡を行う方法については、次の記事を参照してください。