Aniversário
Alura 12 anos

20% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

Alura > Cursos de Inteligência Artificial > Cursos de IA para Programação > Conteúdos de IA para Programação > Primeiras aulas do curso Fine-Tuning OpenAI: personalize seus modelos GPT

Fine-Tuning OpenAI: personalize seus modelos GPT

Introdução e preparação de dados - Apresentação

Apresentação do Instrutor

Olá! Meu nome é André Santana, sou instrutor na Alura, na Escola de Programação e Inteligência Artificial, e irei acompanhar vocês no curso de Finetuning, que envolve Python e OpenAI para refinar modelos já sofisticados.

Audiodescrição: André é um homem branco, de cabelo curto e barba cheia. Ele usa óculos e veste uma camiseta verde. Ao fundo, há uma coloração de luz em tons de roxo.

Público-Alvo e Pré-Requisitos do Curso

Este curso é destinado a quem aprecia Python, já possui alguma experiência com OpenAI e deseja aprimorar modelos, trazendo mais informações ou atualizações de uma forma mais sofisticada. Para aproveitar melhor o curso, é interessante que se tenha concluído pelo menos o primeiro curso da formação de OpenAI e o curso inicial de Pandas, familiarizando-se com a biblioteca.

Conteúdo do Curso

Neste curso, discutiremos sobre Finetuning, explicando o que é esse tipo de abordagem. Vamos explorar três tipos diferentes de Finetuning e focar naqueles providos pela ferramenta da OpenAI.

Nós também vamos entender quais são as etapas principais do processo de refinamento de um modelo e como preparar os dados para que possamos treinar esse modelo através de um JSON L, ou de um JSON distribuído por links. Além disso, vamos ver quais são os principais custos que envolvem esse tipo de procedimento e faremos uma introdução básica ao uso de Pandas para poder ler um arquivo CSV.

Além disso, veremos como podemos atualizar um modelo usando o Finetuning, trazendo informações mais recentes e como trabalhar com checkpoints para garantir que a melhor versão do modelo que alcançarmos seja aquela que de fato vamos utilizar.

Projeto Prático

Por fim, vamos preparar também um conjunto de sugestões para o time de marketing do nosso fórum poder trazer recomendações com base no perfil dos usuários que vamos analisar através de ar-generativo.

Tudo isso será visto no projeto que envolve a construção de um analisador de perfil de usuários em cima de dados sintéticos que foram extraídos de um fórum de discussão sobre filmes e cinema. Esse processo, que será aplicado com o Finetuning, envolve justamente o tratamento desses dados e o aprimoramento de um modelo que seja capaz de garantir que a classificação de perfil esteja aderente à cultura de uma empresa.

Encerramento

Não se esqueçam que, além das atividades, temos o nosso fórum de discussões e também as nossas comunidades do Discord. Até a nossa primeira aula!

Introdução e preparação de dados - Apresentando o projeto do curso

Introdução ao Curso de Fine Tuning

Parece que não foram fornecidos snippets de código para complementar a transcrição. No entanto, posso ajudar a estruturar a transcrição de forma didática, destacando os pontos principais e sugerindo onde o código poderia ser inserido, caso estivesse disponível.


Olá, pessoal! Vamos dar início ao nosso curso de Fine Tuning. Este primeiro curso envolve o processo de aprimoramento de modelos da OpenAI através do próprio ecossistema da plataforma.

Contexto do Projeto

Para que possamos dar os primeiros passos nesse projeto, que envolve o aprimoramento de modelos de LLMs (Large Language Models, ou Modelos de Linguagem Grande), vamos entender um pouco sobre o projeto que utilizaremos ao longo deste curso. Nosso projeto se baseia em um fórum de discussões, especificamente no contexto de discussões sobre filmes da atualidade ou sobre cinema. Vamos extrair alguns dados no formato de um arquivo CSV e utilizá-los para avaliar os comentários principais que os usuários fazem e dar sugestões para o time de marketing sobre como aproveitar o entusiasmo em torno de um filme ou identificar os usuários mais participativos dentro do nosso fórum.

