Подключение к службам хранилища в Azure с помощью хранилищ данных

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

ОБЛАСТЬ ПРИМЕНЕНИЯ: Расширение ML для Azure CLI версии 1

Из этой статьи вы узнаете, как подключиться к службам хранилища данных в Azure с помощью хранилищ данных Машинного обучения Azure и пакета SDK Машинного обучения Azure для Python.

Хранилища данных безопасно подключаются к службе хранилища в Azure, и они не рискуют учетными данными проверки подлинности или целостностью исходного хранилища данных. Хранилище данных хранит сведения о подключении ( например, идентификатор подписки или авторизацию маркера) в Key Vault , связанном с рабочей областью. С помощью хранилища данных вы можете безопасно получить доступ к хранилищу, так как вы можете избежать жесткого кодирования сведений о подключении в скриптах. Вы можете создавать хранилища данных, которые подключаются к этим решениям службы хранилища Azure.

Сведения о том, как хранилища данных соответствуют общему рабочему процессу доступа к данным Машинное обучение Azure, см. в статье о безопасном доступе к данным.

Чтобы узнать, как подключиться к ресурсу хранилища данных с помощью пользовательского интерфейса, посетите Подключение хранилище данных с помощью пользовательского интерфейса студии.

Совет

В этой статье предполагается, что вы будете подключаться к службе хранилища с учетными данными с учетными данными проверки подлинности, например субъект-служба или маркер подписанного URL-адреса (SAS). Обратите внимание, что если учетные данные зарегистрированы в хранилищах данных, все пользователи с ролью читателя рабочей области могут получить эти учетные данные. Дополнительные сведения см. в статье "Управление ролями в рабочей области".

Дополнительные сведения о доступе к данным на основе удостоверений см. в разделе "Доступ к данным на основе удостоверений" к службам хранилища (версия 1).

Необходимые компоненты

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинное обучение Azure

  • Учетная запись хранения Azure с поддерживаемым типом хранилища

  • Пакет SDK Машинного обучения Azure для Python.

  • Рабочая область Машинного обучения Azure.

    Создание рабочей области Машинное обучение Azure или использование существующей рабочей области с помощью пакета SDK для Python

    Workspace Импортируйте и Datastore класс и загрузите сведения о подписке config.json из файла с from_config() помощью функции. По умолчанию функция ищет JSON-файл в текущем каталоге, но можно также указать параметр пути, указывающий на файл с помощью from_config(path="your/file/path"):

    import azureml.core
    from azureml.core import Workspace, Datastore
    
    ws = Workspace.from_config()
    

    Создание рабочей области автоматически регистрирует контейнер BLOB-объектов Azure и общую папку Azure в качестве хранилищ данных в рабочей области. Они называются workspaceblobstore и workspacefilestore, соответственно. Хранит workspaceblobstore артефакты рабочей области и журналы экспериментов машинного обучения. Он служит хранилищем данных по умолчанию и не может быть удален из рабочей области. Хранит workspacefilestore записные книжки и скрипты R, авторизованные с помощью вычислительного экземпляра.

    Примечание.

    Машинное обучение Azure конструктор автоматически создает хранилище данных с именем azureml_globaldatasets при открытии примера на домашней странице конструктора. В этом хранилище данных содержатся только примеры наборов данных. Не используйте это хранилище данных для доступа к конфиденциальным данным.

Поддерживаемые типы служб хранилища данных

Хранилища данных в настоящее время поддерживают хранение сведений о подключении к службам хранилища, перечисленным в этой матрице:

Совет

Для неподдерживаемых решений хранилища (которые не перечислены в следующей таблице), могут возникнуть проблемы при подключении и работе с данными. Мы рекомендуем переместить данные в поддерживаемое решение службы хранилища Azure. Это также может помочь в дополнительных сценариях— например, сокращение затрат на исходящий трафик данных во время экспериментов машинного обучения.

