Compartilhar via


Conectar-se a serviços de armazenamento no Azure com armazenamentos de dados

APLICA-SE A: SDK do Python do AzureML v1

APLICA-SE A: Extensão ML da CLI do Azure v1

Neste artigo, saiba como se conectar aos serviços de armazenamento de dados no Azure com repositórios de armazenamento do Azure Machine Learning e o SDK do Python do Azure Machine Learning.

Os armazenamentos de dados conectam-se com segurança ao seu serviço de armazenamento no Azure e evitam colocar em risco suas credenciais de autenticação ou a integridade da fonte de dados original. Um armazenamento de dados armazena informações de conexão, por exemplo, sua ID da assinatura ou autorização de token, no cofre de chaves associado ao workspace. Com um armazenamento de dados, você pode acessar com segurança seu armazenamento, porque pode evitar a codificação de informações de conexão nos scripts. Você pode criar armazenamentos de dados que se conectem a estas soluções de armazenamento do Azure.

Para obter informações que descrevem como os armazenamentos de dados se ajustam ao fluxo de trabalho geral de acesso a dados do Azure Machine Learning, acesse o artigo Acessar dados com segurança.

Para saber como se conectar a um recurso de armazenamento de dados com uma interface do usuário, acesse Conectar-se ao armazenamento de dados com a interface do usuário do Estúdio.

Dica

Este artigo pressupõe que você se conectará ao seu serviço de armazenamento com credenciais de autenticação baseadas em credencial, por exemplo, uma entidade de serviço ou um token SAS (Assinatura de Acesso Compartilhado). Lembre-se de que, se as credenciais forem registradas nos armazenamentos de dados, todos os usuários com a função Leitor no workspace poderão recuperá-las. Para obter mais informações, acesse Gerenciar funções em seu workspace.

Para obter mais informações sobre o acesso a dados baseado em identidade, acesse Acesso a dados baseado em identidade nos serviços de armazenamento (v1).

Pré-requisitos

  • Uma assinatura do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente a versão paga ou gratuita do Azure Machine Learning

  • Uma conta de armazenamento do Azure com um tipo de armazenamento com suporte

  • O SDK do Azure Machine Learning para Python

  • Um Workspace do Azure Machine Learning.

    Crie um workspace do Azure Machine Learning ou use um workspace existente por meio do SDK do Python

    Importe as classes Workspace e Datastore e carregue as informações de assinatura do arquivo config.json com a função from_config(). Por padrão, a função procura o arquivo JSON no diretório atual, mas você também pode especificar um parâmetro de caminho para apontar para o arquivo com from_config(path="your/file/path"):

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

    A criação de um workspace registra automaticamente um contêiner de blobs e um compartilhamento de arquivo do Azure, como armazenamentos de dados, no workspace. Seus nomes são workspaceblobstore e workspacefilestore, respectivamente. O workspaceblobstore armazena os artefatos de workspace e seus logs de experimentos do Machine Learning. Ele serve como o armazenamento de dados padrão e não pode ser excluído do workspace. O workspacefilestore armazena os notebooks e os scripts R autorizados por meio da instância de computação.

    Observação

    O designer do Azure Machine Learning cria automaticamente um armazenamento de dados chamado azureml_globaldatasets quando você abre uma amostra na home page do designer. Esse armazenamento de dados contém apenas conjuntos de dados de amostra. Não use esse armazenamento de dados para acesso a dados confidenciais.

Tipos de serviço de armazenamento de dados com suporte

Atualmente, os armazenamentos de dados dão suporte ao armazenamento de informações de conexão nos serviços de armazenamento listados nesta matriz:

Dica

No caso de soluções de armazenamento sem suporte (aquelas não listadas na tabela a seguir), você poderá ter problemas quando se conectar e trabalhar com seus dados. Sugerimos que você migre seus dados para uma solução de armazenamento do Azure com suporte. Isso também pode ajudar em outros cenários, por exemplo, redução do custo de saída de dados durante experimentos de ML.

Tipo de armazenamento Tipo de autenticação Azure Machine Learning Studio SDK do Python do Azure Machine Learning CLI do Azure Machine Learning API REST do Azure Machine Learning Código VS
Armazenamento de Blobs do Azure Chave de conta
Token SAS
Compartilhamento de Arquivos do Azure Chave de conta
Token SAS
Azure Data Lake Storage Gen 1 Entidade de serviço
Azure Data Lake Storage Gen 2 Entidade de serviço
Banco de Dados SQL do Azure Autenticação SQL
Entidade de serviço
PostgreSQL do Azure Autenticação SQL
Banco de Dados do Azure para MySQL Autenticação SQL ✓* ✓* ✓*
Sistema de arquivos do Databricks Sem autenticação ✓** ✓ ** ✓**

