Partilhar via


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,

    Importante

    Os comandos Python neste artigo requerem a versão mais recente azureml-train-automl do pacote.

  • 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 AutoMLConfigdo , 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 seu AutoMLConfig. 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.

Próximos passos