Modelo de linguagem em larga escala de Pytorch
Um modelo de idioma pytorch em larga escala treinado no conjunto de dados de 1 bilhão de palavras (LM1b) / (GBW)
Últimos resultados
- 39.98 Perplexidade após 5 épocas de treinamento usando o Modelo de Linguagem LSTM com Adam Optimizer
- Treinado em ~ 26 horas usando 1 NVIDIA V100 GPU ( ~ 5,1 horas por época ) com o tamanho de 2048 em lote ( ~ 10,7 GB de memória GPU )
Resultados anteriores
- 46.47 Perplexidade após 5 épocas de treinamento em um modelo de linguagem LSTM de 1 camada, 2048 unidades e 256-projeção [3]
- Treinado por 3 dias usando 1 NVIDIA P100 GPU ( ~ 12,5 horas por época )
- Funções de amostrador Softmax e uniforme de log-amostrado implementadas
Requisito de hardware da GPU
| Tipo | Tamanho da memória LM | GPU |
|---|
| sem pesos amarrados | ~ 9 GB | NVIDIA 1080 TI, NVIDIA TITAN X |
| com pesos amarrados [6] | ~ 7 GB | Nvidia 1070 ou superior |
- Há uma opção para amarrar as matrizes de incorporação e peso softmax para salvar a memória da GPU.
Hiper-parâmetros [3]
| Parâmetro | Valor |
|---|
| # Épocas | 5 |
| TAMANHO DE TREINAMENTO TAMANHO | 128 |
| Tamanho do lote de avaliação | 1 |
| Bptt | 20 |
| Tamanho da incorporação | 256 |
| Tamanho oculto | 2048 |
| Tamanho da projeção | 256 |
| Incorporação amarrada + softmax | Falso |
| # Camadas | 1 |
| Otimizador | Adagrad |
| Taxa de aprendizado | 0,10 |
| Recorte de gradiente | 1,00 |
| Cair fora | 0,01 |
| Decaimento de peso (penalidade de L2) | 1e-6 |
Configuração - formato de dados da tocha
- Baixe o conjunto de dados do Google Bilion Word para tocha - link
- Execute "process_gbw.py" no arquivo "Train_Data.th7" para criar o arquivo "Train_Data.sid"
- Instale a estrutura do Cython e construa amostrador log_uniforme
- Converter tensores de dados da tocha em formato de tensor de pytorch (requer pytorch v0.4.1)
Aproveitei os dados GBW pré -processados para a estrutura da tocha. (Consulte Torch GBW) Cada tensor de dados contém todas as palavras na partição de dados. O arquivo "TRAN_DATA.SID" marca as posições de início e final para cada frase independente. A etapa de pré -processamento e o arquivo "Train_Data.sid" acelera o carregamento dos dados de treinamento maciços.
- Tensores de dados - (test_data, válida_data, trens_data, trens_small, trens_tiny) - (#words x 2) matriz - (ID da frase, identificação de palavras)
- Tensor de identificação da frase - (#Sentences X 2) Matriz - (posição inicial, comprimento da frase)
Configuração - formato de dados original
- Baixar conjunto de dados de 1 bilhão de palavras - Link
O formato de dados da tocha carrega todo o conjunto de dados de uma só vez, por isso requer pelo menos 32 GB de memória. O formato original divide o conjunto de dados em pedaços menores, mas é mais lento.
Referências
- Explorando os limites da modelagem de idiomas Github
- Truques de fatorização para redes LSTM Github
- Aproximação eficiente da Softmax para GPUs Github
- Amostragem candidata
- Torch GBW
- Vinculando vetores de palavras e classificadores de palavras: uma estrutura de perda para modelagem de idiomas