Orientação de armazenamento

Recomendamos criar um armazenamento de dados para um contêiner de blobs do Azure. Tanto o armazenamento Standard quanto o Premium estão disponíveis para blobs. Embora o armazenamento premium seja mais caro, as velocidades de taxa de transferência mais rápidas deles podem aprimorar a velocidade dos treinamentos, especialmente se você faz o treinamento em um conjunto de dados grande. Para obter informações sobre os custos da conta de armazenamento, acesse a calculadora de preços do Azure.

O Azure Data Lake Storage Gen2 foi criado com base no Armazenamento de Blobs do Azure. Ele foi projetado para análise de Big Data corporativo. Como parte do Data Lake Storage Gen2, o Armazenamento de Blobs apresenta um namespace hierárquico. O namespace hierárquico organiza objetos/arquivos em uma hierarquia de diretórios para acesso eficiente a dados.

Acesso e permissões de armazenamento

Para garantir a conexão segura ao serviço de armazenamento do Azure, o Azure Machine Learning exige permissão para acesso ao contêiner de armazenamento de dados correspondente. Esse acesso depende das credenciais de autenticação usadas para registrar o armazenamento de dados.

Observação

Essas diretrizes também se aplicam a armazenamentos de dados criados com acesso a dados com base em identidade.

Rede virtual

Para se comunicar com uma conta de armazenamento que está protegida por um firewall ou em uma rede virtual, o Azure Machine Learning exige etapas de configuração extras. No caso de uma conta de armazenamento protegida por um firewall, adicione o endereço IP do cliente a uma lista de permitidos no portal do Azure.

O Azure Machine Learning pode receber solicitações de clientes de fora da rede virtual. Para garantir que a entidade que solicita os dados do serviço seja segura e para habilitar a exibição dos dados no seu workspace, use um ponto de extremidade privado com o workspace.

No caso de usuários do SDK do Python: para acessar seus dados em um destino de computação com o script de treinamento, localize o destino de computação na mesma rede virtual e sub-rede do armazenamento. Você pode usar uma instância de computação/cluster na mesma rede virtual.

No caso de usuários do Estúdio do Azure Machine Learning: vários recursos se baseiam na capacidade de ler dados de um conjunto de dados, por exemplo, visualizações de conjuntos de dados, perfis e machine learning automatizado. Para que esses recursos funcionem com armazenamentos por trás de redes virtuais, use uma identidade gerenciada do espaço de trabalho no Estúdio, para permitir que o Azure Machine Learning acesse a conta de armazenamento de fora da rede virtual.

Observação

No caso de dados armazenados em um Banco de Dados SQL do Azure protegido por uma rede virtual, lembre-se de definir Negar acesso público como Não com o portal do Azure para permitir que o Azure Machine Learning acesse a conta de armazenamento.

Validação de acesso

Aviso

Não há suporte para acesso entre locatários a contas de armazenamento. Se o seu cenário precisar ter acesso entre locatários, entre em contato com o alias da equipe de Suporte de Dados do Azure Machine Learning em amldatasupport@microsoft.com para obter assistência com uma solução de código personalizada.

Como parte do processo inicial de criação e registro do armazenamento de dados, o Azure Machine Learning verifica automaticamente se o serviço de armazenamento subjacente existe e se a entidade de segurança fornecida pelo usuário (nome de usuário, entidade de serviço ou token SAS) pode acessar o armazenamento especificado.

Após a criação do armazenamento de dados, essa validação é executada somente para métodos que exijam acesso ao contêiner de armazenamento subjacente, não a cada vez que os objetos de armazenamento de dados são recuperados. Por exemplo, a validação ocorrerá se você quiser baixar arquivos do armazenamento de dados. No entanto, se você só quiser alterar o armazenamento de dados padrão, a validação não acontecerá.

Para autenticar seu acesso ao serviço de armazenamento subjacente, você pode fornecer sua chave de conta, tokens de SAS (assinaturas de acesso compartilhado) ou entidade de serviço no método register_azure_*() correspondente do tipo de armazenamento de dados a ser criado. A matriz de tipo de armazenamento lista os tipos de autenticação com suporte correspondentes a cada tipo de armazenamento de dados.