Тип хранилища Тип аутентификации Студия машинного обучения Azure Пакет SDK Python для Машинного обучения Azure Интерфейс командной строки службы "Машинное обучение Azure" REST API Машинного обучения Azure VS Code
Хранилище BLOB-объектов Azure Ключ учетной записи
Маркер SAS
файлового ресурса Azure. Ключ учетной записи
Маркер SAS
Azure Data Lake служба хранилища 1-го поколения Субъект-служба
Хранилище Azure Data Lake 2-го поколения Субъект-служба
База данных SQL Azure Проверка подлинности SQL
Субъект-служба
Azure PostgreSQL Проверка подлинности SQL
База данных Azure для MySQL Проверка подлинности SQL ✓* ✓* ✓*
Файловая система Databricks Без проверки подлинности ✓** ✓** ✓**
  • MySQL поддерживается только для конвейера класса DataTransferStep.
  • Databricks поддерживается только для конвейера класса DatabricksStep.

Рекомендации по выбору хранилища

Рекомендуется создать хранилище данных для контейнера BLOB-объектов Azure. Для BLOB-объектов доступны хранилища класса Standard и Premium. Хотя хранилище класса Premium дороже, скорость пропускной способности может повысить скорость выполнения обучения, особенно если вы обучите большой набор данных. Сведения о затратах на учетную запись хранения см. в калькуляторе цен Azure.

Azure Data Lake Storage 2-го поколения основан на хранилище BLOB-объектов Azure. Он предназначен для корпоративной аналитики больших данных. В рамках Data Lake Storage 2-го поколения хранилище BLOB-объектов имеет иерархическое пространство имен. Иерархическое пространство имен позволяет упорядочивать объекты и файлы в иерархии каталогов для эффективного доступа к данным.

Доступ к хранилищу и разрешения

Чтобы обеспечить безопасное подключение к службе хранилища Azure, Машинному обучению Azure требуется разрешение на доступ к соответствующему контейнеру хранилища. Этот доступ зависит от учетных данных проверки подлинности, используемых для регистрации хранилища данных.

Виртуальная сеть

Чтобы связаться с учетной записью хранения, расположенной за брандмауэром или в виртуальной сети, Машинное обучение Azure требует дополнительных действий по настройке. Для учетной записи хранения, расположенной за брандмауэром, можно добавить IP-адрес клиента в список разрешений с помощью портал Azure.

Машинное обучение Azure может принимать запросы от клиентов за пределами виртуальной сети. Чтобы убедиться, что сущность, запрашивающая данные из службы, безопасна, и чтобы включить отображение данных в рабочей области, используйте частную конечную точку с рабочей областью.

Для пользователей пакета SDK для Python: чтобы получить доступ к данным в целевом объекте вычислений с помощью скрипта обучения, необходимо найти целевой объект вычислений в той же виртуальной сети и подсети хранилища. Вы можете использовать вычислительный экземпляр или кластер в одной виртуальной сети.

Для Студия машинного обучения Azure пользователей: некоторые функции зависят от возможности чтения данных из набора данных, например предварительного просмотра наборов данных, профилей и автоматизированного машинного обучения. Чтобы эти функции работали с хранилищем за пределами виртуальных сетей, с помощью управляемого удостоверения рабочей области в студии разрешите Машинному обучению Azure доступ к учетной записи хранения из-за пределов виртуальной сети.

Примечание.

Для данных, хранящихся в База данных SQL Azure за виртуальной сетью, установите для параметра "Запрет общедоступного доступа" значение "Нет" с портал Azure, чтобы разрешить Машинное обучение Azure доступ к учетной записи хранения.

Проверка доступа

Предупреждение

Кросс-клиентский доступ к учетным записям хранения не поддерживается. Если вашему сценарию требуется межтенантный доступ, обратитесь к псевдониму amldatasupport@microsoft.com группы поддержки данных Машинное обучение Azure, чтобы получить помощь с пользовательским решением кода.

В рамках первоначального процесса создания и регистрации хранилища данных Машинное обучение Azure автоматически проверяет, существует ли базовая служба хранилища и что предоставленный пользователем субъект (имя пользователя, субъект-служба или маркер SAS) может получить доступ к указанному хранилищу.

После создания хранилища данных эта проверка осуществляется только для методов, которым требуется доступ к базовому контейнеру хранилища, а не при каждом извлечении объектов хранилища данных. Например, проверка происходит, если вы хотите скачать файлы из хранилища данных. Однако если вы хотите изменить хранилище данных по умолчанию, проверка не произойдет.

