レジストリを使用したワークスペース間でのデータの共有 (プレビュー)
Azure Machine Learning レジストリを使うと、組織内のワークスペース間で共同作業を行うことができます。 レジストリを使して、モデル、コンポーネント、環境、データを共有できます。 現在、レジストリとのデータの共有はプレビュー機能です。 この記事では、次のことについて説明します。
- レジストリにデータ資産を作成する。
- ワークスペースからレジストリに既存のデータ資産を共有する
- ワークスペースのモデル トレーニング ジョブへの入力として、レジストリのデータ資産を使用する。
重要
現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。
詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
Azure Machine Learning レジストリを使用したデータ共有によって対処される主なシナリオ
複数のチーム、プロジェクト、またはワークスペース間でデータを 1 つの中央の場所で共有したい場合があります。 このようなデータには機密性の高いアクセス制御がないため、組織で広く使用できます。
たとえば、次のようになります。
- チームは、前処理され、実験で使用するための準備ができているパブリック データセットを共有したいと考えています。
- 組織は、外部ベンダーからプロジェクトの特定のデータセットを取得しており、プロジェクトに取り組むすべてのチームが使用できるようにしたいと考えています。
- あるチームは、異なるリージョン内のワークスペース間でデータ資産を共有したいと考えています。
これらのシナリオでは、レジストリにデータ資産を作成したり、ワークスペースからレジストリに既存のデータ資産を共有したりできます。 このデータ資産は、複数のワークスペースで使用できます。
Azure Machine Learning レジストリを使用したデータ共有によって対処されないシナリオ
きめ細かいアクセス制御を必要とする機密データの共有。 組織内の他の多くのユーザーがレジストリにアクセスできる間は、レジストリにデータ資産を作成して、ユーザーまたはワークスペースの小さなサブセットと共有することはできません。
既存のストレージで使用できるものの、コピーできない、またはサイズが大きすぎる、またはコピーするにはコストがかかりすぎる、データの共有。 データ資産がレジストリに作成されるたびに、データをレプリケートできるように、データのコピーがレジストリ ストレージに取り込まれます。
Azure Machine Learning レジストリでサポートされるデータ資産の種類
ヒント
シナリオで uri_file
、uri_folder
、または mltable
を使用するかどうかを決定する場合、以下の標準的なシナリオを確認してください。
次の 3 つの種類のデータ資産を作成できます。
Type | V2 API | 標準的なシナリオ |
---|---|---|
ファイル: 1 つのファイルを参照する | uri_file |
1 つのファイルを読み取る、または書き込む - ファイルには任意の形式を指定できます。 |
フォルダー: 1 つのフォルダーを参照する | uri_folder |
Parquet または CSV ファイルのディレクトリを Pandas または Spark に読み込む、あるいは書き込む必要があります。 ディレクトリ内にある画像、テキスト、オーディオ、ビデオのファイルを使用したディープ ラーニング。 |
テーブル: データ テーブルを参照する | mltable |
頻繁に変更される複雑なスキーマがあるか、大きな表形式データのサブセットが必要です。 |
Azure Machine Learning レジストリでサポートされるパス
データ資産を作成するときは、データの場所を指す path パラメーターを指定する必要があります。 現在サポートされているパスは、ローカル コンピューター上の場所のみです。
ヒント
"ローカル" とは、使用しているコンピューターのローカル ストレージを意味します。 たとえば、ノート PC を使用している場合は、そのローカル ドライブです。 Azure Machine Learning コンピューティング インスタンスの場合は、コンピューティング インスタンスの "ローカル" ドライブです。
前提条件
この記事の手順に従う前に、次の前提条件が満たされていることをご確認ください。
Azure Machine Learning のレジストリと Azure Machine Learning でのデータの概念に関する習熟。
データを共有するための Azure Machine Learning レジストリ。 レジストリの作成については、レジストリの作成方法に関する記事をご覧ください。
Azure Machine Learning ワークスペース。 所有していない場合は、クイック スタート: ワークスペース リソースの作成に関する記事の手順に従って作成してください。
重要
ワークスペースを作成する Azure リージョン (場所) は、Azure Machine Learning レジストリがサポートされているリージョンの一覧に含まれている必要があります。
モデル、コンポーネント、環境の共有方法に関する記事から作成された "環境" および "コンポーネント"。
Azure CLI と
ml
拡張機能または Azure Machine Learning Python SDK v2:Azure CLI と拡張機能をインストールするには、「CLI (v2) のインストール、セットアップ、および使用」を参照してください。
重要
この記事の CLI の例では、Bash (または互換性のある) シェルを使用していることを前提としています。 たとえば、Linux システムや Linux 用 Windows サブシステムなどです。
また、この例では、サブスクリプション、ワークスペース、リソース グループ、または場所のパラメーターを指定する必要がないように、Azure CLI の既定値を構成してあることを前提としています。 既定の設定にするには、次のコマンドを使います。 次のパラメーターを、実際の構成の値に置き換えてください。
<subscription>
は、Azure サブスクリプション ID に置き換えてください。<workspace>
は、ご利用の Azure Machine Learning ワークスペース名に置き換えます。<resource-group>
は、ワークスペースが含まれている Azure リソース グループに置き換えます。<location>
は、ワークスペースが含まれている Azure リージョンに置き換えます。
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
az configure -l
コマンドを使用すると、現在の既定値を確認できます。
examples リポジトリを複製する
この記事のコード例は、nyc_taxi_data_regression
例のリポジトリの サンプルに基づいています。 開発環境でこれらのファイルを使うには、次のコマンドを使ってリポジトリをクローンし、ディレクトリを example に変更します。
git clone https://github.com/Azure/azureml-examples
cd azureml-examples
CLI の例の場合は、例のリポジトリのローカル クローンでディレクトリを cli/jobs/pipelines-with-components/nyc_taxi_data_regression
に変更します。
cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression
SDK の接続を作成する
ヒント
このステップは、Python SDK を使うときにのみ必要です。
Azure Machine Learning ワークスペースとレジストリの両方へのクライアント接続を作成します。 次の例では、<...>
プレースホルダーの値を構成に適した値に置き換えます。 たとえば、Azure サブスクリプション ID、ワークスペース名、レジストリ名などです。
ml_client_workspace = MLClient( credential=credential,
subscription_id = "<workspace-subscription>",
resource_group_name = "<workspace-resource-group",
workspace_name = "<workspace-name>")
print(ml_client_workspace)
ml_client_registry = MLClient(credential=credential,
registry_name="<REGISTRY_NAME>",
registry_location="<REGISTRY_REGION>")
print(ml_client_registry)
レジストリにデータを作成する
この手順で作成したデータ資産は、この記事の後半で、トレーニング ジョブを送信するときに使用します。
ヒント
同じ CLI コマンド az ml data create
を使用して、ワークスペースまたはレジストリにデータを作成できます。 --workspace-name
を指定してコマンドを実行するとワークスペースにデータが作成され、--registry-name
を指定してコマンドを実行するとレジストリにデータが作成されます。
データ ソースは、前にクローンしたサンプル リポジトリにあります。 ローカル クローンの下で、次のディレクトリ パスに移動します: cli/jobs/pipelines-with-components/nyc_taxi_data_regression
。 このディレクトリで、data-registry.yml
という名前の YAML ファイルを作成し、ファイルの内容として次の YAML を使用します。
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/
path
値は data_transformed
サブディレクトリを指します。これには、レジストリを使用して共有されるデータが含まれます。
レジストリにデータを作成するには、az ml data create
を使用します。 次の例では、<registry-name>
がレジストリの名前と置き換えられます。
az ml data create --file data-registry.yml --registry-name <registry-name>
この名前とバージョンのデータがレジストリに既に存在するというエラーが発生する場合は、data-registry.yml
の version
フィールドを編集するか、CLI で別のバージョンを指定して data-registry.yml
のバージョンの値をオーバーライドすることができます。
# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version
ヒント
version=$(date +%s)
コマンドが環境内で $version
変数を設定していない場合、$version
をランダムな数値に置き換えます。
az ml data create
コマンドの出力からデータの name
と version
を保持しておき、それらを az ml data show
コマンドとともに使用して資産の詳細を表示します。
az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>
ヒント
使用したデータの名前またはバージョンが異なる場合は、それに応じて --name
と --version
パラメーターを置き換えます。
az ml data list --registry-name <registry-name>
を使って、レジストリ内のすべてのデータ資産の一覧を表示することもできます。
レジストリに環境とコンポーネントを作成する
レジストリに環境とコンポーネントを作成するには、モデル、コンポーネント、環境を共有する方法に関する記事の手順を使用します。 環境とコンポーネントは、次のセクションのトレーニング ジョブで使用されます。
ヒント
レジストリの環境とコンポーネントを使用する代わりに、ワークスペースからそれらを使用できます。
レジストリのコンポーネントを使用してワークスペースでパイプライン ジョブを実行する
レジストリのコンポーネントとデータを使うパイプライン ジョブを実行する場合、"コンピューティング" リソースはワークスペースに対してローカルになります。 次の例では、ジョブは Scikit Learn トレーニング コンポーネントと、前のセクションで作成したデータ資産を使用して、モデルをトレーニングします。
注意
重要なのは、このパイプラインが特定のワークスペースにないトレーニングする データを使ってワークスペースで実行されるということです。 データは、組織内の任意のワークスペースで使用できるレジストリ内にあります。 このトレーニング ジョブは、ユーザーがアクセスできる任意のワークスペースで実行できます。そのワークスペースでトレーニング データを使用できるようにすることを心配する必要はありません。
現在の場所が cli/jobs/pipelines-with-components/nyc_taxi_data_regression
ディレクトリであることを確認します。 single-job-pipeline.yml
ファイルの train_job
セクションの下にある component
セクションを、トレーニング コンポーネントを参照するように編集し、training_data
セクションの下にある path
を、前のセクションで作成したデータ資産を参照するように編集します。 次の例は、編集後の single-job-pipeline.yml
の外観を示しています。 <registry_name>
をレジストリの名前に置き換えます。
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset
jobs:
train_job:
type: command
component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
compute: azureml:cpu-cluster
inputs:
training_data:
type: uri_folder
path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
outputs:
model_output:
type: mlflow_model
test_data:
警告
- パイプライン ジョブを実行する前に、ジョブを実行するワークスペースが、データを作成したレジストリでサポートされている Azure リージョンにあることを確認します。
- ワークスペースに
cpu-cluster
という名前のコンピューティング クラスターがあることを確認するか、jobs.train_job.compute
の下のcompute
フィールドをお使いのコンピューティングの名前で編集します。
az ml job create
コマンドを使ってパイプライン ジョブを実行します。
az ml job create --file single-job-pipeline.yml
ヒント
前提条件のセクションで説明されているように、既定のワークスペースとリソース グループを構成していない場合、az ml job create
を実行するには --workspace-name
と --resource-group
パラメーターを指定する必要があります。
ジョブの実行について詳しくは、次の記事をご覧ください。
ワークスペースからレジストリにデータを共有する
次の手順では、ワークスペースからレジストリに既存のデータ資産を共有する方法を示します。
まず、ワークスペースにデータ資産を作成します。 現在の場所が cli/assets/data
ディレクトリであることを確認します。 このディレクトリにある local-folder.yml
を使用して、ワークスペースにデータ資産を作成します。 このファイルで指定されたデータは、cli/assets/data/sample-data
ディレクトリで使用できます。 次の YAML は、local-folder.yml
ファイルの内容です。
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/
ワークスペースにデータ資産を作成するには、次のコマンドを使用します。
az ml data create -f local-folder.yml
ワークスペースでのデータ資産の作成の詳細については、データ資産を作成する方法に関する記事を参照してください。
ワークスペースで作成されたデータ資産は、レジストリと共有できます。 これはレジストリから、複数のワークスペースで使用できます。 share 関数で --share_with_name
および --share_with_version
パラメーターを渡していることに注意してください。 これらのパラメーターは省略可能であり、渡さない場合、これらのデータはワークスペースと同じ名前およびバージョンで共有されます。
次の例では、share コマンドを使用してデータ資産を共有する方法を示します。 <registry-name>
を、データの共有先となるレジストリの名前に置き換えます。
az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>