Rede neural YaLM 100B na prática.

Программирование

No final de junho, a Yandex
lançou uma rede neural com 100 bilhões de parâmetros chamada YaLM 100B para o público . É a maior rede neural do tipo GPT em domínio público. Conta como eles ensinaram, mostraram os melhores exemplos e do que o neurônio é capaz. Mas é tão bom na prática e aplicável em casa? O artigo é omisso quanto a isso, além disso, não é tão fácil executá-lo e verificá-lo, pois são necessários aproximadamente 200 Gb de RAM da GPU. Este comentário sobre Habré
revela a situação com mais precisão
.

Alegadamente, no Yandex, todas essas pessoas inteligentes, e eles nem postaram um tutorial normal. Não existe uma API para um modelo grande, não existe um modelo despojado de tamanho médio ou pequeno pronto para pessoas comuns (no Google Colab). Nenhum exemplo é dado sobre como configurar o modelo, como gerar texto. É que o artigo indica algumas nuances para os nerds e pronto. Basta olhar mais de perto como o banco fez com a letra “C” e fazer o mesmo. Fiquei com a impressão de que este modelo é apenas um dos experimentos fracassados ​​que foi uma pena jogá-lo no lixo, então foi postado em Open Source para mostrar quais grandes modelos o Yandex cria e, além disso, é open source!

Há muitas perguntas na Internet sobre como executar o yalm ou até mesmo tentar online, mas não há respostas para isso. Eu estava entre os usuários que fizeram essas perguntas. E começou a descobrir isso. Já que eu realmente precisava de uma forma de gerar textos para robôs financeiros. Para que possam prever não só os valores, mas também comentar em texto, com base em relatórios financeiros. Em essência, será o mesmo que os analistas financeiros fazem, apenas com o uso de inteligência artificial. Existem duas maneiras de executar o yalm.
Alugue um servidor na nuvemcom 200+ Gb GPU RAM ou finalize o código e execute-o usando deepspeed zero offload (quando a GPU processa sequencialmente parte da rede neural e o restante é armazenado na CPU RAM ou NVMe). O primeiro é muito caro, cerca de 2.500 rublos por hora ou 1,7 milhão por mês. A segunda incógnita, porque o código no repositório não é fornecido, apenas
dicas na questão do repositório, o que não é difícil de fazer. Vamos começar simples.

Instruções de lançamento do YaLM 100B

1. Alugamos 200 GB de RAM de GPU, por exemplo aqui .

Rede neural YaLM 100B na prática.

Você precisa de pelo menos 200 GB de memória de vídeo total. 8×40 = 320 GB. Só este cabe. Menos de 200 é impossível, mais é possível. A seta indica a RAM da CPU, não olhamos para ela. Ela pode ser qualquer um.

Indicamos um disco de cerca de 300 GB, para que com um disco reserva e de preferência rápido, pois. dezenas de gigabytes de dados serão transferidos de e para ele.

Rede neural YaLM 100B na prática. Ao criar em fontes, selecione Ubuntu ML (Machine Learning). Isso é obrigatório para que as placas de vídeo sejam configuradas e nada precise ser instalado adicionalmente.

Depois que o servidor for ativado (pode levar de 5 a 10 minutos), conecte-se ao servidor via ssh ou diretamente no console da web na página do servidor e execute o comando.

nvidia-smi

O resultado deve ser uma tabela com placas de vídeo, versão do driver e cuda. Aproximadamente assim.
Rede neural YaLM 100B na prática. No cabeçalho da versão do driver e onde. No lado esquerdo estão os números dos dispositivos, no centro está o tamanho da memória do dispositivo. Se você não tiver essas informações, você coletou o servidor da fonte errada. O Ubuntu ML (Machine Learnong) é necessário, conforme descrito acima.

2. Clone o repositório com o YaLM

sudo git clone https://github.com/yandex/YaLM-100B/ yalm
cd yalm

Clone para sua pasta pessoal para não precisar editar a configuração do docker posteriormente. Se clonado em outro lugar,
vá aqui e adicione o caminho para onde clonado.

3. Faça o download dos pontos de verificação (informações básicas de treinamento do modelo)

sudo chmod +x ./download/download.sh
sudo bash ./download/download.sh

Isso levará cerca de uma hora. Para não perder tempo em vão, criamos uma nova conexão ssh e em paralelo começamos a construir um container docker.

4. Instale a nvidiadocker 2

O docker normal não é adequado,
é necessário nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. Construindo um contêiner para YaLM

cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh

Também é cerca de uma hora.

Hack de vida. Você pode baixar checkpoints, instalar o docker e construir um container em um servidor barato com uma placa de vídeo. Será o mesmo no tempo, então você pode economizar um pouco. Após a montagem em um servidor barato, nós o excluímos e criamos um servidor de combate usando um disco de um servidor barato. Então você não pagará a mais pelo tempo de espera pela montagem e pelos postos de controle.