Exemplos de Interação no Fórum

Para entender um pouco sobre essa estrutura, podemos imaginar o seguinte: temos comentários em um fórum, com usuários comentando, como, por exemplo, Carla, que está comentando sobre o filme CODA. Este filme é premiado, e ela diz: "CODA impressiona pela sensibilidade ao tratar temas familiares e sociais." Não estamos avaliando necessariamente o teor do comentário, mas a ideia é que possamos utilizar a inteligência artificial generativa para dois insights diferentes. O primeiro deles é determinar se o comentário é positivo, negativo ou neutro. A inteligência artificial generativa já faz isso muito bem, mas aplicaremos uma segunda camada de personalização, na qual definiremos alguns perfis distintos de usuários: aqueles que interagem mais, menos, são mais sarcásticos, mais irônicos, e utilizaremos essas informações para dar subsídio ao time de marketing ou ao time de decisão da empresa, para definir a melhor estratégia para aproveitar a interação dos usuários.

Vamos imaginar também que, dentro desse fórum, teremos usuários respondendo uns aos outros, como, por exemplo, Felipe de Porto Alegre, que respondeu a Carla dizendo: "Concordo que CODA é uma obra que toca o coração, especialmente pela sua autenticidade." Aqui também entendemos que é um sentimento positivo, e, como mencionado anteriormente, a OpenAI já faz isso muito bem.

Utilização do Playground da OpenAI

Para exemplificar um pouco sobre esse processo de avaliação de sentimentos, ainda sem falar sobre refinamento de modelos, vamos ao nosso Playground na plataforma da OpenAI, acessível através de platform.openai.com. É necessário ter uma conta com crédito para utilizar os recursos de refinamento, mas para realizar esses testes iniciais de classificação de sentimento, podemos usar qualquer tipo de modelo.

Se observarmos, há algumas mudanças em versões anteriores da tela do Playground. Basicamente, autenticamos na conta, clicamos em Playground, e temos agora esse acesso no formato de tela. Na parte esquerda, podemos colocar sugestões para o nosso modelo, para que ele entenda o que queremos. Vamos dizer que o papel do modelo é classificar comentários entre positivos, negativos ou neutros para usuários de um fórum de cinema. Após inserir essa informação, o modelo sugere uma configuração, que deixaremos assim mesmo, e começaremos nosso diálogo na parte direita.

Interação e Classificação de Comentários

Na caixa de diálogo, podemos conversar usando nossos próprios comandos. Vamos inserir um comentário: "Adorei o filme novo da Marvel. Ele apresenta uma história sensacional." Enviamos esse comentário para a plataforma, que processará a informação e nos dará um parecer sobre se o comentário é neutro, positivo ou negativo. Após processar as informações, temos no lado direito a nossa mensagem com o papel de usuário. Todas as interações com a OpenAI são divididas em papéis: o papel que podemos assumir é de usuário ou assistente. Usuário é quando interagimos, assistente é a resposta que a plataforma nos devolve. Há também um terceiro papel, que veremos ao longo do curso, que é o de sistema, onde damos essas pré-configurações, mas isso fica na caixa da esquerda.

Uma vez que fizemos essa interação, a classificação foi positiva. Se quisermos tornar esse processo mais sofisticado, podemos solicitar a classificação de perfil.

Perfis de Usuários no Fórum

Classificamos também o perfil de usuário que fez o comentário. Quando enviamos novamente a mensagem, percebemos que a construção mudou um pouco, indicando que o perfil de usuário é um fã de super-heróis comercial. No entanto, se tivermos termos específicos que desejamos utilizar ou diretrizes sobre o tipo de perfil que queremos em nossa base, com alguns exemplos, ou até mesmo se enviarmos novamente a mesma pergunta, o sistema pode trazer termos semelhantes. Caso apresentemos um comentário ligeiramente diferente, ele pode alterar a nomenclatura e oferecer uma diretriz distinta.

