Testando ruGPT-3 em novos problemas

Sistemas de recomendação do zero, chatbots e muito mais



Depois de mergulhar no abismo dos dados textuais, em outubro deste ano treinamos os modelos ruGPT-3 - modelos para o idioma russo baseados na arquitetura da OpenAI. Mas do que esses modelos são capazes? Neste artigo, coletaremos os primeiros exemplos de aplicação do modelo - e tentaremos novos.



Apresentamos os primeiros resultados do maior modelo treinado, ruGPT-3 Large, desenvolvido em colaboração com as equipes SberDevices , Sber.AI e SberCloud . Vamos explorar os limites de sua aplicação com você.



imagem



No AI Journey deste ano, preparamos um concurso de aplicativos ruGPT-3 - qualquer solução usando um modelo, avaliada em três escalas - inovação, envolvimento emocional e aplicabilidade de negócios - pode ser submetida à pista.



Spoiler:
1 milhão de rublos para o primeiro lugar




Como treinar o modelo para uma nova tarefa?



Os modelos e o código deles estão no repositório sberbank-ai : você pode usar a biblioteca de transformadores ou Megatron-LM.



Neste artigo, forneço exemplos de uso de interface / transformadores - o código dos casos é fornecido aqui:



  • Ajustando Modelos de Laptop Colab
  • Apenas gerando um laptop Colab


Cartões de modelo na biblioteca de transformadores: Grande Médio Pequeno



Quando você executa o script de geração, é mais fácil executar Executar todos - e então esperar um pouco enquanto o modelo é carregado.



imagem



O roteiro da última célula pedirá que você digite o início do texto - minha semente favorita: “Cientistas brasileiros descobriram uma espécie rara de unicórnio-anão que vive no oeste da Jutlândia”. Obtemos : Apenas o ruGPT-3 Small cabe no laptop Colab, então é melhor usar cartões com mais de 14 Gb de memória.



ruGPT-3 Small: , . Agence France-Presse. , Pygmaliona (. Pygmaliona pygmalioni), . 30 , — 1 . . , .







A propósito, durante a competição, damos aos participantes da pista acesso às instalações do Christofari!

Para os participantes da trilha ruGPT-3, alocamos 100 contas - em cada conta 1 GPU Tesla V100-SXM3 32 Gb de graça durante a competição.



Como faço para obter uma conta?



1) Registre-se para a trilha ruGPT-3 (AI 4 Humanities) ods.ai/tracks/aij2020

2) Escreva uma pequena carta com o nome de sua equipe e a tarefa para AIJ_ruGPT-3@sberbank.ru



imagem



Few-Shot vs Fine Tuning