Чтобы проверить подлинность доступа к базовой службе хранилища, можно указать ключ учетной записи, подписанный URL-адрес (SAS) или субъект-службу в соответствующем методе register_azure_*() типа хранилища данных, который вы хотите создать. В таблице типов хранилища перечислены поддерживаемые типы проверки подлинности, соответствующие каждому типу хранилища данных.

Ключ учетной записи, маркер SAS и сведения о субъекте-службе можно найти на портал Azure.

  • Чтобы использовать ключ учетной записи или маркер SAS для проверки подлинности, выберите служба хранилища учетные записи на левой панели и выберите учетную запись хранения, которую требуется зарегистрировать.

    • Страница обзора содержит имя учетной записи, имя общей папки, контейнер и т. д.
      • Ключи учетной записи см. в разделе "Ключи доступа" на панели Параметры
      • Для маркеров SAS перейдите к подписям общего доступа на панели Параметры
  • Чтобы использовать субъект-службу для проверки подлинности, перейдите к Регистрация приложений и выберите приложение, которое вы хотите использовать.

    • Соответствующая страница обзора выбранного приложения содержит необходимые сведения, например идентификатор клиента и идентификатор клиента.

Внимание

Чтобы изменить ключи доступа для учетной записи служба хранилища Azure (ключ учетной записи или маркер SAS), синхронизируйте новые учетные данные с рабочей областью и хранилищами данных, подключенными к ней. Дополнительные сведения см . в разделе "Синхронизация обновленных учетных данных".

Разрешения

Для контейнера BLOB-объектов Azure и хранилища Azure Data Lake 2-го поколения убедитесь, что учетные данные проверки подлинности имеют служба хранилища доступ к средству чтения данных BLOB-объектов. Дополнительные сведения см. в служба хранилища средстве чтения данных BLOB-объектов. По умолчанию маркер SAS учетной записи не имеет разрешений.

  • Для доступа на чтение данных учетные данные проверки подлинности должны иметь минимальный список и разрешения на чтение для контейнеров и объектов

  • Для доступа к записи данных также требуются разрешения на запись и добавление

Создание и регистрация хранилищ данных

Регистрация решения хранилища Azure в качестве хранилища данных автоматически создает и регистрирует хранилище данных в определенной рабочей области. Ознакомьтесь с доступом к хранилищу и разрешениями в этом документе, чтобы узнать о сценариях виртуальной сети и где найти необходимые учетные данные проверки подлинности.

В этом разделе приведены примеры создания и регистрации хранилища данных с помощью пакета SDK для Python для этих типов хранилища. Параметры, показанные в этих примерах, являются обязательными параметрами для создания и регистрации хранилища данных:

Чтобы создать хранилища данных для других поддерживаемых служб хранилища, ознакомьтесь со справочной документацией по применимым register_azure_* методам.

Чтобы узнать, как подключиться к ресурсу хранилища данных с помощью пользовательского интерфейса, посетите Подключение данных с Студия машинного обучения Azure.

Внимание

Если отменить регистрацию и повторно зарегистрировать хранилище данных с тем же именем, а повторная регистрация завершается ошибкой, Хранилище ключей Azure для рабочей области может не включать обратимое удаление. По умолчанию обратимое удаление включено для экземпляра хранилища ключей, созданного рабочей областью, но оно не может быть включено, если вы использовали существующее хранилище ключей или создали рабочую область до октября 2020 года. Сведения о включении обратимого удаления см. в разделе "Включение обратимого удаления" для существующего хранилища ключей.

Примечание.

Имя хранилища данных должно содержать только строчные буквы, цифры и символы подчеркивания.

Контейнер BLOB-объектов Azure

Чтобы зарегистрировать контейнер BLOB-объектов Azure в качестве хранилища данных, используйте register_azure_blob_container() этот метод.

Этот пример кода создает и регистрирует blob_datastore_name хранилище данных в ws рабочей области. Хранилище данных использует предоставленный ключ доступа к учетной записи для доступа к my-container-name контейнеру BLOB-объектов в учетной my-account-name записи хранения. Ознакомьтесь с разделом доступа к хранилищу и разрешениями , чтобы узнать о сценариях виртуальной сети и где найти необходимые учетные данные проверки подлинности.

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() этот метод.