Se trouxermos um comentário com uma formatação diferente, o sistema pode utilizar termos para classificar que são diferentes ou inadequados para quem está gerindo nosso fórum. Quando o processo se torna mais específico, com a intenção de passar uma mensagem clara para nosso time de marketing, que cuida da interação com as pessoas no fórum, podemos desejar perfis mais marcantes e bem definidos. Separamos seis perfis para ilustrar, que utilizaremos no aprimoramento dos modelos da OpenAI.

Os perfis são: o crítico irônico, um participante ativo com tom sarcástico que critica animações ou filmes populares com ironia e raramente interage com outros usuários; o diplomático reflexivo, que comenta com equilíbrio e educação, avalia prós e contras com respeito e estimula debates construtivos no fórum; o engajado analítico, que traz análises críticas e socioculturais com frequência, interage com outros usuários e eleva o nível da discussão.

Além desses, temos o super contribuidor, que é muito interativo no fórum, participa bastante, responde, engaja e estimula a participação saudável de outros participantes; o observador participativo, que participa com moderação, geralmente em tom neutro, prefere observar e curtir postagens, mas nem sempre interage, embora possa ser incentivado a engajar mais; e, por último, o cinéfilo pop, apaixonado por blockbusters, filmes de heróis e de apelo popular, que costuma comentar com entusiasmo e defender suas obras favoritas.

Aplicação do Fine Tuning

Talvez se pergunte onde entra o fine-tuning (ajuste fino) nesse processo e como ele funciona para que possamos ter respostas mais aderentes à cultura da nossa solução, à cultura de quem desenvolve o fórum, modera e promove interações com os usuários. Para ilustrar brevemente o que faremos ao longo deste curso, compararemos dois modelos. À esquerda, temos o modelo tradicional da OpenAI, treinado com os dados que o time da OpenAI utilizou para entregar o modelo de LLM, o GPT-4-O, com atualização em agosto de 2024. À direita, temos um modelo refinado por nós, ao qual aplicamos a técnica de fine-tuning, tema principal deste curso.

Ambos os modelos possuem as mesmas instruções de sistema, indicando que devem responder apenas perguntas de cinema ou classificar o perfil de usuário com base em comentários. Enviaremos o mesmo comentário para ambos os modelos: "Ah, claro, porque o mundo realmente precisa de mais um filme de herói chorando em câmera lenta." Vamos observar como cada modelo classifica e se comporta.

Comparação de Modelos

Ao enviar, o modelo tradicional da OpenAI responde que parece haver uma perspectiva crítica ou cética em relação aos filmes de super-herói, especialmente em relação aos clichês emocionais e dramáticos. Talvez prefira abordagens mais inovadoras ou narrativas que fujam dos padrões comuns desse gênero. Ele fornece informações importantes, como o tempo para gerar resposta e o número de tokens. Do lado direito, o modelo refinado por nós constrói a mesma resposta, mas com um formato de saída diferente, já que foi ajustado. Nesse caso, ele classifica o perfil do usuário como um crítico irônico, uma das categorias mencionadas anteriormente.

Próximos Passos

Nos próximos vídeos, veremos como criar esse tipo de modelo e aplicá-lo em uma aplicação escrita em Python. Até lá.


Se você tiver snippets de código específicos ou precisar de mais assistência, sinta-se à vontade para compartilhar!

Introdução e preparação de dados - Como funciona o Fine-Tuning na OpenAI?

Introdução ao Fine-Tuning no Ecossistema OpenAI

Parece que não há snippets de código fornecidos para complementar a transcrição. No entanto, posso ajudar a estruturar a transcrição de forma didática, destacando os principais pontos e etapas do processo de Fine-Tuning utilizando o ecossistema da OpenAI.


Utilizando o Fine-Tuning no Playground

Agora que já vimos como utilizar o Fine-Tuning no próprio Playground, o modelo que criamos anteriormente, vamos entender como alcançar esse resultado de aprimoramento e quais são as etapas necessárias para aprimorar um modelo já existente. Como estamos utilizando o ecossistema da OpenAI, vamos utilizar um dos modelos de LLM que eles oferecem, como o GPT-4O ou 4O-Mini. Avaliaremos os dois modelos diferentes aos quais temos acesso, lembrando que é importante ter uma conta com crédito nesta etapa.