No caso de modelos generativos grandes, como arquiteturas do tipo GPT, há várias maneiras de "lidar" com eles.



  • : «» — . (GPT-3 ), . ( « → ») .
  • : , « » (. «prompt engineering» — , , .


?



Pode ser muito caro retreinar modelos grandes, então essa forma de "comunicação" com eles permite que você evite até isso. A essência da programação de sementes é selecionar esses exemplos preparados e inícios para geração, de modo que, posteriormente, o modelo produza exatamente o que é necessário.



Escolhendo a "semente" e os hiperparâmetros do gerador (temperatura, top_n, top_k), você pode obter respostas bastante toleráveis ​​devido apenas ao treinamento preliminar do modelo.



imagem



Um exemplo de semente com 1 exemplo e uma descrição do problema.



Testaremos os dois métodos na prática - tentaremos resolver problemas populares do zero e outros específicos - com treinamento adicional.



Sistemas de recomendação



Vamos fazer um sistema de recomendação sem treinamento: enviaremos informações sobre as preferências do usuário em forma de texto para o ruGPT-3 Large, e veremos como o modelo continua. Podemos gerar muitas opções de uma vez para obter mais recomendações.



Recomendações de filmes: nada mal! Pelo menos os filmes parecem ser gerados de acordo com a semente. Como não sou conhecedor do cinema soviético, nem conhecia o filme "Três mais dois", mas é. Para a geração, usamos os seguintes hacks - fornecemos especialmente o texto com aspas abertas para forçar o modelo a gerar nomes próprios, e também cortamos todos os desnecessários após a primeira frase. Recomendações de música:



: — “”, “”, “

ruGPT-3 Large: — “”, “”, “ ”, “ ”, “ ”.

ruGPT-3 Large: — “”, “”, “ ”, “”, “” (, , , ).

ruGPT-3 Large: — “”, “”, “” .”



: : “ ”, “

ruGPT-3 Large: : “ ”, “ ” “ ”.

ruGPT-3 Large: : “ ”, “ ”.

ruGPT-3 Large: : “ ”, “ ”, “ ” .











: “ , “ ”, “ #( , )

ruGPT-3 Large: , “ ”, “” “”.

ruGPT-3 Large: , “ ”, “” “ ”.

ruGPT-3 Large: , “ ”, “”, “ ”, “ ”, “” “”.



Os resultados são diferentes o tempo todo - você pode gerar potencialmente N variantes, extrair todos os nomes de grupos e coletar o Contador dos mais populares - voila, um sistema de recomendação do zero.



Gerando comentários



Vamos fazer uma tarefa mais difícil - vamos fazer o modelo imitar uma pessoa em discussões ou lojas: Como você pode ver, para tópicos muito difundidos na Internet, o modelo pode gerar textos coerentes sem treinamento. Mas onde ainda não há caminho sem treinamento adicional? Existem 3 desses casos:



: “ .

- ”

ruGPT-3 Large: “ .

- . , .”



: “ .



ruGPT-3 Large: “ .

.

, .

, , . , , .”



: .

"1+1"

ruGPT-3 Large: .

"1+1" — , . . . . " ", .











  1. formato de dados complexo - se, durante a geração sem treinamento, você perde qualidade devido à geração no formato errado - problema de NER, geração de código, cálculos simbólicos, etc .;
  2. , — QA , , , ;
  3. , , , — , .


StackOverflow



Vamos aumentar o nível de complexidade: baixe o russo [estouro de pilha] (https://ru.stackoverflow.com/) e tente fazer um sistema de perguntas e respostas. Seremos capazes de aprender imediatamente o estilo de respostas e conhecimento e várias linguagens de programação? Não é fácil conseguir um bom resultado em um problema de taoki na hora, mas podemos nos divertir - em 5 épocas, a modelo aprendeu a reproduzir o estilo, ficando muito confusa no conteúdo. Mas aprendi bem os links para a documentação - um resultado bastante bom para 5 épocas de aprendizado.



Formato de treinamento: enviamos os textos de perguntas e melhores respostas no formato Q: ”blabla” A: ”blabla”. (na verdade não existe tal biblioteca, o modelo gerou um link para a documentação)



Q: python?

A: : push.log("Shalom").

- , .

set.log()**)

rGet = puts.random(extents) log.findIndex(puts.current) void join($window, command='unsetMainServer onManager') }

,



Q: python?

A: import pycode as pyc;

// ( href=https://docs.python.org/3/library/pycode.html )







Para tais tarefas, você pode inserir argumentos adicionais - por exemplo, o nome da seção / assunto / linguagem de programação sobre a qual deseja responder e treinar o modelo nos dados da forma {"parâmetro": "valor", "pergunta": "texto_questão", "resposta": "Answer_text"}.



Em termos de código e texto, temos um arquivo imediatamente - talvez alguém faça melhor dentro da faixa? Já existem implementações bastante bem-sucedidas no modelo da língua inglesa com o código: escrever o código html dos elementos da página da web, gerando modelos Figma.



Tentando outros idiomas! Twitter e mais



