Azure Machine Learning と Azure Data Factory を使って予測パイプラインを作成するCreate predictive pipelines using Azure Machine Learning and Azure Data Factory

Azure Machine Learning では、予測分析ソリューションをビルド、テスト、およびデプロイできます。Azure Machine Learning enables you to build, test, and deploy predictive analytics solutions. 大まかに次の 3 つの手順で行われます。From a high-level point of view, it is done in three steps:

  1. トレーニング実験を作成するCreate a training experiment. この手順を実行するには、Azure Machine Learning Studio を使用します。You do this step by using the Azure Machine Learning studio. Azure Machine Learning Studio は、トレーニング データを活用した予測分析モデルのトレーニングとテストに使用できる、コラボレーションと視覚化に対応した開発環境です。Azure Machine Learning studio is a collaborative visual development environment that you use to train and test a predictive analytics model using training data.
  2. トレーニング実験を予測実験に変換するConvert it to a predictive experiment. 既存のデータでモデルがトレーニングされ、それを使用して新しいデータをスコア付けする準備ができると、スコア付け用に実験を用意し、合理化します。Once your model has been trained with existing data and you are ready to use it to score new data, you prepare and streamline your experiment for scoring.
  3. Web サービスとしてデプロイするDeploy it as a web service. Azure Web サービスとしてスコア付け実験を発行できます。You can publish your scoring experiment as an Azure web service. この Web サービスのエンドポイントを使用して、モデルにデータを送信し、モデルの予測を受信できます。You can send data to your model via this web service end point and receive result predictions from the model.

Data Factory と Machine LearningData Factory and Machine Learning together

Azure Data Factory を使用すると、公開された Azure Machine Learning Web サービスを利用して予測分析を行うパイプラインを簡単に作成できます。Azure Data Factory enables you to easily create pipelines that use a published Azure Machine Learning web service for predictive analytics. Azure Data Factory パイプラインでバッチ実行アクティビティを使用すると、Azure Machine Learning Studio Web サービスを呼び出して、データの予測をバッチで行うことができます。Using the Batch Execution Activity in an Azure Data Factory pipeline, you can invoke an Azure Machine Learning studio web service to make predictions on the data in batch.

時間の経過と共に、Azure Machine Learning Studio スコア付け実験の予測モデルには、新しい入力データセットを使用した再トレーニングが必要になります。Over time, the predictive models in the Azure Machine Learning studio scoring experiments need to be retrained using new input datasets. 次の手順を実行することで、Data Factory パイプラインからモデルを再トレーニングできます。You can retrain a model from a Data Factory pipeline by doing the following steps:

  1. 予測実験ではなく、トレーニング実験を Web サービスとして発行します。Publish the training experiment (not predictive experiment) as a web service. 前のシナリオで予測実験を Web サービスとして公開したのと同様にこの手順を Azure Machine Learning Studio で行います。You do this step in the Azure Machine Learning studio as you did to expose predictive experiment as a web service in the previous scenario.
  2. Azure Machine Learning Studio バッチ実行アクティビティを使用して、トレーニング実験用 Web サービスを呼び出します。Use the Azure Machine Learning studio Batch Execution Activity to invoke the web service for the training experiment. 基本的には、Azure Machine Learning Studio バッチ実行アクティビティを使用して、トレーニング Web サービスとスコア付け Web サービスの両方を呼び出すことができます。Basically, you can use the Azure Machine Learning studio Batch Execution activity to invoke both training web service and scoring web service.

再トレーニングを実行したら、Azure Machine Learning Studio 更新リソース アクティビティを使用して、スコア付け Web サービス (Web サービスとして公開した予測実験) を、新しくトレーニングを行ったモデルで更新します。After you are done with retraining, update the scoring web service (predictive experiment exposed as a web service) with the newly trained model by using the Azure Machine Learning studio Update Resource Activity. 詳しくは、「更新リソース アクティビティを使用してモデルを更新する」をご覧ください。See Updating models using Update Resource Activity article for details.

Azure Machine Learning のリンクされたサービスAzure Machine Learning linked service

Azure Machine Learning のリンクされたサービスを作成して、Azure Machine Learning Web サービスを Azure Data Factory にリンクします。You create an Azure Machine Learning linked service to link an Azure Machine Learning Web Service to an Azure data factory. このリンクされたサービスは、Azure Machine Learning のバッチ実行アクティビティと更新リソース アクティビティで使用されます。The Linked Service is used by Azure Machine Learning Batch Execution Activity and Update Resource Activity.