Tipos de Fine-Tuning Disponíveis

Antes de verificarmos a estrutura e os processos, tentaremos entender quais tipos de Fine-Tuning estão disponíveis e decidir qual deles utilizaremos, considerando o tema da nossa aplicação, que envolve especificamente avaliar um comentário de um fórum de discussão sobre cinema e tentar entender o perfil do usuário que está comentando.

Temos basicamente três tipos de Fine-Tuning ou técnicas de refinamento dos nossos modelos de LLM. O primeiro é o modelo padrão de Fine-Tuning. Este modelo exige alguns recursos extras e também tem um custo maior. Ele passa por um processo de treinamento completo, ou seja, a rede neural profunda utilizada para treinar o modelo será refinada completamente com os novos dados que traremos. Isso apresenta um custo muito alto e, por consequência, precisamos de um volume muito grande de dados para executar esse processo de treinamento.

Fine-Tuning Supervisionado e Direct Preference Optimization

Quando utilizamos o ecossistema da OpenAI, ela oferece dois tipos de Fine-Tuning. Escolheremos um deles para refinar nosso modelo. O primeiro tipo de Fine-Tuning que a OpenAI oferece é o Fine-Tuning Supervisionado. Este é indicado para situações como a nossa, onde temos um tipo de dado de entrada e sabemos exatamente qual é o rótulo de saída esperado. Isso faz com que precisemos de um número menor de dados para treinar o modelo. É esperado que tenhamos cerca de 50 exemplares para obter bons resultados no processo de classificação, mas ele é recomendado para tarefas mais objetivas. No nosso caso, recebemos um comentário e definimos um perfil do usuário, dado um conjunto de exemplos que entregamos ao modelo.

Outro tipo de Fine-Tuning que a OpenAI oferece é o Direct Preference Optimization. Esta técnica de refinamento é utilizada quando temos ajustes preferidos. Entregamos à OpenAI dois tipos de respostas distintos e indicamos qual delas preferimos. É uma abordagem geralmente utilizada com pares comparativos. Não utilizaremos essa estratégia neste curso, mas abordaremos esse tema em outros cursos.

Processo de Fine-Tuning Supervisionado

A ideia principal é utilizarmos a técnica supervisionada de Fine-Tuning. Como esse processo acontece? Inicialmente, preparamos os dados que utilizaremos para criar um JSON que entrega objetos por linha. É um pouco diferente do JSON tradicional, pois cada linha traz um objeto completo, que é um exemplar ou registro que utilizaremos para treinar o modelo.

Em seguida, enviamos esses dados para a OpenAI para que ela possa treinar o modelo, ajustando-o de acordo com esses novos exemplares de informação que traremos, que podem descrever como ele deve responder a uma pergunta ou atualizar informações e registros já ultrapassados. A partir disso, avaliaremos o desempenho do modelo, iteraremos, se necessário, refinando mais de uma vez, e selecionaremos versões melhores do modelo gerado. Depois, poderemos implantar esse modelo, ou seja, levá-lo para uma aplicação em Python e, por fim, usá-lo em produção, onde verificaremos se, de fato, nas mãos do usuário, ele está funcionando e performando adequadamente.

Custos e Modelos Disponíveis

É claro que tudo isso tem um custo. Estamos utilizando um modelo que já foi pré-treinado e pré-definido pela OpenAI. Existem versões diferentes desses modelos que podemos utilizar, e cada modelo acaba tendo um custo distinto.

Basicamente, temos como modelos possíveis o GPT-4O, que custa 25 dólares para cada um milhão de tokens de treinamento, o GPT-4OMini, que custa 3 dólares para cada um milhão de tokens de treinamento, o 3.5 Turbo, que é um pouco mais caro que o 4OMini, o DaVinci e o Abaji, que são modelos mais baratos. No entanto, o DaVinci acaba sendo um pouco mais caro que o 4OMini. Esse custo é utilizado para que possamos enviar dados para a OpenAI, que irá treinar o modelo de alguma forma, utilizando os tokens de entrada, desde que estejam no formato adequado de JSON por linhas, conforme comentado anteriormente.