A principal língua de ensino do modelo é o russo, mas é possível aplicar o modelo em tarefas multilíngues? Algumas outras línguas sempre caem no exemplo de treinamento da web, então há esperança. A abordagem direta com as sementes mostra que o modelo sabe um pouco sobre o modelo inglês: Bem, quase: às vezes não funciona: Por que não praticar com dados puramente em inglês: peguei o conjunto de dados de classificação de texto do Twitter da competição Kaggle. Após 5 épocas em 5 mil primeiros comentários (20 minutos em Colab ), temos uma geração bastante tolerável de comentários muito tóxicos em inglês:

ruGPT-3 Large:

—> cat

—> dog

—> pear

—> coder





—> cat

—> dog

—> pear

—> Python





—> cat

—> dog

—> pear

—> bunch #

—> dog

—> cat

—> dog



imagem











Context >>> Is it

ruGPT-3 Small: Is it's the case that #Microsoft is using #SAP to manage #Microsoft’s business?



Context >>> It is

ruGPT-3 Small: It is the only one that I've been trying to do. Siri is on the verge of death, and I'm not aware of why she has to be on the verge.



Context >>> Why

ruGPT-3 Small: Why do I go here? I'm wondering if I can use the #Microsoft Windows 8 Pro for the #WindowsPhone phone? Thanks!



Sistemas de diálogo



Já, sem pré-treinamento, aplicar o modelo a sistemas de diálogo funciona muito bem: o modelo pode executar a função chit-chat (falar sobre nada), conversando livremente sobre vários tópicos. Com treinamento adicional em cenários e domínios específicos, você pode implementar aplicativos de negócios.

O exemplo abaixo é um exemplo de um diálogo sem treinamento, em um tópico estreitamente focado - um suporte de provedor de Internet.

Semeando: primeiras 2 linhas - geração seguinte. É claro que, sem o pré-treinamento, o modelo não tem uma ideia clara dos roteiros e roteiros dos especialistas de suporte, porém, mesmo essa inicialização a frio já mostra a forma padrão de “descobrir o que aconteceu - pendurar - redirecionar a chamada”. Você pode se lembrar dos clássicos:

User1: , ! ?

User2: .

User1: ?

User2: 500

User1: ?

User2: . .. .

User1: ?

User2: . , - ...

User1: , , , , ?

User2:

User1: , . , .

User2: , . .

User1: . , , .

User2: , , ?

User1: ?

User2: . .

User1: ?

User2:

User1: . .

User1: , . - .

User2: , .

User1:

User2:





User1: «», 656, , .

User2: , 766—1669, : , , , , , , ?

User1: 1 . , , .

User2: , , , - ?

User1: , 1 . , - , , , . .

User2: , , , , - .

User1: .

User2: , ?

User1: , , .

User2: , , .



Em geral, "você tem que ser paciente". A modelo até lembrou que o nome do Usuário1 é Dmitry, e o Usuário2 se despediu dele de acordo.



Em vez de uma conclusão



Para continuar a desenvolver a direção de modelos generativos e melhorar as arquiteturas em problemas de PNL, é sempre necessário entender os limites de aplicabilidade de uma determinada tecnologia - e sua relevância.



Agora, com cada versão de arquiteturas semelhantes - Reformer, Longformer, BigBird, etc. - olhamos para grandes modelos pré-treinados de uma forma ligeiramente nova, apresentando novos desafios para eles.



Além dos casos acima mencionados, o ruGPT-3 pode ser definitivamente aplicado e benéfico em práticas como:



  • aumento de dados de texto para tarefas de ML
  • modelos de diálogo para automação
  • tarefas de soma gerativa
  • reescrita, geração de notícias, notas esportivas com base em informações estruturadas.


Esperamos que as demos e modelos beneficiem a comunidade - e sejam divertidos!



E, claro, estamos aguardando suas decisões sobre a faixa ruGPT-3 até o final de 22 de novembro!



All Articles