Conectar-se a serviços de armazenamento no Azure com armazenamentos de dados
APLICA-SE A: Python SDK azureml v1
APLICA-SE A: Azure CLI ml extension v1
Neste artigo, saiba como se conectar a serviços de armazenamento de dados no Azure com armazenamentos de dados do Azure Machine Learning e o SDK Python do Azure Machine Learning.
Os armazenamentos de dados se conectam com segurança ao seu serviço de armazenamento no Azure e evitam riscos para suas credenciais de autenticação ou para a integridade do armazenamento de dados original. Um armazenamento de dados armazena informações de conexão - por exemplo, sua ID de assinatura ou autorização de token - no Cofre da Chave associado ao espaço de trabalho. Com um armazenamento de dados, você pode acessar seu armazenamento com segurança porque pode evitar informações de conexão codificadas em seus scripts. Você pode criar armazenamentos de dados que se conectam a essas 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 Aprendizado de Máquina do Azure, visite 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, visite Conectar-se ao armazenamento de dados com a interface do usuário do estúdio.
Gorjeta
Este artigo pressupõe que você se conectará ao serviço de armazenamento com credenciais de autenticação baseadas em credenciais - por exemplo, uma entidade de serviço ou um token de assinatura de acesso compartilhado (SAS). Observe que, se as credenciais estiverem registradas em armazenamentos de dados, todos os usuários com a função Leitor de espaço de trabalho poderão recuperá-las. Para obter mais informações, visite Gerenciar funções em seu espaço de trabalho.
Para obter mais informações sobre o acesso a dados baseado em identidade, visite Acesso a dados baseado em identidade para serviços de armazenamento (v1).
Pré-requisitos
Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning
Uma conta de armazenamento do Azure com um tipo de armazenamento suportado
Uma área de trabalho do Azure Machine Learning.
Criar um espaço de trabalho do Azure Machine Learning ou usar um espaço de trabalho existente por meio do SDK do Python
Importe a classe e carregue as
Workspace
informações da sua subscrição aconfig.json
partir do ficheiro com afrom_config()
função.Datastore
Por padrão, a função procura o arquivo JSON no diretório atual, mas você também pode especificar um parâmetro path para apontar para o arquivo comfrom_config(path="your/file/path")
:import azureml.core from azureml.core import Workspace, Datastore ws = Workspace.from_config()
A criação de espaço de trabalho registra automaticamente um contêiner de blob do Azure e um compartilhamento de arquivos do Azure, como armazenamentos de dados, no espaço de trabalho. Eles são nomeados
workspaceblobstore
eworkspacefilestore
, respectivamente. Osworkspaceblobstore
artefatos do espaço de trabalho das lojas e seus logs de experimento de aprendizado de máquina. Ele serve como o armazenamento de dados padrão e não pode ser excluído do espaço de trabalho. Oworkspacefilestore
armazena notebooks e scripts R autorizados via instância de computação.Nota
O designer do Azure Machine Learning cria automaticamente um armazenamento de dados chamado azureml_globaldatasets quando você abre um exemplo na página inicial do designer. Este armazenamento de dados contém apenas conjuntos de dados de exemplo. Por favor, não use este armazenamento de dados para qualquer acesso a dados confidenciais.
Tipos de serviço de armazenamento de dados suportados
Atualmente, os armazenamentos de dados oferecem suporte ao armazenamento de informações de conexão com os serviços de armazenamento listados nesta matriz:
Gorjeta
Para soluções de armazenamento sem suporte (aquelas não listadas na tabela a seguir), você pode encontrar problemas ao se conectar e trabalhar com seus dados. Sugerimos que mova os seus dados para uma solução de armazenamento do Azure suportada. Isso também pode ajudar em cenários adicionais - por exemplo, redução do custo de saída de dados durante experimentos de ML.
Tipo de armazenamento | Authentication type | Azure Machine Learning studio | SDK do Python do Azure Machine Learning | CLI do Azure Machine Learning | Azure Machine Learning REST API | Código VS |
---|---|---|---|---|---|---|
Armazenamento de Blobs do Azure | Chave de conta Token de SAS |
✓ | ✓ | ✓ | ✓ | ✓ |
Partilha de Ficheiros do Azure | Chave de conta Token de SAS |
✓ | ✓ | ✓ | ✓ | ✓ |
Azure Data Lake Storage Gen 1 | Service principal (Principal de serviço) | ✓ | ✓ | ✓ | ✓ | |
Azure Data Lake Storage Gen2 | Service principal (Principal de serviço) | ✓ | ✓ | ✓ | ✓ | |
Base de Dados SQL do Azure | Autenticação SQL Service principal (Principal de serviço) |
✓ | ✓ | ✓ | ✓ | |
Azure PostgreSQL | Autenticação do SQL | ✓ | ✓ | ✓ | ✓ | |
Base de Dados do Azure para MySQL | Autenticação do SQL | ✓* | ✓* | ✓* | ||
Sistema de ficheiros Databricks | Sem autenticação | ✓** | ✓ ** | ✓** |
- O MySQL só é suportado para pipeline DataTransferStep.
- Databricks só é suportado para pipeline DatabricksStep.
Orientações de armazenamento
Recomendamos a criação de um armazenamento de dados para um contêiner de Blob do Azure. O armazenamento padrão e premium está disponível para blobs. Embora o armazenamento premium seja mais caro, suas velocidades de transferência mais rápidas podem melhorar a velocidade de suas corridas de treinamento, especialmente se você treinar em um grande conjunto de dados. Para obter informações sobre os custos da conta de armazenamento, visite a calculadora de preços do Azure.
O Azure Data Lake Storage Gen2 foi criado sobre o armazenamento de Blob do Azure. Ele foi projetado para análise de big data empresarial. Como parte do Data Lake Storage Gen2, o armazenamento de Blob apresenta um namespace hierárquico. O namespace hierárquico organiza objetos/arquivos em uma hierarquia de diretórios para acesso eficiente aos dados.
Acesso e permissões de armazenamento
Para garantir que você se conecte com segurança ao seu serviço de armazenamento do Azure, o Azure Machine Learning exige que você tenha permissão para acessar o contêiner de armazenamento de dados correspondente. Esse acesso depende das credenciais de autenticação usadas para registrar o armazenamento de dados.
Nota
Esta orientação também se aplica a armazenamentos de dados criados com acesso a dados baseado em identidade.
Rede virtual
Para se comunicar com uma conta de armazenamento localizada atrás de um firewall ou dentro de uma rede virtual, o Aprendizado de Máquina do Azure requer etapas de configuração adicionais. Para uma conta de armazenamento localizada atrás de um firewall, você pode adicionar o endereço IP do seu cliente a uma lista de permissões com o portal do Azure.
O Azure Machine Learning pode receber solicitações de clientes fora da rede virtual. Para garantir que a entidade que solicita dados do serviço esteja segura e para permitir a exibição de dados em seu espaço de trabalho, use um ponto de extremidade privado com seu espaço de trabalho.
Para usuários do SDK do Python: Para acessar seus dados em um destino de computação com seu script de treinamento, você deve localizar o destino de computação dentro da mesma rede virtual e sub-rede do armazenamento. Você pode usar uma instância/cluster de computação na mesma rede virtual.
Para usuários do estúdio do Azure Machine Learning: vários recursos dependem da capacidade de ler dados de um conjunto de dados - por exemplo, visualizações de conjuntos de dados, perfis e aprendizado de máquina automatizado. Para que esses recursos funcionem com armazenamento por trás de redes virtuais, use uma identidade gerenciada de espaço de trabalho no estúdio para permitir que o Aprendizado de Máquina do Azure acesse a conta de armazenamento de fora da rede virtual.
Nota
Para dados armazenados em um Banco de Dados SQL do Azure atrás de uma rede virtual, defina Negar acesso público como Não com o portal do Azure, para permitir que o Aprendizado de Máquina do Azure 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 de 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 Aprendizado de Máquina do Azure valida 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 só é executada para métodos que exigem acesso ao contêiner de armazenamento subjacente, não sempre que os objetos do armazenamento de dados são recuperados. Por exemplo, a validação acontece se você quiser baixar arquivos do seu armazenamento de dados. No entanto, se você quiser apenas alterar seu 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 SAS (assinaturas de acesso compartilhado) ou entidade de serviço no método correspondente register_azure_*()
do tipo de armazenamento de dados que deseja criar. A matriz de tipo de armazenamento lista os tipos de autenticação suportados que correspondem a cada tipo de armazenamento de dados.
Você pode encontrar a chave da conta, o token SAS e as informações da entidade de serviço no portal do Azure.
Para usar uma chave de conta ou token SAS para autenticação, selecione Contas de Armazenamento no painel esquerdo e escolha a conta de armazenamento que deseja registrar
- A página Visão geral fornece informações sobre o nome da conta, o nome do compartilhamento de arquivos, o contêiner, etc.
- Para chaves de conta, vá para Teclas de acesso no painel Configurações
- Para tokens SAS, vá para Assinaturas de acesso compartilhado no painel Configurações
- A página Visão geral fornece informações sobre o nome da conta, o nome do compartilhamento de arquivos, o contêiner, etc.
Para usar uma entidade de serviço para autenticação, vá para seus registros de aplicativo e selecione o aplicativo que deseja usar
- A página Visão geral correspondente do aplicativo selecionado contém as informações necessárias - por exemplo, ID do locatário e ID do cliente
Importante
Para alterar suas chaves de acesso para uma conta de Armazenamento do Azure (chave de conta ou token SAS), sincronize as novas credenciais com seu espaço de trabalho e os armazenamentos de dados conectados a ele. Para obter mais informações, visite sincronizar suas credenciais atualizadas.
Permissões
Para o contêiner de blob do Azure e o armazenamento do Azure Data Lake Gen 2, verifique se suas credenciais de autenticação têm acesso ao Leitor de Dados de Blob de Armazenamento . Para obter mais informações, visite Storage Blob Data Reader. Um token SAS de conta tem como padrão nenhuma permissão.
Para acesso de leitura de dados, suas credenciais de autenticação devem ter um mínimo de permissões de lista e leitura para contêineres e objetos
O acesso de gravação de dados também requer permissões de gravação e adição
Criar e registrar datastores
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 espaço de trabalho específico. Analise as permissões de acesso ao armazenamento e permissões neste documento para obter orientações sobre cenários de rede virtual e onde encontrar as credenciais de autenticação necessárias.
Essa seção oferece exemplos que descrevem como criar e registrar um armazenamento de dados por meio do SDK do Python para esses tipos de armazenamento. Os parâmetros mostrados nestes exemplos são os parâmetros necessários para criar e registrar um armazenamento de dados:
Para criar armazenamentos de dados para outros serviços de armazenamento suportados, visite a documentação de referência para os métodos aplicáveisregister_azure_*
.
Para saber como se conectar a um recurso de armazenamento de dados com uma interface do usuário, visite Conectar-se a dados com o estúdio de Aprendizado de Máquina do Azure.
Importante
Se você cancelar o registro e registrar novamente um armazenamento de dados com o mesmo nome e o novo registro falhar, o Cofre da Chave do Azure para seu espaço de trabalho pode não ter a exclusão suave habilitada. Por padrão, a exclusão suave está habilitada para a instância do cofre de chaves criada pelo seu espaço de trabalho, mas pode não ser habilitada se você tiver usado um cofre de chaves existente ou tiver um espaço de trabalho criado antes de outubro de 2020. Para obter informações que descrevem como habilitar a exclusão suave, consulte Ativar a exclusão suave para um cofre de chaves existente.
Nota
Um nome de armazenamento de dados deve conter apenas letras minúsculas, dígitos e sublinhados.
Contentor de blobs do Azure
Para registrar um contêiner de blob do Azure como um armazenamento de dados, use o register_azure_blob_container()
método.
Este exemplo de código cria e registra o blob_datastore_name
armazenamento de dados no ws
espaço de trabalho. O armazenamento de dados usa a chave de acesso da conta fornecida para acessar o contêiner de my-container-name
blob na my-account-name
conta de armazenamento. Consulte a seção de permissões de acesso ao armazenamento para obter orientação sobre cenários de rede virtual e onde encontrar as credenciais de autenticação necessá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)
Partilha de ficheiros do Azure
Para registrar um compartilhamento de arquivos do Azure como um armazenamento de dados, use o register_azure_file_share()
método.
Este exemplo de código cria e registra o file_datastore_name
armazenamento de dados no ws
espaço de trabalho. O armazenamento de dados usa o my-fileshare-name
compartilhamento de arquivos na conta de my-account-name
armazenamento, com a chave de acesso da conta fornecida. Consulte a seção de permissões de acesso ao armazenamento para obter orientação sobre cenários de rede virtual e onde encontrar as credenciais de autenticação necessá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 Geração 2
Para um armazenamento de dados do Azure Data Lake Storage Generation 2 (ADLS Gen 2), use omé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 sua entidade de serviço, você deve registrar seu aplicativo e conceder acesso aos dados da entidade de serviço por meio do controle de acesso baseado em função do Azure (Azure RBAC) ou listas de controle de acesso (ACL). Para obter mais informações, visite controle de acesso configurado para ADLS Gen 2.
Esse código cria e registra o adlsgen2_datastore_name
armazenamento de dados no ws
espaço de trabalho. Esse armazenamento de dados acessa o sistema test
de arquivos na account_name
conta de armazenamento, por meio do uso das credenciais da entidade de serviço fornecida. Consulte a seção de permissões de acesso ao armazenamento para obter orientação 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 da criação de armazenamento de dados com o SDK do Python e o estúdio, você também pode criar armazenamentos de dados com modelos do Azure Resource Manager ou a extensão 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 datastores. Para obter informações sobre esses modelos, visite Usar um modelo do Azure Resource Manager para criar um espaço de trabalho para o Azure Machine Learning.
Extensão VS Code
Para obter mais informações sobre a criação e o gerenciamento de armazenamentos de dados com a extensão VS Code do Azure Machine Learning, visite o guia de instruções de gerenciamento de recursos do VS Code.
Usar dados em seus armazenamentos de dados
Após a criação do 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 preguiçosamente para tarefas de aprendizado de máquina, 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 modelo em um destino de computação. Saiba mais sobre como treinar modelos de ML com conjuntos de dados.
Obter armazenamentos de dados do seu espaço de trabalho
Para obter um armazenamento de dados específico registrado no espaço de trabalho atual, use o get()
Datastore
método estático na classe:
# 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 determinado espaço de trabalho, use a datastores
propriedade em um objeto de espaço de trabalho:
# 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 espaço de trabalho:
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 suporta 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 fornecem acesso a armazenamentos de dados. A tabela a seguir descreve quais métodos permitem o acesso a armazenamentos de dados durante a pontuação:
Método | Acesso ao Datastore | Description |
---|---|---|
Previsão de lote | ✔ | Faça previsões sobre grandes quantidades de dados de forma assíncrona. |
Serviço Web | Implante modelos como um serviço Web. |
Quando o SDK não fornece acesso a armazenamentos de dados, você poderá criar código personalizado com o SDK do Azure relevante para acessar os dados. Por exemplo, o SDK de Armazenamento do Azure para biblioteca de cliente Python pode acessar dados armazenados em blobs ou arquivos.
Mover dados para soluções de armazenamento do Azure suportadas
O Azure Machine Learning dá suporte ao acesso a dados de
- Armazenamento de Blobs do Azure
- Ficheiros do Azure
- Armazenamento do Azure Data Lake Ger1
- Armazenamento do Azure Data Lake Ger2
- Base de Dados SQL do Azure
- Base de Dados do Azure para PostgreSQL
Se utilizar armazenamento sem suporte, recomendamos que utilize o Azure Data Factory e estes passos para mover os seus dados para soluções de armazenamento do Azure suportadas. Mover dados para o armazenamento suportado 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 pré-construídos, sem custo extra. Esses conectores incluem serviços de dados do Azure, fontes de dados locais, Amazon S3 e Redshift e Google BigQuery.