{
    "type" : "linkedServices",
    "name": "AzureMLLinkedService",
    "properties": {
        "type": "AzureML",
        "typeProperties": {
            "mlEndpoint": "URL to Azure ML Predictive Web Service",
            "apiKey": {
                "type": "SecureString",
                "value": "api key"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

JSON 定義のプロパティについては、計算のリンクされたサービスに関する記事をご覧ください。See Compute linked services article for descriptions about properties in the JSON definition.

Azure Machine Learning では、予測実験用にクラシック Web サービスと新しい Web サービスの両方をサポートします。Azure Machine Learning support both Classic Web Services and New Web Services for your predictive experiment. Data Factory から使用する適切なサービスを選択できます。You can choose the right one to use from Data Factory. Azure Machine Learning のリンクされたサービスを作成するために必要な情報を取得するには、 https://services.azureml.net に移動します。ここには、(新しい) Web サービスとクラシック Web サービスがすべて表示されます。To get the information required to create the Azure Machine Learning Linked Service, go to https://services.azureml.net, where all your (new) Web Services and Classic Web Services are listed. アクセスする Web サービスをクリックし、 [使用] ページをクリックします。Click the Web Service you would like to access, and click Consume page. apiKey プロパティの主キーと、mlEndpoint プロパティのバッチ要求をコピーします。Copy Primary Key for apiKey property, and Batch Requests for mlEndpoint property.

Azure Machine Learning Web サービス

Azure Machine Learning バッチ実行アクティビティAzure Machine Learning Batch Execution activity

次の JSON スニペットでは、Azure Machine Learning バッチ実行アクティビティを定義しています。The following JSON snippet defines an Azure Machine Learning Batch Execution activity. このアクティビティ定義には、先ほど作成した Azure Machine Learning のリンクされたサービスへの参照が含まれています。The activity definition has a reference to the Azure Machine Learning linked service you created earlier.

{
    "name": "AzureMLExecutionActivityTemplate",
    "description": "description",
    "type": "AzureMLBatchExecution",
    "linkedServiceName": {
        "referenceName": "AzureMLLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "webServiceInputs": {
            "<web service input name 1>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path1"
            },
            "<web service input name 2>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path2"
            }
        },
        "webServiceOutputs": {
            "<web service output name 1>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path3"
            },
            "<web service output name 2>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path4"
            }
        },
        "globalParameters": {
            "<Parameter 1 Name>": "<parameter value>",
            "<parameter 2 name>": "<parameter 2 value>"
        }
    }
}
プロパティProperty 説明Description 必須Required
名前name パイプラインのアクティビティの名前。Name of the activity in the pipeline はいYes
descriptiondescription アクティビティの動作を説明するテキスト。Text describing what the activity does. いいえNo
typetype Data Lake Analytics U-SQL アクティビティの場合、アクティビティの種類は AzureMLBatchExecution です。For Data Lake Analytics U-SQL activity, the activity type is AzureMLBatchExecution. はいYes
linkedServiceNamelinkedServiceName Azure Machine Learning のリンクされたサービスにリンクされたサービス。Linked Services to the Azure Machine Learning Linked Service. このリンクされたサービスの詳細については、計算のリンクされたサービスに関する記事をご覧ください。To learn about this linked service, see Compute linked services article. はいYes
webServiceInputswebServiceInputs Azure Machine Learning Web サービスの入力名をマップするキーと値のペア。Key, Value pairs, mapping the names of Azure Machine Learning Web Service Inputs. キーは、公開済みの Azure Machine Learning Web サービスで定義されている入力パラメーターと一致する必要があります。Key must match the input parameters defined in the published Azure Machine Learning Web Service. 値は、Azure Storage のリンクされたサービスと、入力 BLOB の場所を指定する FilePath プロパティのペアです。Value is an Azure Storage Linked Services and FilePath properties pair specifying the input Blob locations. いいえNo
webServiceOutputswebServiceOutputs Azure Machine Learning Web サービスの出力名をマップするキーと値のペア。Key, Value pairs, mapping the names of Azure Machine Learning Web Service Outputs. キーは、公開済みの Azure Machine Learning Web サービスで定義されている出力パラメーターと一致する必要があります。Key must match the output parameters defined in the published Azure Machine Learning Web Service. 値は、Azure Storage のリンクされたサービスと、出力 BLOB の場所を指定する FilePath プロパティのペアです。Value is an Azure Storage Linked Services and FilePath properties pair specifying the output Blob locations. いいえNo
globalParametersglobalParameters Azure Machine Learning Studio バッチ実行サービス エンドポイントに渡されるキーと値のペア。Key, Value pairs to be passed to the Azure Machine Learning studio Batch Execution Service endpoint. キーは、公開済みの Azure Machine Learning Studio Web サービスで定義されている、Web サービスのパラメーターの名前と一致する必要があります。Keys must match the names of web service parameters defined in the published Azure Machine Learning studio web service. 値は、Azure Machine Learning Studio バッチ実行要求の GlobalParameters プロパティに渡されますValues are passed in the GlobalParameters property of the Azure Machine Learning studio batch execution request いいえNo