Encontre as informações da chave de conta, do token SAS e da entidade de serviço no portal do Azure.

  • Para usar uma chave de conta ou um token SAS para autenticação, selecione Contas de armazenamento no painel à esquerda e escolha a conta de armazenamento que deseja registrar

    • A página Visão geral traz informações do nome da conta, do nome do compartilhamento de arquivo, do contêiner etc.
      • Para obter as chaves de conta, acesse Chaves de acesso no painel Configurações
      • Para obter os tokens SAS, acesse Assinaturas de acesso compartilhado no painel Configurações
  • Para usar uma entidade de serviço para autenticação, acesse Registros de aplicativo e selecione o aplicativo que deseja usar

    • A página Visão geral correspondente do aplicativo selecionado contém informações obrigatórias, por exemplo, ID do locatário e ID do cliente

Importante

Para alterar suas chaves de acesso de uma conta do Armazenamento do Azure (chave de conta ou token SAS), sincronize as novas credenciais com o workspace e os armazenamentos de dados conectados a ele. Para obter mais informações, acesse Sincronizar suas credenciais atualizadas.

Permissões

No caso de um contêiner de blobs do Azure e de um armazenamento do Azure Data Lake Gen 2, verifique se as credenciais de autenticação têm o acesso de Leitor de Dados do Blob de Armazenamento. Para obter mais informações, acesse Leitor de Dados do Blob de Armazenamento. Um token SAS de conta tem como padrão nenhuma permissão.

  • Para o acesso de leitura de dados, as credenciais de autenticação precisam ter, no mínimo, permissões de listagem e leitura em contêineres e objetos.

  • O acesso de gravação de dados também exige permissões de gravação e adição

Criar e registrar armazenamentos de dados

O registro de uma solução de armazenamento do Azure como um armazenamento de dados cria e registra automaticamente esse armazenamento de dados em um workspace específico. Confira Acesso de armazenamento e permissões nesta documentação para obter diretrizes sobre os cenários de rede virtual e onde encontrar as credenciais de autenticação obrigatórias.

Essa seção traz exemplos que descrevem como criar e registrar um armazenamento de dados por meio do SDK do Python nesses tipos de armazenamento. Os parâmetros mostrados nestes exemplos são os parâmetros obrigatórios para criar e registrar um armazenamento de dados:

Para criar armazenamentos de dados para outros serviços de armazenamento com suporte, acesse a documentação de referência dos métodos register_azure_* aplicáveis.

Para saber como se conectar a um recurso de armazenamento de dados com uma interface do usuário, acesse Conectar-se a dados com o Estúdio do Azure Machine Learning.

Importante

Se você cancelar e refizer o registro de um armazenamento de dados com o mesmo nome e houver falha, talvez o Azure Key Vault do workspace não tenha o recurso de exclusão temporária habilitado. Por padrão, a exclusão temporária está habilitada na instância do cofre de chaves criada pelo workspace, mas não poderá ser habilitada se você tiver usado um cofre de chaves já existente ou tiver um workspace criado antes de outubro de 2020. Para obter informações que descrevem como habilitar a exclusão temporária, confira Ativar a exclusão temporária em um cofre de chaves existente.

Observação

O nome de um armazenamento de dados deve conter apenas letras minúsculas, dígitos e sublinhado.

Contêiner de blobs do Azure

Para registrar um contêiner de blobs do Azure como armazenamento de dados, use o método register_azure_blob_container().

Este exemplo de código cria e registra o armazenamento de dados blob_datastore_name no workspace ws. O armazenamento de dados usa a chave de acesso da fornecida para acessar o contêiner de blobs my-container-name na conta de armazenamento my-account-name. Confira Acesso de armazenamento e permissões para obter diretrizes sobre os cenários de rede virtual e onde encontrar as credenciais de autenticação obrigatórias.

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)

Compartilhamento de arquivos do Azure

Para registrar um compartilhamento de arquivo do Azure como um armazenamento de dados, use o método register_azure_file_share().

Este exemplo de código cria e registra o armazenamento de dados file_datastore_name no workspace ws. O armazenamento de dados usa o compartilhamento de arquivo my-fileshare-name na conta de armazenamento my-account-name, com a chave de acesso da conta fornecida. Confira Acesso de armazenamento e permissões para obter diretrizes sobre os cenários de rede virtual e onde encontrar as credenciais de autenticação obrigatórias.

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 Generation 2