Этот пример кода создает и регистрирует file_datastore_name хранилище данных в ws рабочей области. Хранилище данных использует общую папку my-fileshare-name в my-account-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 служба хранилища поколения 2 (ADLS 2-го поколения) используйтеметод register_azure_data_lake_gen2() для регистрации хранилища учетных данных, подключенного к хранилищу Azure Data Lake 2-го поколения с разрешениями субъекта-службы.

Чтобы использовать субъект-службу, необходимо зарегистрировать приложение и предоставить доступ к данным субъекта-службы с помощью управления доступом на основе ролей Azure (Azure RBAC) или списков управления доступом (ACL). Дополнительные сведения см. в разделе "Управление доступом" для ADLS 2-го поколения.

Этот код создает и регистрирует adlsgen2_datastore_name хранилище данных в ws рабочей области. Это хранилище данных обращается к файловой системе test в account_name учетной записи хранения с помощью предоставленных учетных данных субъекта-службы. Дополнительные сведения о сценариях виртуальной сети и о том, где найти необходимые учетные данные для проверки подлинности, см. в разделе Доступ к хранилищу и разрешения.

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

Помимо создания хранилища данных с помощью пакета SDK для Python и студии, можно также создавать хранилища данных с помощью шаблонов Azure Resource Manager или расширения VS Code Машинное обучение Azure.

Azure Resource Manager

Для создания хранилищ данных можно использовать несколько шаблонов https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices . Дополнительные сведения об этих шаблонах см. в шаблоне Azure Resource Manager для создания рабочей области для Машинное обучение Azure.

Расширение VS Code

Дополнительные сведения о создании и управлении хранилищами данных с расширением МАШИННОЕ ОБУЧЕНИЕ AZURE VS Code см. в руководстве по управлению ресурсами VS Code.

Использование данные в хранилищах данных

После создания хранилища данных создайте набор данных Машинное обучение Azure для взаимодействия с данными. Набор данных упаковает данные в неявно вычисляемый объект для задач машинного обучения, таких как обучение. С помощью наборов данных можно загружать или подключать файлы любого формата из служб хранилища Azure для обучения модели в целевом объекте вычислений. Узнайте больше об обучении моделей машинного обучения с помощью наборов данных.

Получение хранилищ данных из рабочей области

Чтобы получить конкретное хранилище данных, зарегистрированное в текущей рабочей области, используйте статический метод get() в классе Datastore:

# 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 предоставляет несколько способов использования моделей для оценки. Некоторые из этих методов не предоставляют доступа к хранилищам данных. В следующей таблице описывается, какие методы разрешают доступ к хранилищам данных во время оценки:

Способ Доступ к хранилищу данных Description
Прогнозирование в пакетном режиме Асинхронное создание прогнозов на основе больших объемов данных.
Веб-служба   Развертывание моделей в качестве веб-служб.

Если пакет SDK не предоставляет доступ к хранилищам данных, вы можете создать пользовательский код с соответствующим пакетом SDK Azure для доступа к данным. Например, пакет SDK служба хранилища Azure для клиентской библиотеки Python может получить доступ к данным, хранящимся в больших двоичных объектах или файлах.

Перемещение данных в поддерживаемые решения хранилища Azure

Машинное обучение Azure поддерживает доступ к данным из

  • Хранилище BLOB-объектов Azure
  • Файлы Azure
  • Хранилище Azure Data Lake Storage 1-го поколения
  • Azure Data Lake Storage 2-го поколения
  • База данных SQL Azure
  • База данных Azure для PostgreSQL

Если вы используете неподдерживаемое хранилище, рекомендуется использовать Фабрика данных Azure и эти действия для перемещения данных в поддерживаемые решения службы хранилища Azure. Перемещение данных в поддерживаемое хранилище поможет сократить расходы на исходящие данные во время экспериментов машинного обучения.

Фабрика данных Azure обеспечивает эффективную и устойчивую передачу данных с более чем 80 предварительно созданными соединителями без дополнительных затрат. К этим соединителям относятся службы данных Azure, локальные источники данных, Amazon S3, Redshift и Google BigQuery.

Следующие шаги