シナリオ 1:Azure Blob Storage のデータを参照する Web サービスの入力/出力の使用を実験するScenario 1: Experiments using Web service inputs/outputs that refer to data in Azure Blob Storage

このシナリオの Azure Machine Learning Web サービスは、Azure BLOB ストレージ内のファイルのデータを使用して予測を作成し、BLOB ストレージに予測結果を保存します。In this scenario, the Azure Machine Learning Web service makes predictions using data from a file in an Azure blob storage and stores the prediction results in the blob storage. 次の JSON では、AzureMLBatchExecution アクティビティを使用する Data Factory パイプラインが定義されています。The following JSON defines a Data Factory pipeline with an AzureMLBatchExecution activity. Azure Blog Storage の入出力データは、LinkedName と FilePath のペアを使用して参照されます。The input and output data in Azure Blog Storage is referenced using a LinkedName and FilePath pair. サンプルのリンクされたサービスが入力と出力で異なる場合は、Data Factory が適切なファイルを選択して Azure Machine Learning Studio Web サービスに送信できるように、入力と出力にそれぞれ異なるリンクされたサービスをご利用いただけます。In the sample Linked Service of inputs and outputs are different, you can use different Linked Services for each of your inputs/outputs for Data Factory to be able to pick up the right files and send to Azure Machine Learning studio Web Service.

重要

Azure Machine Learning Studio の実験では、Web サービスの入力ポートおよび出力ポートとグローバル パラメーターには既定の名前 ("input1"、"input2") がありますが、これらはカスタマイズすることができます。In your Azure Machine Learning studio experiment, web service input and output ports, and global parameters have default names ("input1", "input2") that you can customize. webServiceInputs、webServiceOutputs、および globalParameters の設定に使用する名前は、実験での名前と厳密に一致する必要があります。The names you use for webServiceInputs, webServiceOutputs, and globalParameters settings must exactly match the names in the experiments. バッチ実行のヘルプ ページでサンプルの要求のペイロードを表示して、Azure Machine Learning Studio エンドポイントで必要なマッピングを確認することができます。You can view the sample request payload on the Batch Execution Help page for your Azure Machine Learning studio endpoint to verify the expected mapping.

{
    "name": "AzureMLExecutionActivityTemplate",
    "description": "description",
    "type": "AzureMLBatchExecution",
    "linkedServiceName": {
        "referenceName": "AzureMLLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "webServiceInputs": {
            "input1": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest/input/in1.csv"
            },
            "input2": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest/input/in2.csv"
            }
        },
        "webServiceOutputs": {
            "outputName1": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest2/output/out1.csv"
            },
            "outputName2": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest2/output/out2.csv"
            }
        }
    }
}

シナリオ 2:リーダー/ライター モジュールを使用したさまざまなストレージのデータの参照を実験するScenario 2: Experiments using Reader/Writer Modules to refer to data in various storages

Azure Machine Learning Studio の実験を作成するときのもう 1 つの一般的なシナリオは、データ インポート モジュールとデータ出力モジュールを使用することです。Another common scenario when creating Azure Machine Learning studio experiments is to use Import Data and Output Data modules. データ インポート モジュールは実験にデータを読み込むために使用し、データ出力モジュールは実験からデータを保存するために使用します。The Import Data module is used to load data into an experiment and the Output Data module is to save data from your experiments. データ インポート モジュールとデータ出力モジュールの詳細については、MSDN ライブラリのデータのインポートに関するトピックおよびデータの出力に関するトピックをご覧ください。For details about Import Data and Output Data modules, see Import Data and Output Data topics on MSDN Library.