6. Preparar o conteúdo

6.1 Pontos de verificação

Após o término do download dos checkpoints, você precisa inseri-los nas configurações. Existem duas maneiras, parâmetros corretos ou pontos de verificação de transferência. Em todos os lugares espera-se que os checkpoints estejam no diretório principal do projeto, respectivamente, o que for baixado deve ser transferido da pasta de download acima. Estando na pasta yalm execute

mv ./download/yalm100b_checkpoint ./

Ou altere os caminhos para os arquivos nos arquivos de exemplo
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 Placas de vídeo

Verificamos se as placas de vídeo estão configuradas corretamente. Se você tiver oito placas de vídeo, nada precisará ser alterado. Se o número for diferente, alteramos essas linhas
Rede neural YaLM 100B na prática. Na segunda linha, os números dos dispositivos usados ​​(você pode vê-los no nvidia-smi, que você já lançou). Na quarta, seu número.

7. Execute o contêiner docker

Estando na pasta yalm, execute o comando

sudo bash ./docker/run.sh

Se tudo estiver bem, você será levado a um contêiner no qual precisará acessar a pasta yalm em seu diretório pessoal.

cd ~/yalm

8. Execute o exemplo do YaLM 100B

Estamos prontos para lançar um dos exemplos. Eles são descritos
aqui .

chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh

Seja paciente, resta esperar mais 10-15 minutos até que o modelo GPT2 seja criado e os pesos dos pontos de verificação sejam carregados.
Rede neural YaLM 100B na prática.

Quando a construção terminar, o MegatronML solicitará que você insira um contexto para gerar texto. Cuidado ao digitar. Sob certas circunstâncias, ocorre um erro, o programa trava e você precisa iniciar o assembly novamente. Portanto, é melhor usar exemplos que peguem texto de um arquivo.

9. Resultados do trabalho

Rede neural YaLM 100B na prática.
Rede neural YaLM 100B na prática. Parece interessante. Claro, estes são apenas bons exemplos. Fiz o teste em diferentes amostras. Como esperado, quanto melhor o contexto, mais significativo o texto será gerado. O conjunto completo de gerações experimentais pode ser visto nos links:

Pelo preço, custou-me cerca de 9 mil rublos para alugar servidores de diferentes capacidades, desde treinamento e preparação até geração. Uma decepção particular foi que você não pode gerar tudo instantaneamente. Demora muito para iniciar e o texto não é gerado com a rapidez que gostaríamos, dado o custo do servidor por hora.
Rede neural YaLM 100B na prática.  

Como executar o YaLM sem 200 Gb de RAM de GPU?

Você precisa adicionar o deepspeed zero offload ao config. Para quem sabe do que estamos falando, será muito fácil fazê-lo. Para outros, esta não é uma tarefa trivial. É importante saber que o descarregamento pode ser na CPU RAM ou NVMe. Você pode esquecer o NVMe no momento, porque. uma quantidade muito grande de dados está sendo processada e o disco não consegue lidar com isso. Zero offload CPU é mais real. É verdade que para isso você precisa ter mais de 200 Gb de RAM de CPU em estoque, o que também não é barato. E um texto será gerado por cerca de 20-40 minutos, pois ainda não foi possível paralelizá-lo em duas placas de vídeo. Como você pode ver na captura de tela abaixo, apenas uma placa de vídeo foi envolvida na geração e apenas um quarto da memória. Resta saber por que todos os 24 GB não são usados,
Rede neural YaLM 100B na prática. Bem, para concluir, direi que é possível rodar até em uma RTX 3070 TI. Mas não há nenhum sentido particular nisso, porque. O NVMe não permitirá que você processe rapidamente 150 GB de dados na troca, que estão no apêndice de 96 GB de RAM.
Rede neural YaLM 100B na prática.

Resumindo

Claro, ainda vou tentar encontrar os caminhos de lançamento ideais. Mas até agora cheguei à conclusão de que o YaLM 100b é muito caro / muito lento para minhas tarefas. Pelo mesmo dinheiro, as pessoas escreverão muito mais e muito melhor. Mas acho que é temporário, vamos ver. Se você precisar de ajuda para iniciar, configurar o yalm ou quiser ver os resultados em seus exemplos de contexto, escreva para o correio ou telegrama.

pskucherov
Rate author
Add a comment

  1. Olha

    Статья на Мега актуальную тему! Спасибо.

    Responder
  2. Данила

    Крутая статья! Спасибо автору!

    Responder
  3. Дмитрий

    СПАСИБО !!!
    три дня эту информацию искал
    нет подобного о RuGPT3 и Порфириче?

    Responder