Como criar meu modelo de AI especializado baseado em algum Foundation Model?
Preparando Modelos especializados
Estatégias
- Estratégia 1: Preparação de Embeddings como base de conhecimento para Foundation Model.
- Deste modo construímos uma database vetorial que pode ser utilizada para medir Proximidade. Podemos armazenar isso em um ChromaDB ou Pinecone ou alguma outra database vetorial.
- Estratégia 2: Fine Tuning de Modelo usando provedores ou não.
- A openai por exemplo disponibiliza ferramentas para fazermos treinamento dos foundation model deles como por exemplo o gpt3.
- Isso é um método coerente para especializar um modelo já parrudo para nossos use-cases. Dito isso. Esse método exige muitos dados e é interessante utilizar técnicas de Reinforcement Learning with Human Feedback (RLHF) onde fazemos um treinamento progressivo do modelo a partir de testes humanos.
- Estratégia 3: Um Mix da 1 e 2.
Problemas
A utilização de Embeddings tem limitações.
- A definição do tamanho dos chunks cuja a posiçao vetorial será definida interfere com a qualidade das pesquisas.
- O algoritmo de embeddings ideal é algo que não fica claro quanto à qual é o melhor. Mas de fato interfere com a qualidade dos resultados diretamente.
- A forma de entregar os resultados do Embeddings é via prompt, ou seja, é uma adição de contexto para a IA. Todavia, isso não garante que a IA vai obedecer aos embeddings, embora experimentação indique que ela vai sim.
- Confiabilidade nos resultados do embedding: Os resultados vindos do embedding dependem diretamente do que foi entregue para a pesquisa, e geralmente trabalhamos com a ideia de que a pesquisa do embedding deve ser feita no contexto atual. Portanto, os resultados dependem diretamente da pergunta feita pelo usuário que pode não colaborar com o resultado desejado dependendo da forma que a pergunta é formulada. Algo do tipo "Qual é o nome disso?" Onde a informação relevante estaria na realidade na mensagem anterior e não nessa.
Problemas com Fine Tuning
- Perda de capacidade de formulação: Fine-tuning tende a diminuir drásticamente a capacidade de formulação de respostas do chatgpt.
- Perda de capacidade generalista. O GPT perde parte da capacidade de responder perguntas relacionadas à contextos diferentes da base de conhecimento à ele apresentada.
- Aumento da alucinção. Quanto menor a base de dados mais propenso o modelo fica à identificar padrões inadequados e portanto alucinar com maior facilidade.
Daí surge minha pergunta de fato
A Openai disponibilizou a ferramenta para construção de GPTs. Essa ferramenta permite que especializemos os modelos deles para nossos objetivos pessoais.
Ao criar um modelo, ele recebe um system prompt, uma base de conhecimento e uma breve descrição (menor que 300 caracteres) de quem o bot é e o que ele faz.
A crição de um GPT é quase que imediata, então supõe-se que não há fine tuning envolvido.
Supõe-se que estão utilizando Embeddings para pesquisar na base de conhecimento disponibilizada.
Após fazer testes comparando o modelo especializado do gpt e o gpt-4 puro, o modelo especializado performou consideravelmente melhor do que o gpt4, de fato. O que implica que a base de dados, de fato, teve uma grande importância na performance.
Minha dúvida é: Como a Openai teve resultados tão melhores na construção de embeddings e na disponibilização de respostas?
Qual modelo de embeddings eles usam? Como eles separam os chunks? Como eles apresentam os resultados dos embeddings para o modelo deles? Qual foundation model eles usam gpt3.5, gpt4 ou algum modelo especializado pra isso? Quem é o time responsável pela estrutura de criação dos GPTs? Alguém tem alguma informação sobre qualquer coisa que ajude nessa jornada de entender como fazer melhores modelos de línguagem especializados?
Fica aí a oportunidade de discussão. Tamo junto, turma.