As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
BlazingText algoritmo
O SageMaker BlazingText algoritmo da Amazon fornece implementações altamente otimizadas do Word2vec e dos algoritmos de classificação de texto. O algoritmo Word2vec é útil para várias tarefas posteriores de processamento de linguagem natural (NLP), como análise de sentimento, reconhecimento de entidades nomeadas, tradução automática, etc. A classificação de texto é uma tarefa importante para aplicativos que realizam pesquisas na web, recuperação de informações, classificação e classificação de documentos.
O algoritmo Word2vec mapeia palavras para vetores distribuídos de alta qualidade. A representação vetorial resultante de uma palavra é chamada de incorporação da palavra. Palavras semanticamente semelhantes correspondem a vetores próximos uns dos outros. Dessa forma, incorporações de palavras capturam as relações semânticas entre as palavras.
Muitos aplicativos de processamento de linguagem natural (NLP) aprendem incorporações de palavras por meio de treinamentos em grandes coleções de documentos. Essas representações vetoriais pré-treinadas fornecem informações sobre semântica e distribuições de palavras que normalmente melhoram a generalização de outros modelos que são posteriormente treinados em uma quantidade mais limitada de dados. A maioria das implementações do algoritmo Word2vec é otimizada para arquiteturas de CPU de vários núcleos. Isso torna difícil dimensionar para grandes conjuntos de dados.
Com o BlazingText algoritmo, você pode escalar facilmente para grandes conjuntos de dados. Semelhante ao Word2vec, ele fornece as arquiteturas de treinamento Skip-gram e contínuo bag-of-words (CBOW). BlazingTextA implementação do algoritmo supervisionado de classificação de texto multiclasse e vários rótulos estende o classificador de texto FastText para usar a aceleração de GPU com kernels CUDA personalizados.
O BlazingText algoritmo não é paralelizável. Para obter mais informações sobre parâmetros relacionados ao treinamento, consulte Caminhos de registro do Docker para algoritmos SageMaker integrados.
Os SageMaker BlazingText algoritmos fornecem os seguintes recursos:
-
Treinamento acelerado do classificador de texto fastText em CPUs de vários núcleos ou em uma GPU e Word2Vec em GPUs usando kernels CUDA altamente otimizados. Para obter mais informações, consulte BlazingText: Dimensionando e acelerando o Word2Vec
usando várias GPUs. -
Vetores de palavras enriquecidos com informações de subpalavras
, aprendendo representações vetoriais para n-gramas de caracteres. Essa abordagem permite BlazingText gerar vetores significativos para palavras out-of-vocabulary (OOV), representando seus vetores como a soma dos vetores de caracteres n-gramas (subpalavra). -
Um
batch_skipgram
mode
para o algoritmo Word2Vec que permite treinamentos mais rápidos e computação distribuída entre vários nós de CPU. Essebatch_skipgram
mode
faz minilotes usando a estratégia de compartilhamento de amostras negativas para converter operações BLAS de nível 1 em operações BLAS de nível 3. Isso aproveita eficientemente as instruções de multiplicação-adição de arquiteturas modernas. Para obter mais informações, consulte este artigo sobre paralelização do Word2Vec em memória compartilhada e distribuída.
Para resumir, os seguintes modos são compatíveis com instâncias de tipos diferentes: BlazingText
Modos |
Word2Vec (Aprendizagem não supervisionada) |
Classificação de texto (Aprendizagem supervisionada) |
---|---|---|
Instância de CPU única |
|
|
Instância de GPU única (com 1 ou mais GPUs) |
|
|
Várias instâncias de CPU |
Batch Skip-gram |
Nenhum |
Para obter mais informações sobre a matemática por trás BlazingText, consulte BlazingText: Dimensionando e acelerando o Word2Vec
Tópicos
Interface de entrada/saída para o algoritmo BlazingText
O BlazingText algoritmo espera um único arquivo de texto pré-processado com tokens separados por espaço. Cada linha no arquivo deve conter uma única frase. Se você precisar treinar em vários arquivos de texto, concatene-os em um único arquivo e faça upload desse arquivo no respectivo canal.
Formato de dados de treinamento e validação
Formato de dados de treinamento e validação para o algoritmo Word2Vec
Para o treinamento de Word2Vec, faça upload do arquivo no canal train. Nenhum outro canal é aceito. O arquivo deve conter uma frase de treinamento por linha.
Formato de dados de treinamento e validação para o algoritmo de classificação de texto
Para o modo supervisionado, você pode treinar com o modo de arquivo ou com o formato de texto manifesto aumentado.
Treinar com o modo de arquivo
Para o modo supervised
, o arquivo de treinamento/validação deve conter uma frase de treinamento por linha, juntamente com os rótulos. Rótulos são palavras prefixadas pela string __label__. Aqui está um exemplo de um arquivo de treinamento/validação:
__label__4 linux ready for prime time , intel says , despite all the linux hype , the open-source movement has yet to make a huge splash in the desktop market . that may be about to change , thanks to chipmaking giant intel corp . __label__2 bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly as the indian skippers return to international cricket was short lived .
nota
A ordem dos rótulos dentro da frase não importa.
Faça upload do arquivo de treinamento no canal de "treinamento" e, opcionalmente, faça upload do arquivo de validação no canal de "validação".
Treinar com o formato de texto manifesto aumentado
O modo supervisionado para instâncias de CPU também oferece suporte para o formato de manifesto aumentado, que permite fazer treinamentos no modo pipe sem a necessidade de criar arquivos RecordIO. Ao usar o formato, é necessário gerar um arquivo manifesto do S3 contendo a lista de frases e seus rótulos correspondentes. O formato de arquivo de manifesto deve estar no formato linhas JSONsource
, e o rótulo pode ser especificado usando a tag label
. Ambas as tags source
e label
devem ser provisionadas com o valor do parâmetro AttributeNames
conforme especificado na solicitação.
{"source":"linux ready for prime time , intel says , despite all the linux hype", "label":1} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label":2}
O treinamento com vários rótulos também é compatível com a especificação de uma matriz de rótulos JSON.
{"source":"linux ready for prime time , intel says , despite all the linux hype", "label": [1, 3]} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label": [2, 4, 5]}
Para obter mais informações sobre arquivos manifestos aumentados, consulte Arquivos de manifesto aumentados para trabalhos de treinamento.
Artefatos de modelo e inferência
Artefatos de modelo para o algoritmo Word2Vec
Para o treinamento do Word2Vec, os artefatos do modelo consistem em vectors.txt, que contém words-to-vectors mapeamento, e vectors.bin, um binário usado BlazingText para hospedagem, inferência ou ambos. O vectors.txt armazena os vetores em um formato compatível com outras ferramentas, como Gensim e Spacy. Por exemplo, um usuário do Gensim pode executar os seguintes comandos para carregar o arquivo vectors.txt:
from gensim.models import KeyedVectors word_vectors = KeyedVectors.load_word2vec_format('vectors.txt', binary=False) word_vectors.most_similar(positive=['woman', 'king'], negative=['man']) word_vectors.doesnt_match("breakfast cereal dinner lunch".split())
Se o parâmetro de avaliação estiver definido como True
, um arquivo adicional, eval.json, será criado. Esse arquivo contém os resultados da avaliação de similaridade (utilizando coeficientes de correlação de Spearman) no conjunto de dados WS-353. É relatado o número de palavras do conjunto de dados WS-353 que não estão no corpo de treinamento.
Para solicitações de inferência, o modelo aceita um arquivo JSON contendo uma lista de strings e retorna uma lista de vetores. Se a palavra não for encontrada no vocabulário, a inferência retornará um vetor de zeros. Se as subpalavras forem definidas como True
durante o treinamento, o modelo poderá gerar vetores para palavras out-of-vocabulary (OOV).
Solicitação JSON de amostra
Mime-type: application/json
{ "instances": ["word1", "word2", "word3"] }
Artefatos de modelo para o algoritmo de classificação de texto
O treinamento com saídas supervisionadas cria um arquivo model.bin que pode ser consumido pela BlazingText hospedagem. Para inferência, o BlazingText modelo aceita um arquivo JSON contendo uma lista de sentenças e retorna uma lista dos rótulos previstos e pontuações de probabilidade correspondentes. Cada frase deve ser uma string com tokens separados por espaço, palavras ou ambos.
Solicitação JSON de amostra
Mime-type: application/json
{ "instances": ["the movie was excellent", "i did not like the plot ."] }
Por padrão, o servidor retorna apenas uma previsão, aquela com a maior probabilidade. Para recuperar as k principais previsões, você pode definir k na configuração, da seguinte maneira:
{ "instances": ["the movie was excellent", "i did not like the plot ."], "configuration": {"k": 2} }
Pois BlazingText, os accept
parâmetros content-type
e devem ser iguais. Para a transformação em lote, ambos precisam ser application/jsonlines
. Se eles forem diferentes, o campo Accept
será ignorado. O formato para a entrada é:
content-type: application/jsonlines {"source": "source_0"} {"source": "source_1"} if you need to pass the value of k for top-k, then you can do it in the following way: {"source": "source_0", "k": 2} {"source": "source_1", "k": 3}
O formato para a saída é:
accept: application/jsonlines {"prob": [prob_1], "label": ["__label__1"]} {"prob": [prob_1], "label": ["__label__1"]} If you have passed the value of k to be more than 1, then response will be in this format: {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]} {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]}
Para os modos supervisionado (classificação de texto) e não supervisionado (Word2Vec), os binários (*.bin) produzidos por podem ser BlazingText consumidos de forma cruzada pelo FastText e vice-versa. Você pode usar binários produzidos BlazingText pelo FastText. Da mesma forma, você pode hospedar os binários do modelo criados com o BlazingText FastText usando.
Aqui está um exemplo de como usar um modelo gerado BlazingText com o FastText:
#Download the model artifact from S3 aws s3 cp s3://<YOUR_S3_BUCKET>/<PREFIX>/model.tar.gz model.tar.gz #Unzip the model archive tar -xzf model.tar.gz #Use the model archive with fastText fasttext predict ./model.bin test.txt
No entanto, os binários só são compatíveis quando o treinamento em CPU e GPU única; o treinamento em várias GPUs não produzirá binários.
Recomendação de instância do EC2 para o algoritmo BlazingText
Para skipgram
modos cbow
e, BlazingText oferece suporte a instâncias de CPU única e GPU única. Ambos os modos oferecem suporte para a aprendizagem de incorporações subwords
. Para alcançar a velocidade mais alta sem comprometer a precisão, recomendamos que você use uma instância ml.p3.2xlarge.
Para o batch_skipgram
modo, BlazingText oferece suporte a uma ou várias instâncias de CPU. Ao treinar em várias instâncias, defina o valor do S3DataDistributionType
campo do S3DataSource
objeto CreateTrainingJob
para o qual você passaFullyReplicated
. BlazingTextcuida da distribuição de dados entre máquinas.
Para o modo de classificação de texto supervisionado, uma instância C5 é recomendada se o conjunto de dados de treinamento é menor que 2 GB. Para conjuntos de dados maiores, use uma instância com uma única GPU. BlazingText suporta instâncias P2, P3, G4dn e G5 para treinamento e inferência.
BlazingText Amostras de cadernos
Para obter um exemplo de caderno que treina e implanta o SageMaker BlazingText algoritmo para gerar vetores de palavras, consulte Aprendendo representações de palavras Word2Vec