データ インポート モジュールとデータ出力モジュールを使用するときは、これらのモジュールの各プロパティに Web サービスのパラメーターを使用することをお勧めします。When using the Import Data and Output Data modules, it is good practice to use a Web service parameter for each property of these modules. これらの Web パラメーターを使用すると、実行時に値を構成できます。These web parameters enable you to configure the values during runtime. たとえば、次の Azure SQL Database を使用するデータ インポート モジュールで実験を作成できます: XXX.database.windows.net。For example, you could create an experiment with an Import Data module that uses an Azure SQL Database: XXX.database.windows.net. Web サービスをデプロイしたら、Web サービスのコンシューマーが YYY.database.windows.net という別の Azure SQL Server を指定できるようにします。After the web service has been deployed, you want to enable the consumers of the web service to specify another Azure SQL Server called YYY.database.windows.net. Web サービスのパラメーターを使用して、この値を構成できます。You can use a Web service parameter to allow this value to be configured.

注意

Web サービスの入力と出力は、Web サービスのパラメーターとは異なるものです。Web service input and output are different from Web service parameters. 最初のシナリオでは、Azure Machine Learning Studio Web サービスに対して入力と出力を指定する方法を説明しました。In the first scenario, you have seen how an input and output can be specified for an Azure Machine Learning studio Web service. このシナリオでは、データ インポート/データ出力モジュールのプロパティに対応する Web サービスのパラメーターを渡します。In this scenario, you pass parameters for a Web service that correspond to properties of Import Data/Output Data modules.

Web サービス パラメーターを使用するシナリオを見てみましょう。Let's look at a scenario for using Web service parameters. Azure Machine Learning でサポートされるいずれかのデータ ソース (例: Azure SQL Database) のデータをリーダー モジュールで読み取る Azure Machine Learning Web サービスをデプロイしました。You have a deployed Azure Machine Learning web service that uses a reader module to read data from one of the data sources supported by Azure Machine Learning (for example: Azure SQL Database). バッチ実行が実行された後、ライター モジュールを使用して結果が書き込まれます (Azure SQL Database)。After the batch execution is performed, the results are written using a Writer module (Azure SQL Database). Web サービスの入力と出力は実験では定義されていません。No web service inputs and outputs are defined in the experiments. この場合は、リーダー/ライター モジュールに関連する Web サービス パラメーターを設定することをお勧めします。In this case, we recommend that you configure relevant web service parameters for the reader and writer modules. この設定により、AzureMLBatchExecution アクティビティを使用するときにリーダー/ライター モジュールを構成できます。This configuration allows the reader/writer modules to be configured when using the AzureMLBatchExecution activity. Web サービスのパラメーターは、次に示すように、アクティビティの JSON の globalParameters セクションで指定します。You specify Web service parameters in the globalParameters section in the activity JSON as follows.

"typeProperties": {
    "globalParameters": {
        "Database server name": "<myserver>.database.windows.net",
        "Database name": "<database>",
        "Server user account name": "<user name>",
        "Server user account password": "<password>"
    }
}

注意

Web サービス パラメーターでは大文字と小文字が区別されるため、アクティビティ JSON に指定した名前が Web サービスによって公開されている名前と一致していることを確認してください。The Web service parameters are case-sensitive, so ensure that the names you specify in the activity JSON match the ones exposed by the Web service.

再トレーニングを実行したら、Azure Machine Learning Studio 更新リソース アクティビティを使用して、スコア付け Web サービス (Web サービスとして公開した予測実験) を、新しくトレーニングを行ったモデルで更新します。After you are done with retraining, update the scoring web service (predictive experiment exposed as a web service) with the newly trained model by using the Azure Machine Learning studio Update Resource Activity. 詳しくは、「更新リソース アクティビティを使用してモデルを更新する」をご覧ください。See Updating models using Update Resource Activity article for details.

次の手順Next steps

別の手段でデータを変換する方法を説明している次の記事を参照してください。See the following articles that explain how to transform data in other ways: