Ligar a serviços de armazenamento no Azure com arquivos de dados
APLICA-SE A:SDK python azureml v1
APLICA-SE A:Extensão de ml da CLI do Azure v1
Neste artigo, saiba como ligar a serviços de armazenamento de dados no Azure com arquivos de dados do Azure Machine Learning e o SDK Python do Azure Machine Learning.
Os arquivos de dados ligam-se de forma segura ao seu serviço de armazenamento no Azure sem colocar as credenciais de autenticação e a integridade da origem de dados original em risco. Armazenam informações de ligação, como o ID da subscrição e a autorização de tokens no seu Key Vault associados à área de trabalho, para que possa aceder de forma segura ao seu armazenamento sem ter de os codificar nos scripts. Pode criar arquivos de dados que se ligam a estas soluções de armazenamento do Azure.
Para compreender onde os arquivos de dados se encaixam no fluxo de trabalho geral de acesso a dados do Azure Machine Learning, veja o artigo Dados de acesso seguro .
Para obter uma experiência de código baixa, veja como utilizar o estúdio do Azure Machine Learning para criar e registar arquivos de dados.
Dica
Este artigo pressupõe que pretende ligar ao seu serviço de armazenamento com credenciais de autenticação baseadas em credenciais, como um principal de serviço ou um token de assinatura de acesso partilhado (SAS). Tenha em atenção que, se as credenciais estiverem registadas nos arquivos de dados, todos os utilizadores com a função Leitor da área de trabalho poderão obter estas credenciais. Saiba mais sobre a função Leitor da área de trabalho.
Se for uma preocupação, saiba como Ligar a serviços de armazenamento com acesso baseado em identidade.
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.
Crie uma área de trabalho do Azure Machine Learning ou utilize uma existente através do SDK python.
Importe a
Workspace
classe eDatastore
e carregue as informações da subscrição do ficheiroconfig.json
com a funçãofrom_config()
. Esta ação procura o ficheiro JSON no diretório atual por predefinição, mas também pode especificar um parâmetro de caminho para apontar para o ficheiro comfrom_config(path="your/file/path")
.import azureml.core from azureml.core import Workspace, Datastore ws = Workspace.from_config()
Quando cria uma área de trabalho, um contentor de blobs do Azure e uma partilha de ficheiros do Azure são automaticamente registados como arquivos de dados na área de trabalho. São denominados
workspaceblobstore
eworkspacefilestore
, respetivamente. Oworkspaceblobstore
é utilizado para armazenar artefactos da área de trabalho e os registos de experimentação de machine learning. Também é definido como o arquivo de dados predefinido e não pode ser eliminado da área de trabalho. Oworkspacefilestore
é utilizado para armazenar blocos de notas e scripts R autorizados através da instância de computação.Nota
O estruturador do Azure Machine Learning irá criar um arquivo de dados com o nome azureml_globaldatasets automaticamente quando abrir um exemplo na home page do estruturador. Este arquivo de dados contém apenas conjuntos de dados de exemplo. Não utilize este arquivo de dados para qualquer acesso a dados confidenciais.
Tipos de serviços de armazenamento de dados suportados
Atualmente, os arquivos de dados suportam o armazenamento de informações de ligação aos serviços de armazenamento listados na seguinte matriz.
Dica
Para soluções de armazenamento não suportadas (as que não estão listadas na tabela abaixo), poderá deparar-se com problemas ao ligar e trabalhar com os seus dados. Sugerimos que mova os seus dados para uma solução de armazenamento do Azure suportada. Esta ação também pode ajudar com cenários adicionais, como poupar o custo de saída de dados durante experimentações de ML.
Tipo de armazenamento | Tipo de autenticação | estúdio do Azure Machine Learning | Azure Machine Learning Python SDK | CLI do Azure Machine Learning | Azure Machine Learning REST API | Código VS |
---|---|---|---|---|---|---|
Armazenamento de Blobs do Azure | Chave da conta Token de SAS |
✓ | ✓ | ✓ | ✓ | ✓ |
Partilha de Ficheiros do Azure | Chave da 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 do 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 do Databricks | Sem autenticação | ✓** | ✓ ** | ✓** |
- O MySQL só é suportado para o pipeline DataTransferStep.
- O Databricks só é suportado para o pipeline DatabricksStep.
Orientações de armazenamento
Recomendamos que crie um arquivo de dados para um contentor de Blobs do Azure. Tanto o armazenamento standard como o premium estão disponíveis para blobs. Embora o armazenamento premium seja mais dispendioso, as velocidades de débito mais rápidas podem melhorar a velocidade das suas execuções de preparação, especialmente se preparar com um grande conjunto de dados. Para obter informações sobre o custo das contas de armazenamento, veja a calculadora de preços do Azure.
Azure Data Lake Storage Gen2 baseia-se no armazenamento de Blobs do Azure e foi concebido para análise de macrodados empresariais. Uma parte fundamental do Data Lake Storage Gen2 é a adição de um espaço de nomes hierárquico ao Armazenamento de blobs. O espaço de nomes hierárquico organiza objetos/ficheiros numa hierarquia de diretórios para um acesso de dados eficiente.
Acesso e permissões de armazenamento
Para garantir que se liga de forma segura ao seu serviço de armazenamento do Azure, o Azure Machine Learning requer que tenha permissão para aceder ao contentor de armazenamento de dados correspondente. Este acesso depende das credenciais de autenticação utilizadas para registar o arquivo de dados.
Nota
Esta orientação também se aplica aos arquivos de dados criados com acesso a dados baseados em identidade.
Rede virtual
O Azure Machine Learning requer passos de configuração adicionais para comunicar com uma conta de armazenamento protegida por uma firewall ou numa rede virtual. Se a conta de armazenamento estiver protegida por uma firewall, pode adicionar o endereço IP do cliente a uma lista de permissões através da portal do Azure.
O Azure Machine Learning pode receber pedidos de clientes fora da rede virtual. Para garantir que a entidade que pede dados do serviço é segura e para permitir que os dados sejam apresentados na área de trabalho, utilize um ponto final privado com a área de trabalho.
Para os utilizadores do SDK Python acederem aos seus dados através do script de preparação num destino de computação, o destino de computação tem de estar dentro da mesma rede virtual e sub-rede do armazenamento. Pode utilizar uma instância de computação/cluster na mesma rede virtual.
Para estúdio do Azure Machine Learning utilizadores, várias funcionalidades dependem da capacidade de ler dados de um conjunto de dados, como pré-visualizações de conjuntos de dados, perfis e machine learning automatizado. Para estas funcionalidades funcionarem com armazenamento por trás de redes virtuais, utilize uma identidade gerida de área de trabalho no estúdio para permitir que o Azure Machine Learning aceda à conta de armazenamento de fora da rede virtual.
Nota
Se o armazenamento de dados for uma Base de Dados SQL do Azure por trás de uma rede virtual, certifique-se de que define Negar acesso público como Não através do portal do Azure para permitir que o Azure Machine Learning aceda à conta de armazenamento.
Validação de acesso
Aviso
O acesso entre inquilinos a contas de armazenamento não é suportado. Se for necessário acesso entre inquilinos para o seu cenário, contacte o alias da equipa de Suporte de Dados do Azure Machine Learning em amldatasupport@microsoft.com para obter assistência com uma solução de código personalizado.
Como parte do processo inicial de criação e registo do arquivo de dados, o Azure Machine Learning valida automaticamente a existência do serviço de armazenamento subjacente e o principal fornecido pelo utilizador (nome de utilizador, principal de serviço ou token de SAS) tem acesso ao armazenamento especificado.
Após a criação do arquivo de dados, esta validação só é efetuada para métodos que requerem acesso ao contentor de armazenamento subjacente e não sempre que são obtidos objetos de arquivo de dados. Por exemplo, a validação ocorre se quiser transferir ficheiros do arquivo de dados; mas se quiser apenas alterar o arquivo de dados predefinido, a validação não acontece.
Para autenticar o acesso ao serviço de armazenamento subjacente, pode fornecer a sua chave de conta, tokens de assinaturas de acesso partilhado (SAS) ou o principal de serviço no método correspondente register_azure_*()
do tipo de arquivo de dados que pretende criar. A matriz de tipo de armazenamento lista os tipos de autenticação suportados que correspondem a cada tipo de arquivo de dados.
Pode encontrar informações sobre a chave da conta, o token de SAS e o principal de serviço no seu portal do Azure.
Se planear utilizar uma chave de conta ou token de SAS para autenticação, selecione Contas de Armazenamento no painel esquerdo e escolha a conta de armazenamento que pretende registar.
- A página Descrição geral fornece informações como o nome da conta, o contentor e o nome da partilha de ficheiros.
- Para chaves de conta, aceda a Chaves de acesso no painel Definições .
- Para tokens SAS, aceda a Assinaturas de acesso partilhado no painel Definições .
- A página Descrição geral fornece informações como o nome da conta, o contentor e o nome da partilha de ficheiros.
Se planear utilizar um principal de serviço para autenticação, aceda ao seu Registos de aplicações e selecione a aplicação que pretende utilizar.
- A página Descrição Geral correspondente irá conter as informações necessárias, como o ID do inquilino e o ID de cliente.
Importante
Se precisar de alterar as chaves de acesso de uma conta de Armazenamento do Azure (chave de conta ou token SAS), certifique-se de que sincroniza as novas credenciais com a área de trabalho e os arquivos de dados ligados à mesma. Saiba como sincronizar as credenciais atualizadas.
Permissões
Para o contentor de blobs do Azure e o armazenamento do Azure Data Lake Gen2, certifique-se de que as credenciais de autenticação têm acesso ao Leitor de Dados do Blob de Armazenamento . Saiba mais sobre o Leitor de Dados de Blobs de Armazenamento. Um token de SAS de conta não tem permissões predefinidas.
Para acesso de leitura de dados, as suas credenciais de autenticação têm de ter, no mínimo, permissões de lista e leitura para contentores e objetos.
Para acesso de escrita de dados, também são necessárias permissões de escrita e de adição.
Criar e registar arquivos de dados
Quando regista uma solução de armazenamento do Azure como um arquivo de dados, cria e regista automaticamente esse arquivo de dados numa área de trabalho específica. Reveja a secção permissões de acesso & ao armazenamento para obter orientações sobre cenários de rede virtual e onde encontrar as credenciais de autenticação necessárias.
Nesta secção estão exemplos de como criar e registar um arquivo de dados através do SDK Python para os seguintes tipos de armazenamento. Os parâmetros fornecidos nestes exemplos são os parâmetros necessários para criar e registar um arquivo de dados.
Para criar arquivos de dados para outros serviços de armazenamento suportados, veja a documentação de referência dos métodos aplicáveisregister_azure_*
.
Se preferir uma experiência de código baixa, veja Ligar a dados com estúdio do Azure Machine Learning.
Importante
Se anular o registo e voltar a registar um arquivo de dados com o mesmo nome e este falhar, o Key Vault do Azure para a área de trabalho poderá não ter a eliminação recuperável ativada. Por predefinição, a eliminação recuperável está ativada para a instância do cofre de chaves criada pela área de trabalho, mas poderá não estar ativada se tiver utilizado um cofre de chaves existente ou tiver uma área de trabalho criada antes de outubro de 2020. Para obter informações sobre como ativar a eliminação recuperável, consulte Ativar a Eliminação Recuperável para um cofre de chaves existente.
Nota
O nome do arquivo de dados deve consistir apenas em letras minúsculas, dígitos e carateres de sublinhado.
Contentor de blobs do Azure
Para registar um contentor de blobs do Azure como um arquivo de dados, utilize register_azure_blob_container()
.
O código seguinte cria e regista o blob_datastore_name
arquivo de dados na área ws
de trabalho. Este arquivo de dados acede ao my-container-name
contentor de blobs na my-account-name
conta de armazenamento através da chave de acesso da conta fornecida. Reveja a secção permissões de acesso & ao armazenamento para obter orientações 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 registar uma partilha de ficheiros do Azure como um arquivo de dados, utilize register_azure_file_share()
.
O código seguinte cria e regista o file_datastore_name
arquivo de dados na área ws
de trabalho. Este arquivo de dados acede à my-fileshare-name
partilha de ficheiros na my-account-name
conta de armazenamento através da chave de acesso da conta fornecida. Reveja a secção permissões de acesso & ao armazenamento para obter orientações 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 arquivo de dados de Geração 2 (ADLS Gen2) de Azure Data Lake Storage, utilize register_azure_data_lake_gen2() para registar um arquivo de dados de credenciais ligado a um armazenamento do Azure DataLake Gen2 com permissões de principal de serviço.
Para utilizar o principal de serviço, tem de registar a aplicação e conceder acesso aos dados do principal de serviço através do controlo de acesso baseado em funções do Azure (RBAC do Azure) ou das listas de controlo de acesso (ACL). Saiba mais sobre a configuração do controlo de acesso para o ADLS Gen2.
O código seguinte cria e regista o adlsgen2_datastore_name
arquivo de dados na área ws
de trabalho. Este arquivo de dados acede ao sistema test
de ficheiros na account_name
conta de armazenamento com as credenciais do principal de serviço fornecidas.
Reveja a secção permissões de acesso & ao armazenamento para obter orientações 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 arquivos de dados com outras ferramentas do Azure
Além de criar arquivos de dados com o SDK python e o studio, também pode utilizar modelos de Resource Manager do Azure ou a extensão do VS Code do Azure Machine Learning.
Azure Resource Manager
Existem vários modelos em https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices que podem ser utilizados para criar arquivos de dados.
Para obter informações sobre como utilizar estes modelos, veja Utilizar um modelo do Azure Resource Manager para criar uma área de trabalho para o Azure Machine Learning.
Extensão do VS Code
Se preferir criar e gerir arquivos de dados com a extensão do VS Code do Azure Machine Learning, visite o guia de instruções de gestão de recursos do VS Code para saber mais.
Utilizar dados nos arquivos de dados
Depois de criar um arquivo de dados, crie um conjunto de dados do Azure Machine Learning para interagir com os seus dados. Os conjuntos de dados empacotam os seus dados num objeto consumível lazily avaliado para tarefas de machine learning, como a preparação.
Com os conjuntos de dados, pode transferir ou montar ficheiros de qualquer formato dos serviços de armazenamento do Azure para preparação de modelos num destino de computação. Saiba mais sobre como preparar modelos de ML com conjuntos de dados.
Obter arquivos de dados a partir da sua área de trabalho
Para obter um arquivo de dados específico registado na área de trabalho atual, utilize o get()
método estático na Datastore
classe :
# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')
Para obter a lista de arquivos de dados registados numa determinada área de trabalho, pode utilizar a datastores
propriedade num objeto de área de trabalho:
# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
print(name, datastore.datastore_type)
Para obter o arquivo de dados predefinido da área de trabalho, utilize esta linha:
datastore = ws.get_default_datastore()
Também pode alterar o arquivo de dados predefinido com o seguinte código. Esta capacidade só é suportada através do SDK.
ws.set_default_datastore(new_default_datastore)
Aceder a dados durante a classificação
O Azure Machine Learning fornece várias formas de utilizar os seus modelos para classificação. Alguns destes métodos não fornecem acesso aos arquivos de dados. Utilize a tabela seguinte para compreender que métodos lhe permitem aceder aos arquivos de dados durante a classificação:
Método | Acesso ao arquivo de dados | Description |
---|---|---|
Predição de lote | ✔ | Faça predições em grandes quantidades de dados de forma assíncrona. |
Serviço Web | Implementar modelos como um serviço Web. |
Para situações em que o SDK não fornece acesso aos arquivos de dados, poderá conseguir criar código personalizado com o SDK do Azure relevante para aceder aos dados. Por exemplo, o SDK de Armazenamento do Azure para Python é uma biblioteca de cliente que pode utilizar para aceder a dados armazenados em blobs ou ficheiros.
Mover dados para soluções de armazenamento do Azure suportadas
O Azure Machine Learning suporta o acesso a dados a partir do armazenamento de Blobs do Azure, Ficheiros do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Base de Dados SQL do Azure e Base de Dados do Azure para PostgreSQL. Se estiver a utilizar armazenamento não suportado, recomendamos que mova os seus dados para soluções de armazenamento do Azure suportadas com Azure Data Factory e estes passos. Mover dados para o armazenamento suportado pode ajudá-lo a poupar nos custos de saída de dados durante experimentações de machine learning.
Azure Data Factory fornece transferência de dados eficiente e resiliente com mais de 80 conectores pré-criados sem custos adicionais. Estes conectores incluem serviços de dados do Azure, origens de dados no local, Amazon S3 e Redshift e Google BigQuery.