Configurar o AutoML para treinar um modelo de processamento de linguagem natural com Python (visualização)
APLICA-SE A: Python SDK azureml v1
Importante
Esta funcionalidade está atualmente em pré-visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas.
Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
Neste artigo, você aprenderá a treinar modelos de processamento de linguagem natural (NLP) com ML automatizado no SDK Python do Azure Machine Learning.
O ML automatizado suporta PNL, o que permite que profissionais de ML e cientistas de dados tragam seus próprios dados de texto e criem modelos personalizados para tarefas como classificação de texto de várias classes, classificação de texto de vários rótulos e reconhecimento de entidade nomeada (NER).
Você pode se integrar perfeitamente com o recurso de rotulagem de dados do Aprendizado de Máquina do Azure para rotular seus dados de texto ou trazer seus dados rotulados existentes. O ML automatizado oferece a opção de usar treinamento distribuído em clusters de computação multi-GPU para treinamento de modelo mais rápido. O modelo resultante pode ser operacionalizado em escala aproveitando os recursos de MLOps do Azure Machine Learning.
Pré-requisitos
Subscrição do Azure. Se você não tiver uma assinatura do Azure, inscreva-se para experimentar a versão gratuita ou paga do Azure Machine Learning hoje mesmo.
Um espaço de trabalho do Azure Machine Learning com uma computação de treinamento de GPU. Para criar o espaço de trabalho, consulte Criar recursos do espaço de trabalho. Consulte Tamanhos de máquina virtual otimizados para GPU para obter mais detalhes sobre instâncias de GPU fornecidas pelo Azure.
Aviso
O suporte para modelos multilíngues e o uso de modelos com maior comprimento máximo de sequência é necessário para vários casos de uso de PNL, como conjuntos de dados não ingleses e documentos de maior alcance. Como resultado, esses cenários podem exigir maior memória GPU para que o treinamento do modelo seja bem-sucedido, como a série NC_v3 ou a série ND.
O SDK Python do Azure Machine Learning instalado.
Para instalar o SDK, você pode,
Crie uma instância de computação, que instala automaticamente o SDK e é pré-configurada para fluxos de trabalho de ML. Consulte Criar e gerenciar uma instância de computação do Azure Machine Learning para obter mais informações.
Instale o
automl
pacote você mesmo, que inclui a instalação padrão do SDK.
Importante
Os comandos Python neste artigo requerem a versão mais recente
azureml-train-automl
do pacote.- Instale o pacote mais recente
azureml-train-automl
em seu ambiente local. - Para obter detalhes sobre o pacote mais recente
azureml-train-automl
, consulte as notas de versão.
Este artigo pressupõe alguma familiaridade com a configuração de um experimento automatizado de aprendizado de máquina. Siga o tutorial ou instruções para ver os principais padrões de design de experimento de aprendizado de máquina automatizado.
Selecione sua tarefa de PNL
Determine qual tarefa de PNL você deseja realizar. Atualmente, o ML automatizado suporta as seguintes tarefas de PNL de rede neural profunda.
Task | Sintaxe AutoMLConfig | Description |
---|---|---|
Classificação de texto multiclasse | task = 'text-classification' |
Existem várias classes possíveis e cada amostra pode ser classificada como exatamente uma classe. A tarefa é prever a classe correta para cada amostra. Por exemplo, classificar um roteiro de filme como "Comédia" ou "Romântico". |
Classificação de texto multi-rótulo | task = 'text-classification-multilabel' |
Existem várias classes possíveis e a cada amostra pode ser atribuído qualquer número de classes. A tarefa é prever todas as classes para cada amostra Por exemplo, classificar um roteiro de filme como "Comédia", ou "Romântico", ou "Comédia e Romântico". |
Reconhecimento de Entidades Nomeadas (NER) | task = 'text-ner' |
Existem várias tags possíveis para tokens em sequências. A tarefa é prever as tags para todos os tokens para cada sequência. Por exemplo, extrair entidades específicas do domínio de texto não estruturado, como contratos ou documentos financeiros |
Preparação dos dados
Para experimentos de PNL em ML automatizado, você pode trazer um conjunto de dados do Aprendizado de Máquina do Azure com .csv
formato para tarefas de classificação de várias classes e vários rótulos. Para tarefas NER, são suportados ficheiros de duas colunas .txt
que utilizam um espaço como separador e aderem ao formato CoNLL. As seções a seguir fornecem detalhes adicionais para o formato de dados aceito para cada tarefa.
Multi-classe
Para classificação de várias classes, o conjunto de dados pode conter várias colunas de texto e exatamente uma coluna de rótulo. O exemplo a seguir tem apenas uma coluna de texto.
text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"
Multi-rótulo
Para a classificação de vários rótulos, as colunas do conjunto de dados seriam as mesmas que as de várias classes, no entanto, há requisitos de formato especiais para os dados na coluna de rótulo. Os dois formatos e exemplos aceitos estão na tabela a seguir.
Opções de formato de coluna de rótulo | Vários rótulos | Um rótulo | Sem etiquetas |
---|---|---|---|
Texto simples | "label1, label2, label3" |
"label1" |
"" |
Lista Python com aspas | "['label1','label2','label3']" |
"['label1']" |
"[]" |
Importante
Diferentes analisadores são usados para ler rótulos para esses formatos. Se estiver a utilizar o formato de texto simples, utilize apenas por ordem alfabética, numérica e '_'
nas suas etiquetas. Todos os outros caracteres são reconhecidos como o separador de rótulos.
Por exemplo, se o seu rótulo for "cs.AI"
, ele será lido como "cs"
e "AI"
. Considerando que com o formato de lista Python, o rótulo seria "['cs.AI']"
, que é lido como "cs.AI"
.
Dados de exemplo para rótulo múltiplo em formato de texto sem formatação.
text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""
Exemplo de dados para multi-label na lista Python com formato de aspas.
text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"
Reconhecimento de entidade nomeada (NER)
Ao contrário de multiclasse ou multi-label, que usa .csv
conjuntos de dados de formato, o reconhecimento de entidade nomeada requer o formato CoNLL. O arquivo deve conter exatamente duas colunas e, em cada linha, o token e o rótulo são separados por um único espaço.
Por exemplo,
Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc
Stephen B-per
Curry I-per
got O
three O
championship O
rings O
Validação de dados
Antes do treinamento, o ML automatizado aplica verificações de validação de dados nos dados de entrada para garantir que os dados possam ser pré-processados corretamente. Se qualquer uma dessas verificações falhar, a execução falhará com a mensagem de erro relevante. A seguir estão os requisitos para passar nas verificações de validação de dados para cada tarefa.
Nota
Algumas verificações de validação de dados são aplicáveis tanto ao conjunto de treinamento quanto ao conjunto de validação, enquanto outras são aplicáveis apenas ao conjunto de treinamento. Se o conjunto de dados de teste não puder passar na validação de dados, isso significa que o ML automatizado não pôde capturá-lo e há uma possibilidade de falha de inferência do modelo ou um declínio no desempenho do modelo.
Task | Verificação da validação dos dados |
---|---|
Todas as tarefas | - Devem ser fornecidos conjuntos de formação e de validação - São necessárias pelo menos 50 amostras de formação |
Multiclasse e Multi-rótulo | Os dados de formação e os dados de validação devem ter - O mesmo conjunto de colunas - A mesma ordem de colunas da esquerda para a direita - O mesmo tipo de dados para colunas com o mesmo nome - Pelo menos dois rótulos únicos - Nomes de colunas exclusivos dentro de cada conjunto de dados (Por exemplo, o conjunto de treinamento não pode ter várias colunas chamadas Idade) |
Apenas multiclasse | Nenhuma |
Apenas rótulo múltiplo | - O formato da coluna do rótulo deve estar no formato aceito - Pelo menos uma amostra deve ter 0 ou 2+ rótulos, caso contrário, deve ser uma multiclass tarefa - Todas as etiquetas devem estar em str formato ou int em formato, sem sobreposição. Você não deve ter rótulo 1 e rótulo '1' |
Apenas NER | - O arquivo não deve começar com uma linha vazia - Cada linha deve ser uma linha vazia, ou seguir o formato {token} {label} , onde há exatamente um espaço entre o token e o rótulo e nenhum espaço em branco após o rótulo - Todos os rótulos devem começar com I- , B- ou ser exatamente O . Sensível a maiúsculas - Exatamente uma linha vazia entre duas amostras - Exatamente uma linha vazia no final do arquivo |
Configurar experiência
O recurso de NLP do ML automatizado é acionado através AutoMLConfig
do , que é o mesmo fluxo de trabalho para enviar experimentos de ML automatizados para tarefas de classificação, regressão e previsão. Você definiria a maioria dos parâmetros como faria para esses experimentos, como task
, compute_target
e entradas de dados.
No entanto, existem diferenças fundamentais:
- Você pode ignorar
primary_metric
, pois é apenas para fins de relatório. Atualmente, o ML automatizado treina apenas um modelo por corrida para PNL e não há seleção de modelo. - O
label_column_name
parâmetro só é necessário para tarefas de classificação de texto multiclasse e multirótulo. - Se a maioria das amostras em seu conjunto de dados contiver mais de 128 palavras, é considerado longo alcance. Para esse cenário, você pode habilitar a opção de texto de longo intervalo com o
enable_long_range_text=True
parâmetro em seuAutoMLConfig
. Ao fazê-lo, ajuda a melhorar o desempenho do modelo, mas requer tempos de treino mais longos.- Se você ativar texto de longo alcance, será necessária uma GPU com maior memória, como a série NCv3 ou a série ND .
- O
enable_long_range_text
parâmetro só está disponível para tarefas de classificação de várias classes.
automl_settings = {
"verbosity": logging.INFO,
"enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}
automl_config = AutoMLConfig(
task="text-classification",
debug_log="automl_errors.log",
compute_target=compute_target,
training_data=train_dataset,
validation_data=val_dataset,
label_column_name=target_column_name,
**automl_settings
)
Definições de idioma
Como parte da funcionalidade de PNL, o ML automatizado suporta 104 idiomas, aproveitando modelos DNN de texto pré-treinados multilíngues e específicos do idioma, como a família de modelos BERT. Atualmente, a seleção de idioma tem como padrão o inglês.
A tabela a seguir resume qual modelo é aplicado com base no tipo de tarefa e linguagem. Veja a lista completa de idiomas suportados e seus códigos.
Tipo de tarefa | Sintaxe para dataset_language |
Algoritmo de modelo de texto |
---|---|---|
Classificação de texto multi-rótulo | 'eng' 'deu' 'mul' |
Inglês BERT uncased Alemão BERT BERT Multilingue Para todos os outros idiomas, o ML automatizado aplica o BERT multilíngue |
Classificação de texto multiclasse | 'eng' 'deu' 'mul' |
Inglês BERT cased BERT Multilingue Para todos os outros idiomas, o ML automatizado aplica o BERT multilíngue |
Reconhecimento de entidade nomeada (NER) | 'eng' 'deu' 'mul' |
Inglês BERT cased Alemão BERT BERT Multilingue Para todos os outros idiomas, o ML automatizado aplica o BERT multilíngue |
Você pode especificar o idioma do conjunto de dados no .FeaturizationConfig
O BERT também é usado no processo de featurização do treinamento automatizado de experimentos de ML, saiba mais sobre a integração do BERT e a featurização no ML automatizado.
from azureml.automl.core.featurization import FeaturizationConfig
featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)
Preparação distribuída
Você também pode executar seus experimentos de PNL com treinamento distribuído em um cluster de computação do Azure Machine Learning. Isso é tratado automaticamente pelo ML automatizado quando os parâmetros max_concurrent_iterations = number_of_vms
e enable_distributed_dnn_training = True
são fornecidos em sua AutoMLConfig
configuração durante o experimento.
max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True
Fazendo isso, agenda o treinamento distribuído dos modelos de PNL e dimensiona automaticamente para cada GPU em sua máquina virtual ou cluster de máquinas virtuais. O número máximo de máquinas virtuais permitido é 32. O treinamento é agendado com o número de máquinas virtuais que está em potências de dois.
Blocos de notas de exemplo
Consulte os blocos de anotações de exemplo para obter exemplos de código detalhados para cada tarefa de PNL.
- Classificação de texto multiclasse
- Classificação de texto multi-rótulo
- Reconhecimento de entidade nomeada
Próximos passos
- Saiba mais sobre como e onde implantar um modelo.
- Solucione problemas de experimentos automatizados de ML.