Na NLP Cloud queríamos ver se o GPT-J poderia ser aperfeiçoado como modelo de instrução, a fim de compreender correctamente as instruções humanas em linguagem natural, sem utilizar a aprendizagem de poucos tiros. Outras tentativas deram resultados interessantes na comunidade de código aberto, como Flan-T5, BloomZ, ou Stanford Alpaca, pelo que quisemos fazer o mesmo no GPT-J usando o conjunto de dados de Alpaca. Os resultados são muito bons!
Os modelos generativos de IA não são bons a compreender os pedidos humanos, por defeito.
Para que estes modelos de geração de texto compreendam o que se pretende, a melhor solução é utilizar a aprendizagem de poucos tiros. Fizemos um guia especial sobre a aprendizagem com poucos tiros pode encontrá-lo aqui. O GPT-J é um bom exemplo de um modelo muito capaz que só funciona correctamente com poucos disparos de aprendizagem.
Mesmo que a construção destes exemplos não esteja normalmente a demorar muito tempo, continua a ser muito confuso para os recém-chegados que querem utilizar correctamente estes modelos de IA. É muito mais fácil perguntar coisas naturalmente como se faria com um humano.
Por exemplo, digamos que quer corrigir erros ortográficos com o GPT-J. Aqui está um exemplo de uma solicitação que tem de utilizar:
I love goin to the beach.
Correction: I love going to the beach.
###
Let me hav it!
Correction: Let me have it!
###
It have too many drawbacks.
Correction: It has too many drawbacks.
###
I do not wan to go
Correction:
Como pode ver, isto não é complexo mas também não é simples. Se afinar correctamente o GPT-J, pode ser transformado num modelo "instruir", o que significa que pode agora perguntar o seguinte:
Correct spelling and grammar from the following text.
I do not wan to go
E devolveria o seguinte:
I do not want to go.
Muito melhor, não é? Como é que podemos conseguir isto?
Stanford Alpaca foi libertado há alguns dias. Esta é uma versão aperfeiçoada do modelo Llama, desenvolvido pelo Facebook. Veja mais aqui sobre este projecto.
Basicamente, a equipa de Stanford Alpaca conseguiu elaborar um modelo de instrução de ponta, aperfeiçoando o Llama num conjunto de dados bastante pequeno (52k exemplos) composto de instruções humanas. O interessante é que geraram este conjunto de dados de forma programática utilizando um modelo de linguagem maior (GPT-3). Pode descarregar o conjunto de dados aqui.
Na NLP Cloud tentámos afinar o GPT-J usando este conjunto de dados, e obtivemos resultados surpreendentemente bons!
O novo modelo Instruct GPT-J que criámos está agora no Hub Abraçando Caras para que o possa utilizar facilmente: clique aqui para ver o modelo.
Eis como se pode utilizar o modelo, utilizando Transformadores Faciais de Abraço:
from transformers import pipeline
import torch
generator = pipeline(model="nlpcloud/instruct-gpt-j-fp16", torch_dtype=torch.float16, device=0)
prompt = "Correct spelling and grammar from the following text.\nI do not wan to go\n"
print(generator(prompt))
Aqui estão algumas sugestões que pode tentar:
Write a short story about space.\n
Generate a C++ program that sorts a list of integers in ascending order.\n
Paraphrase the following text.\nAfter a war lasting 20 years, following the decision taken first by President Trump and then by President Biden to withdraw American troops, Kabul, the capital of Afghanistan, fell within a few hours to the Taliban, without resistance.\n
Summarize the following text.\nFor all its whizz-bang caper-gone-wrong energy, and for all its subsequent emotional troughs, this week’s Succession finale might have been the most important in its entire run. Because, unless I am very much wrong, Succession – a show about people trying to forcefully mount a succession – just had its succession. And now everything has to change. The episode ended with Logan Roy defying his children by selling Waystar Royco to idiosyncratic Swedish tech bro Lukas Matsson. It’s an unexpected twist, like if King Lear contained a weird new beat where Lear hands the British crown to Jack Dorsey for a laugh, but it sets up a bold new future for the show. What will happen in season four? Here are some theories. Season three of Succession picked up seconds after season two ended. It was a smart move, showing the immediate swirl of confusion that followed Kendall Roy’s decision to undo his father, and something similar could happen here. This week’s episode ended with three of the Roy siblings heartbroken and angry at their father’s grand betrayal. Perhaps season four could pick up at that precise moment, and show their efforts to reorganise their rebellion against him. This is something that Succession undoubtedly does very well – for the most part, its greatest moments have been those heart-thumping scenes where Kendall scraps for support to unseat his dad – and Jesse Armstrong has more than enough dramatic clout to centre the entire season around the battle to stop the Matsson deal dead in its tracks.\n
Note que, devido à forma como este modelo foi afinado, deverá sempre utilizar novas linhas no final das suas instruções.
Este modelo é uma versão fp16 do nosso modelo afinado, que funciona muito bem numa GPU com 16GB de VRAM como um NVIDIA Tesla T4.
Não notámos qualquer diferença entre as versões fp32 e fp16 em termos de qualidade.
O GPT-J já era um modelo muito bom, e agora é ainda melhor quando usado como modelo de instrução.
Qualquer pessoa pode agora transformar o seu modelo generativo de IA num modelo de instrução graças a esta técnica!
Se tiver perguntas ou comentários sobre o acima exposto, não hesite em contactar-nos!.
François
Cientista de dados na NLP Cloud