YaLM 100B é uma rede neural semelhante a GPT para geração e processamento de texto. Pode ser usado gratuitamente por desenvolvedores e pesquisadores de todo o mundo.
O modelo aproveita 100 bilhões de parâmetros. Foram necessários 65 dias para treinar o modelo em um cluster de 800 placas gráficas A100 e 1,7 TB de textos online, livros e inúmeras outras fontes em inglês e russo.
Detalhes de treinamento e melhores práticas sobre aceleração e estabilização podem ser encontrados nos artigos Medium (Inglês) e Habr (Russo).
Usamos DeepSpeed para treinar o modelo e nos inspiramos no exemplo do Megatron-LM. No entanto, o código neste repositório não é o mesmo código usado para treinar o modelo. Em vez disso, é um exemplo padrão do repositório DeepSpeed com alterações mínimas necessárias para inferir nosso modelo.
Certifique-se de ter 200 GB de espaço livre em disco antes de baixar os pesos. O modelo (o código é baseado em microsoft/DeepSpeedExamples/Megatron-LM-v1.1.5-ZeRO3) deve ser executado em várias GPUs com paralelismo de tensor. Ele foi testado em 4 (A100 80g) e 8 (V100 32g) GPUs, mas é capaz de trabalhar com diferentes configurações com ≈200GB de memória GPU no total que dividem as dimensões de peso corretamente (por exemplo, 16, 64, 128).
bash download/download.sh
para baixar pesos e vocabulário do modelo../yalm100b_checkpoint/weights/
e o vocabulário será baixado para ./yalm100b_checkpoint/vocab/
.docker/pull.sh
. É compatível com A100 e V100.docker/build.sh
(que irá apenas construir a imagem do docker a partir docker/Dockerfile
).docker/run.sh
(volumes, nome e outros parâmetros podem ser alterados) . Você pode começar com os seguintes scripts:
examples/generate_interactive.sh
: geração interativa a partir da linha de comando, a maneira mais simples de testar o modelo.examples/generate_conditional_sampling.sh
: geração condicional com estratégia de amostragem. Top-p é usado por padrão, fique à vontade para alterar a temperatura ou usar top-k. A entrada é jsonlines (exemplo: examples/example_cond_input.json
), a saída será a mesma jsonlines com o campo de texto gerado adicionado a cada linha.examples/generate_conditional_greedy.sh
: igual ao anterior, mas a geração é gananciosa. Adequado para resolver problemas com poucos disparos.examples/generate_unconditional.sh
: geração incondicional. Nenhuma entrada é usada, a saída será jsonlines. O modelo é publicado sob a licença Apache 2.0 que permite pesquisa e uso comercial. Megatron-LM é licenciado sob a licença Megatron-LM.
O conjunto de dados usado para o treinamento do YaLM-100B é composto pelas seguintes partes (as porcentagens aproximadas são medidas em tokens vistos pelo modelo):
25% The Pile – conjunto de dados aberto em inglês pela equipe Eleuther AI
75% Textos em russo coletados por nossa equipe (são fornecidas porcentagens de todo o conjunto de dados)
49% das páginas russas do índice Yandex Search foram filtradas de aproximadamente 100 TB a aproximadamente 1 TB pelas seguintes heurísticas:
12% Notícias de várias fontes do índice Yandex Search
10% Livros do conjunto de dados usado no Thesarus Distribucional Russo
3% de textos diversos do conjunto de dados Taiga
1,5% Diálogos de mídias sociais pré-processados de maneira semelhante à forma como o Reddit é processado no The Pile
0,5% da porção russa da Wikipedia
Alguns subconjuntos foram percorridos até 3 vezes durante o treinamento.
O modelo foi treinado em um cluster de 800 A100 por aproximadamente 65 dias. Nesse período, consumiu 300 bilhões de tokens. Você pode ver o TensorBoard com LR e cronograma de aceleração, métricas de treinamento e nossos "termômetros" na página HF.