Para um armazenamento de dados do ADLS Gen 2 (Azure Data Lake Storage Generation 2), use o método register_azure_data_lake_gen2() para registrar um armazenamento de dados de credenciais conectado a um armazenamento do Azure Data Lake Gen 2 com permissões de entidade de serviço.

Para usar a entidade de serviço, você precisa registrar seu aplicativo e permitir o acesso a dados da entidade de serviço por meio do RBAC (controle de acesso baseado em função) do Azure ou das ACLs (listas de controle de acesso). Para obter mais informações, acesse Controle de acesso configurado para o ADLS Gen 2.

Este código cria e registra o armazenamento de dados adlsgen2_datastore_name no workspace ws. Esse armazenamento de dados acessa o sistema de arquivos test na conta de armazenamento account_name por meio do uso das credenciais de entidade de serviço fornecidas. Consulte a seção que trata de permissões de acesso de armazenamento para informar-se sobre cenários de rede virtual e onde encontrar as credenciais de autenticação necessárias.

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

Criar armazenamentos de dados com outras ferramentas do Azure

Além de criar armazenamentos de dados com o SDK do Python e o estúdio, você também pode criar armazenamentos de dados com os modelos do Azure Resource Manager ou a extensão para VS Code do Azure Machine Learning.

Azure Resource Manager

Você pode usar vários modelos em https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices para criar armazenamentos de dados. Para obter informações sobre como usar esses modelos, acesse Usar um modelo do Azure Resource Manager para criar um workspace para o Azure Machine Learning.

Extensão do VS Code

Para obter mais informações sobre a criação e o gerenciamento de armazenamentos de dados com a extensão para VS Code do Azure Machine Learning, acesse o guia de instruções de gerenciamento de recursos do VS Code.

Usar dados nos seus armazenamentos

Após a criação de um armazenamento de dados, crie um conjunto de dados do Azure Machine Learning para interagir com seus dados. Um conjunto de dados empacota seus dados em um objeto consumível avaliado lentamente para tarefas de machine learning, como treinamento. Com conjuntos de dados, você pode baixar ou montar arquivos de qualquer formato dos serviços de armazenamento do Azure para treinamento de modelos em um destino de computação. Saiba mais sobre como treinar modelos de ML com conjuntos de dados.

Obter armazenamentos de dados do seu workspace

Para obter um armazenamento de dados específico registrado no workspace atual, use o método estático get() na classe Datastore:

# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')

Para obter a lista de armazenamentos de dados registrados em um workspace especificado, use a propriedade datastores em um objeto de workspace:

# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
    print(name, datastore.datastore_type)

Este exemplo de código mostra como obter o armazenamento de dados padrão do workspace:

datastore = ws.get_default_datastore()

Você também pode alterar o armazenamento de dados padrão com este exemplo de código. Somente o SDK dá suporte a essa capacidade:

 ws.set_default_datastore(new_default_datastore)

Acessar dados durante a pontuação

O Azure Machine Learning fornece várias maneiras de usar seus modelos para pontuação. Alguns desses métodos não dão acesso aos armazenamentos de dados. A seguinte tabela descreve quais métodos permitem acesso aos armazenamentos de dados durante a pontuação:

Método Acesso ao armazenamento de dados Descrição
Previsão em lote Fazer previsões sobre grandes quantidades de dados assincronamente.
Serviço Web   Implantar modelos como serviço Web.

Quando o SDK não fornece acesso aos armazenamentos de dados, você poderá criar um código personalizado com o SDK do Azure relevante para acessar os dados. Por exemplo, a biblioteca de clientes do SDK do Armazenamento do Azure para Python pode acessar dados armazenados em blobs ou arquivos.

Mover dados para soluções de armazenamento do Azure com suporte

O Azure Machine Learning dá suporte ao acesso a dados de

  • Armazenamento de Blobs do Azure
  • Arquivos do Azure
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Banco de Dados SQL do Azure
  • Banco de Dados do Azure para PostgreSQL

Se você usa um armazenamento sem suporte, recomendamos que use o Azure Data Factory e estas etapaspara migrar seus dados para soluções de armazenamento do Azure com suporte. A mudança de dados para o armazenamento com suporte pode ajudá-lo a economizar custos de saída de dados durante experimentos de aprendizado de máquina.

O Azure Data Factory fornece transferência de dados eficiente e resiliente com mais de 80 conectores predefinidos sem custo adicional. Esses conectores incluem serviços de dados do Azure, fontes de dados locais, o Amazon S3, o Redshift e o Google BigQuery.

Próximas etapas