Estruturação do JSON para Fine-Tuning

O processo de estruturação desse JSON envolve um exemplar, um rótulo de treinamento por linha. A representação visual está mais fácil para compreensão, mas a estrutura é a seguinte: cada exemplo de mensagem que queremos entregar ao modelo para treinamento é composto por um conjunto de pares de papel. Isso significa que estamos atribuindo um papel ao modelo nesse processo de treinamento, simulando uma mensagem, uma interação do usuário com a máquina, e qual é o conteúdo dessa interação.

Por exemplo, o primeiro papel é o nosso sistema, que traz o seguinte conteúdo: "classifique o perfil do usuário com base no comentário". Essa é a mesma diretriz mostrada anteriormente sobre como o modelo deve se comportar. A segunda interação envolve o usuário, que diz: "Ah, claro, porque o mundo realmente precisa de mais um filme de herói chorando em câmera lenta." Essa é a mesma mensagem mostrada anteriormente para o sistema. Aqui, estamos dizendo que, ao receber esse tipo de mensagem, o modelo deve se comportar com um rótulo de saída, tentando responder ou classificar o perfil do usuário. Quem fornece essa resposta é o trecho com o papel de assistente, que traz a resposta "crítico-irônico".

Exemplo Prático e Estrutura do JSON

Não conseguimos reproduzir todos os tipos de mensagem com um único exemplo, por isso precisamos de vários exemplos para que o modelo entenda como deve se comportar para cada exemplar inédito. A estrutura utilizada para trabalhar com nossa direção será de um registro por linha. O formato será um pouco diferente daquele visto anteriormente ao trabalhar com nossa base de informações, mas o conteúdo será o mesmo.

O formato será um dicionário cuja primeira chave é mensagens, e dentro dessa chave temos uma lista de elementos do tipo dicionário. O primeiro dicionário envolve o papel de sistema com seu conteúdo, o segundo dicionário, o papel de usuário com seu conteúdo, e o terceiro dicionário, o papel de assistente com seu respectivo conteúdo, que é o resultado da classificação, ou seja, o rótulo que queremos que o modelo entregue.

Implementação no Visual Studio Code

No Visual Studio Code, baixamos o projeto base para entender a estrutura do JSON na prática. Os dados estão dentro do diretório "dados". Há outros arquivos que não serão modificados por enquanto, mas o arquivo de interesse é o database-finetuning.jsonl. Ao abrir, observamos que cada linha do arquivo tem um registro para treinamento do modelo. Ele é composto por um dicionário que começa com mensagens, como visto anteriormente, e os outros três pares de papéis com seus respectivos conteúdos.

Por exemplo, o primeiro papel de sistema pede para classificar o perfil de usuário com base em um comentário. Ao rolar para a direita, vemos o comentário do usuário: "esse filme é um retrato fiel das tensões sociais contemporâneas." O terceiro papel é o assistente, que fornece a resposta: "usuário com perfil engajado analítico." Dessa forma, temos vários registros. Como temos seis perfis diferentes, garantimos pelo menos 300 registros, 50 exemplares para cada um.

Considerações Finais e Próximos Passos

É importante lembrar que esse processo é custoso. Precisamos garantir que o arquivo esteja no formato adequado. No próximo vídeo, veremos se a estrutura está correta e qual é o custo para treinar utilizando esse conjunto de dados. Vamos continuar no próximo vídeo.


Se houver snippets de código específicos que você gostaria de discutir ou integrar, por favor, forneça-os, e eu ficarei feliz em ajudar a incorporá-los de forma didática.

Sobre o curso Fine-Tuning OpenAI: personalize seus modelos GPT

O curso Fine-Tuning OpenAI: personalize seus modelos GPT possui 85 minutos de vídeos, em um total de 43 atividades. Gostou? Conheça nossos outros cursos de IA para Programação em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Escolha a duração
do seu plano

Conheça os Planos para Empresas