適用対象:Azure Machine Learning SDK v1 for Python
適用対象:Azure CLI ml 拡張機能 v1
重要
この記事では、Azure Machine Learning SDK v1 の使用に関する情報を提供します。 SDK v1 は 2025 年 3 月 31 日の時点で非推奨となり、サポートは 2026 年 6 月 30 日に終了します。 SDK v1 は、その日付までインストールして使用できます。
2026 年 6 月 30 日より前に SDK v2 に移行することをお勧めします。 SDK v2 の詳細については、「 Azure Machine Learning Python SDK v2 と SDK v2 リファレンスとは」を参照してください。
この記事では、Azure Machine Learning データストアと Azure Machine Learning Python SDK を使用して Azure のデータ ストレージ サービスに接続する方法について説明します。
データストアは Azure 上のストレージ サービスに安全に接続し、認証資格情報や元のデータ ストアの整合性に対するリスクを回避します。 データストアは、接続情報 (サブスクリプション ID やトークンの認可など) を、ワークスペースに関連付けられた Key Vault に格納します。 データストアを使うと、接続情報をスクリプト内にハードコーディングする必要がなくなるので、ストレージに安全にアクセスできます。 これらの Azure Storage ソリューションに接続するデータストアを作成できます。
データストアが Azure Machine Learning のデータ アクセス ワークフロー全体にどのように適合するかについて詳しくは、 データへの安全なアクセスに 関する記事をご覧ください。
UI を使ってデータ ストレージ リソースに接続する方法については、スタジオ UI を使ったデータ ストレージへの接続に関する記事を参照してください。
ヒント
この記事では、資格情報ベースの認証資格情報 (サービス プリンシパルや Shared Access Signature (SAS) トークンなど) を使用してストレージ サービスに接続することを前提としています。 資格情報がデータストアに登録されている場合、ワークスペース 閲覧者 ロールを持つすべてのユーザーがそれらの資格情報を取得できます。 詳しくは、ワークスペースのロールの管理に関する記事を参照してください。
ID ベースのデータ アクセスについて詳しくは、ストレージ サービスへの ID ベースのデータ アクセス (v1) に関する記事を参照してください。
前提条件
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。 無料版または有料版の Azure Machine Learning をお試しください
サポートされているストレージの種類が含まれる Azure ストレージ アカウント
Azure Machine Learning ワークスペース。
Azure Machine Learning ワークスペースを作成するか、Python SDK を介して既存のワークスペースを使用します
Workspace
と Datastore
クラスをインポートし、from_config()
関数を使って config.json
ファイルからサブスクリプション情報を読み込みます。 既定では、この関数は現在のディレクトリ内の JSON ファイルを検索しますが、from_config(path="your/file/path")
によってファイルを指すパス パラメーターを指定することもできます。
import azureml.core
from azureml.core import Workspace, Datastore
ws = Workspace.from_config()
ワークスペースを作成すると、Azure BLOB コンテナーと Azure ファイル共有が (データストアとして) ワークスペースに自動的に登録されます。 これらの名前は、それぞれ workspaceblobstore
と workspacefilestore
になります。 workspaceblobstore
には、ワークスペースの成果物と機械学習の実験ログが格納されます。 これは既定のデータストアとして機能し、ワークスペースから削除することはできません。 workspacefilestore
には、コンピューティング インスタンスを介して承認されたノートブックと R スクリプトが格納されます。
注
Azure Machine Learning デザイナーでは、デザイナーのホームページでサンプルを開いたときに、azureml_globaldatasets という名前のデータストアが自動的に作成されます。 このデータストアには、サンプル データセットのみが含まれます。 機密データ アクセスには、このデータストアを使用しないでください。
サポートされているデータ ストレージ サービスの種類
現在、データストアでは、次の表に記載されているストレージ サービスへの接続情報の格納がサポートされています。
ヒント
サポートされていないストレージ ソリューション (次の表に記載されていないもの) では、接続してデータを操作する際に問題が発生する可能性があります。 サポートされている Azure ストレージ ソリューションにデータを移動することをお勧めします。 これは、ML 実験中のデータ エグレス コストの削減など、他のシナリオにも役立ちます。
ストレージの種類 | 認証の種類 | Azure Machine Learning スタジオ | Azure Machine Learning Python SDK | Azure Machine Learning CLI | Azure Machine Learning REST API | VS Code |
---|---|---|---|---|---|---|
Azure Blob Storage | アカウント キー SAS トークン |
✓ | ✓ | ✓ | ✓ | ✓ |
Azure ファイル共有 | アカウント キー SAS トークン |
✓ | ✓ | ✓ | ✓ | ✓ |
Azure Data Lake Storage Gen 1 | サービス プリンシパル | ✓ | ✓ | ✓ | ✓ | |
Azure Data Lake Storage Gen 2 | サービス プリンシパル | ✓ | ✓ | ✓ | ✓ | |
Azure SQL Database | SQL 認証 サービス プリンシパル |
✓ | ✓ | ✓ | ✓ | |
Azure PostgreSQL | SQL 認証 | ✓ | ✓ | ✓ | ✓ | |
Azure Database for MySQL | SQL 認証 | ✓* | ✓* | ✓* | ||
Databricks ファイル システム | 認証なし | ✓** | ✓ ** | ✓** |
- MySQL は、パイプラインの DataTransferStep でのみサポートされています。
- Databricks は、パイプラインの DatabricksStep でのみサポートされています。。
ストレージのガイダンス
Azure BLOB コンテナー用のデータストアを作成することをお勧めします。 BLOB には Standard と Premium の両方のストレージを使用できます。 Premium ストレージはより高価ですが、スループットの速度が上がるため、特に大規模なデータセットに対するトレーニングでは、トレーニングの実行速度が向上する可能性があります。 ストレージ アカウントのコストについては、Azure 料金計算ツールを参照してください。
Azure Data Lake Storage Gen2 は、Azure BLOB ストレージに基づいて構築されています。 エンタープライズのビッグ データ分析用に設計されています。 Data Lake Storage Gen2 の一部として、Blob Storage には階層型名前空間が備わっています。 階層型名前空間では、効率的なデータ アクセスのためにオブジェクトやファイルがディレクトリの階層に編成されます。
ストレージへのアクセスとアクセス許可
Azure ストレージ サービスに安全に接続できるように、Azure Machine Learning では、対応するデータ ストレージ コンテナーにアクセスするためのアクセス許可が必要です。 このアクセスは、データストアの登録に使用される認証資格情報に依存します。
注
このガイダンスは、ID ベースのデータ アクセスを使用して作成されたデータストアにも適用されます。
仮想ネットワーク
ファイアウォールの内側または仮想ネットワークの内部に配置されたストレージ アカウントと通信するには、Azure Machine Learning に追加の構成手順が必要になります。 ファイアウォールの内側に配置されたストレージ アカウントの場合は、Azure portal でクライアントの IP アドレスを許可リストに追加できます。
Azure Machine Learning では、仮想ネットワークの外側にあるクライアントからの要求を受信できます。 サービスからデータを要求するエンティティの安全性を確保し、ワークスペースにデータを表示できるようにするには、ワークスペースでプライベート エンドポイントを使用します。
Python SDK ユーザーの場合: トレーニング スクリプトでコンピューティング先のデータにアクセスするには、ストレージと同じ仮想ネットワークとサブネット内にコンピューティング先を配置する必要があります。 同じ仮想ネットワークでコンピューティング インスタンスまたはクラスターを使用できます。
Azure Machine Learning スタジオ ユーザーの場合: いくつかの機能は、データセットからのデータの読み取りが可能であることに依存しています (データセットのプレビュー、プロファイル、自動機械学習など)。 これらの機能で仮想ネットワークの内側にあるストレージを操作するには、スタジオでワークスペースのマネージド ID を使用して、Azure Machine Learning が仮想ネットワークの外部からストレージ アカウントにアクセスできるようにします。
注
仮想ネットワークの内側の Azure SQL Database に格納されるデータの場合、Azure Machine Learning がストレージ アカウントにアクセスできるようにするには、Azure portal で [パブリック アクセスの拒否] を [いいえ] に設定します。
アクセス検証
警告
ストレージ アカウントへのテナント間アクセスはサポートされていません。 シナリオでテナント間アクセスが必要な場合は、(Azure Machine Learning データ サポート チーム) に連絡して、カスタム コード ソリューションのサポートを受けてください。
最初のデータストアの作成および登録プロセスの一環として、Azure Machine Learning により、基になるストレージ サービスが存在することと、ユーザーが指定したプリンシパル (ユーザー名、サービス プリンシパル、または SAS トークン) で指定したストレージにアクセスできることが自動的に検証されます。
データストアの作成後、この検証は、データストア オブジェクトが取得されるたびではなく、基になるストレージ コンテナーにアクセスする必要があるメソッドに対してのみ実行されます。 たとえば、データストアからファイルをダウンロードする場合は、検証が行われます。 一方、既定のデータストアを変更するだけの場合は、検証は行われません。
基になるストレージ サービスへのアクセスを認証するには、作成するデータストアの種類に対応する register_azure_*()
メソッドで、アカウント キー、Shared Access Signature (SAS) トークン、またはサービス プリンシパルを指定します。 ストレージの種類のマトリックスでは、各データストアの種類に対応する、サポートされている認証の種類の一覧が示されています。
アカウント キー、SAS トークン、サービス プリンシパルの情報は、Azure portal で確認できます。
認証にアカウント キーまたは SAS トークンを使う場合は、左側のペインで [ストレージ アカウント] を選んで、登録するストレージ アカウントを選びます
- [概要] ページには、アカウント名、ファイル共有名、コンテナーなどの情報が表示されます
- アカウント キーの場合は、[設定] ペインの [アクセス キー] に移動します
- SAS トークンの場合は、[設定] ペインの [共有アクセス署名] に移動します
- [概要] ページには、アカウント名、ファイル共有名、コンテナーなどの情報が表示されます
認証にサービス プリンシパルを使う場合は、[アプリの登録] に移動して、使用するアプリを選択します
- 選んだアプリに対応する [概要] ページには、テナント ID やクライアント ID などの必要な情報が含まれています
重要
Azure ストレージ アカウントのアクセス キー (アカウント キーまたは SAS トークン) を変更するには、新しい資格情報をワークスペースおよびそれに接続されているデータストアと同期します。 詳しくは、更新した資格情報の同期に関する記事を参照してください。
アクセス許可
Azure BLOB コンテナーと Azure Data Lake Gen 2 ストレージの場合は、認証資格情報にストレージ BLOB データ閲覧者のアクセス権があることを確認します。 詳しくは、ストレージ BLOB データ閲覧者に関する記事を参照してください。 既定では、アカウントの SAS トークンにはアクセス許可がありません。
データ読み取りアクセスの場合、認証資格情報には、コンテナーとオブジェクトに対する一覧と読み取りのアクセス許可が少なくとも必要です
データ書き込みアクセスの場合は、書き込みと追加のアクセス許可も必要です
データストアの作成と登録
Azure Storage ソリューションをデータストアとして登録すると、そのデータストアが自動的に作成されて特定のワークスペースに登録されます。 仮想ネットワークのシナリオに関するガイダンスと、必要な認証資格情報を見つける場所については、このドキュメントの 「ストレージ アクセスとアクセス許可 」セクションを参照してください。
次のストレージの種類のセクションには、Python SDK を使ってそれに対するデータストアを作成および登録する方法を説明した例が記載されています。 これらの例で示されているパラメーターは、データストアを作成および登録するための必須パラメーターです。
サポートされている他のストレージ サービスのデータストアを作成するには、該当する register_azure_*
メソッドに関するリファレンス ドキュメントを参照してください。
UI を使ってデータ ストレージ リソースに接続する方法については、「Azure Machine Learning スタジオを使用してデータに接続する」を参照してください。
重要
同じ名前のデータストアの登録を解除して再登録しても、再登録が失敗した場合、ワークスペースの Azure Key Vault で論理的な削除が有効になっていない可能性があります。 既定では、ワークスペースで作成されたキー ボールト インスタンスに対してソフト削除が有効になっています。 ただし、既存のキー コンテナーを使用した場合、または 2020 年 10 月より前に作成されたワークスペースがある場合は、有効にならない可能性があります。 論理的な削除を有効にする方法について詳しくは、既存のキー コンテナーでの論理的な削除の有効化に関する記事をご覧ください。
注
データストア名には、小文字、数字、およびアンダースコアのみを含める必要があります。
Azure BLOB コンテナー
Azure BLOB コンテナーをデータストアとして登録するには、register_azure_blob_container()
メソッドを使います。
次のコード サンプルでは、 blob_datastore_name
データストアを作成し、 ws
ワークスペースに登録します。 このデータストアは、指定されたアカウント アクセス キーを使って、my-account-name
ストレージ アカウントの my-container-name
BLOB コンテナーにアクセスします。 仮想ネットワークのシナリオに関するガイダンスや、必要な認証資格情報を確認できる場所については、「ストレージへのアクセスとアクセス許可」のセクションを参照してください。
blob_datastore_name='azblobsdk' # Name of the datastore to workspace
container_name=os.getenv("BLOB_CONTAINER", "<my-container-name>") # Name of Azure blob container
account_name=os.getenv("BLOB_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("BLOB_ACCOUNT_KEY", "<my-account-key>") # Storage account access key
blob_datastore = Datastore.register_azure_blob_container(workspace=ws,
datastore_name=blob_datastore_name,
container_name=container_name,
account_name=account_name,
account_key=account_key)
Azure ファイル共有
Azure ファイル共有をデータストアとして登録するには、register_azure_file_share()
メソッドを使います。
次のサンプル コードでは、ws
ワークスペースに file_datastore_name
データストアを作成して登録しています。 このデータストアでは、指定したアカウント アクセス キーで、my-account-name
ストレージ アカウントの my-fileshare-name
ファイル共有を使用します。 仮想ネットワークのシナリオに関するガイダンスや、必要な認証資格情報を確認できる場所については、「ストレージへのアクセスとアクセス許可」のセクションを参照してください。
file_datastore_name='azfilesharesdk' # Name of the datastore to workspace
file_share_name=os.getenv("FILE_SHARE_CONTAINER", "<my-fileshare-name>") # Name of Azure file share container
account_name=os.getenv("FILE_SHARE_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("FILE_SHARE_ACCOUNT_KEY", "<my-account-key>") # Storage account access key
file_datastore = Datastore.register_azure_file_share(workspace=ws,
datastore_name=file_datastore_name,
file_share_name=file_share_name,
account_name=account_name,
account_key=account_key)
Azure Data Lake Storage 第 2 世代
Azure Data Lake Storage Generation 2 (ADLS Gen 2) データストアの場合は、 register_azure_data_lake_gen2() メソッドを使用して、 サービス プリンシパルのアクセス許可を持つ Azure Data Lake Gen 2 ストレージに接続されている資格情報データストアを登録します。
サービス プリンシパルを使うには、アプリケーションを登録し、Azure ロールベースのアクセス制御 (Azure RBAC) またはアクセス制御リスト (ACL) を使ってサービス プリンシパルにデータ アクセスを許可する必要があります。 詳しくは、ADLS Gen 2 のアクセス制御の設定に関する記事を参照してください。
次のコードでは、ws
ワークスペースに adlsgen2_datastore_name
データストアを作成して登録しています。 このデータストアは、指定されたサービス プリンシパルの資格情報を使用して、account_name
ストレージ アカウントのファイル システム test
にアクセスします。 仮想ネットワークのシナリオに関するガイダンスや、必要な認証資格情報を検索する場所については、「ストレージへのアクセスとアクセス許可」のセクションを参照してください。
adlsgen2_datastore_name = 'adlsgen2datastore'
subscription_id=os.getenv("ADL_SUBSCRIPTION", "<my_subscription_id>") # subscription id of ADLS account
resource_group=os.getenv("ADL_RESOURCE_GROUP", "<my_resource_group>") # resource group of ADLS account
account_name=os.getenv("ADLSGEN2_ACCOUNTNAME", "<my_account_name>") # ADLS Gen2 account name
tenant_id=os.getenv("ADLSGEN2_TENANT", "<my_tenant_id>") # tenant id of service principal
client_id=os.getenv("ADLSGEN2_CLIENTID", "<my_client_id>") # client id of service principal
client_secret=os.getenv("ADLSGEN2_CLIENT_SECRET", "<my_client_secret>") # the secret of service principal
adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(workspace=ws,
datastore_name=adlsgen2_datastore_name,
account_name=account_name, # ADLS Gen2 account name
filesystem='test', # ADLS Gen2 filesystem
tenant_id=tenant_id, # tenant id of service principal
client_id=client_id, # client id of service principal
client_secret=client_secret) # the secret of service principal
他の Azure ツールを使用してデータストアを作成する
Python SDK とスタジオを使用したデータストアの作成に加えて、Azure Resource Manager テンプレートや Azure Machine Learning VS Code 拡張機能を使用してデータストアを作成することもできます。
Azure Resource Manager
https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices にあるいくつかのテンプレートを使ってデータストアを作成できます。 これらのテンプレートについては、「Azure Resource Manager テンプレートを使用して Azure Machine Learning のワークスペースを作成する」をご覧ください。
VS Code 拡張機能
Azure Machine Learning VS Code 拡張機能を使ったデータストアの作成と管理について詳しくは、VS Code によるリソース管理の攻略ガイドを参照してください。
データストアのデータを使用する
データストアを作成したら、データを操作するための Azure Machine Learning データセットを作成します。 データセットは、トレーニングなどの機械学習タスクに使用できる遅延評価オブジェクトにデータをパッケージ化します。 データセットを使うと、コンピューティング先でのモデルのトレーニングのために、Azure Storage サービスから任意の形式のファイルをダウンロードまたはマウントできます。 データセットを使って ML モデルをトレーニングする方法の詳細をご覧ください。
ワークスペースからデータストアを取得する
現在のワークスペースに登録されている特定のデータストアを取得するには、Datastore
クラスの get()
静的メソッドを使います。
# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')
特定のワークスペースに登録されているデータストアの一覧を取得するには、ワークスペース オブジェクトの datastores
プロパティを使います。
# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
print(name, datastore.datastore_type)
次のサンプル コードでは、ワークスペースの既定のデータストアを取得する方法を示します。
datastore = ws.get_default_datastore()
次のコード サンプルを使用して、既定のデータストアを変更することもできます。 この機能は SDK でのみサポートされています。
ws.set_default_datastore(new_default_datastore)
スコアリング中にデータにアクセスする
Azure Machine Learning には、スコアリングにモデルを使用する方法が複数用意されています。 これらの方法の一部では、データストアへのアクセスが提供されていません。 スコアリング中にデータストアへのアクセスを許可するメソッドを次の表に示します。
メソッド | データストア アクセス | 説明 |
---|---|---|
バッチ予測 | ✔ | 大量のデータの予測を非同期的に行います。 |
Web サービス | モデルを Web サービスとしてデプロイします。 |
SDK でデータストアへのアクセスが提供されない場合は、関連する Azure SDK を使用してデータにアクセスするカスタム コードを作成できる場合があります。 たとえば、Azure Storage SDK for Python クライアント ライブラリを使って、BLOB またはファイルに格納されたデータにアクセスできます。
サポートされている Azure Storage ソリューションにデータを移動する
Azure Machine Learning では、次のデータへのアクセスがサポートされています
- Azure BLOB ストレージ
- Azure Files
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure SQL データベース
- Azure Database for PostgreSQL(PostgreSQL用Azureデータベース)
サポートされていないストレージを使う場合は、Azure Data Factory とこれらの手順を使って、サポートされている Azure ストレージ ソリューションにデータを移動することをお勧めします。 サポートされているストレージにデータを移動すると、機械学習の実験中のデータ エグレス コストを節約できます。
Azure Data Factory では、効率的で回復性があるデータ転送が提供され、80 を超える構築済みのコネクタを追加コストなしで利用できます。 これには、Azure のデータ サービス、オンプレミスのデータ ソース、Amazon S3 と Redshift、Google BigQuery などのコネクタが含まれます。