![]() | Este é o repositório não oficial do livro: Modelos de idiomas grandes: Aplicar e implementar estratégias para grandes modelos de idiomas (APRESS). O livro é baseado no conteúdo deste repositório, mas os notebooks estão sendo atualizados e estou incorporando novos exemplos e capítulos. Se você estiver procurando o repositório oficial do livro, com os notebooks originais, visite o repositório da Apress, onde pode encontrar todos os notebooks em seu formato original como eles aparecem no livro. Compre em: [Amazon] [Springer] |
Observe que o curso no Github não contém todas as informações que estão no livro.
Essas mãos livres práticas em andamento sobre grandes modelos de idiomas e seus aplicativos estão no desenvolvimento permanente? Estarei postando as diferentes lições e amostras à medida que as completo.
O curso oferece uma experiência prática usando modelos do OpenAI e da Biblioteca de Facas Hugging. Vamos ver e usar muitas ferramentas e praticar com pequenos projetos que crescerão à medida que podemos aplicar o novo conhecimento adquirido.
Alguns dos tópicos e tecnologias abordados nesta seção incluem: chatbots, geração de código, API OpenAI, rosto abraçando, bancos de dados de vetores, Langchain, ajuste fino, ajuste fino, ajuste suave, lora, qlora, avaliar modelos, destilação de conhecimento.
Cada lição é conformada por cadernos e artigos. Os notebooks contêm informações suficientes para entender o código dentro deles, o artigo fornece explicações mais detalhadas sobre o código e o tópico abordado.
Meu conselho é abrir o artigo ao lado do caderno e acompanhar. Muitos dos artigos oferecem pequenas dicas sobre variações que você pode apresentar aos notebooks. Eu recomendo segui -los para melhorar a clareza dos conceitos.
A maioria dos notebooks é hospedada no Colab, enquanto alguns estão em Kaggle. Kaggle fornece mais memória na versão gratuita em comparação com o COLAB, mas acho que copiar e compartilhar notebooks é mais simples no Colab, e nem todo mundo tem uma conta de kaggle.
Alguns dos notebooks exigem mais memória do que a versão gratuita do COLAB fornece. Enquanto trabalhamos com grandes modelos de idiomas, esta é uma situação comum que se repetirá se você continuar trabalhando com eles. Você pode executar os notebooks em seu próprio ambiente ou optar pela versão Pro do Colab.
Cada caderno é suportado com um artigo médio em que o código é explicado em detalhes.
Nesta primeira seção do curso, aprenderemos a trabalhar com a API Openai, criando dois pequenos projetos. Vamos nos aprofundar nos papéis do Openai e em como fornecer as instruções necessárias ao modelo através do prompt para fazê -lo se comportar como desejamos.
O primeiro projeto é um chatbot de restaurante, onde o modelo receberá pedidos de clientes. Com base neste projeto, construiremos um gerador de declaração SQL. Aqui, tentaremos criar um aviso seguro que aceite apenas comandos de criação do SQL e nada mais.
Utilizaremos o OpenAI GPT-3.5 e o painel para desenvolver um chatbot direto, adaptado para um restaurante de fast food. Durante o curso, exploraremos os fundamentos da engenharia imediata, incluindo a compreensão das várias funções do OpenAI, manipulando as configurações de temperatura e como evitar injeções rápidas.
| Painel de artigo / Artigo Gradio | Painel de notebook / caderno graduado |
|---|
Seguindo a mesma estrutura utilizada no artigo anterior para criar o chatbot, fizemos algumas modificações para desenvolver uma linguagem natural para o SQL Translator. Nesse caso, o modelo precisa ser fornecido com as estruturas da tabela e os ajustes foram feitos no prompt para garantir a funcionalidade suave e evitar possíveis falhas. Com essas modificações em vigor, o tradutor é capaz de converter consultas de linguagem natural em consultas SQL. O @fmquaglia criou um notebook usando o DBML para descrever as tabelas que de longe é uma abordagem melhor que o original.
| Artigo / artigo Gradio | Notebook / Notebook Gradio / Notebook DBML |
|---|
Exploraremos técnicas rápidas de engenharia para melhorar os resultados que obtemos dos modelos. Como como formatar a resposta e obter uma resposta estruturada usando poucas amostras de tiro.
| Artigo | Caderno |
|---|
Uma breve introdução aos bancos de dados de vetores, uma tecnologia que nos acompanhará em muitas lições ao longo do curso. Trabalharemos em um exemplo de geração aumentada de recuperação usando informações de vários conjuntos de dados de notícias armazenados no Chromadb.
Se houver um aspecto que ganhe importância no mundo de grandes modelos de idiomas, está explorando como alavancar informações proprietárias com eles. Nesta lição, exploramos uma solução possível que envolve armazenar informações em um banco de dados vetorial, Chromadb em nosso caso e usá -las para criar prompts enriquecidos.
| Artigo | Caderno |
|---|
Aprimoramos o sistema de pano, introduzindo uma camada de cache semântica capaz de determinar se uma pergunta semelhante já foi feita antes. Se afirmativo, ele recupera informações de um sistema de cache criado com o FAISS em vez de acessar o banco de dados do vetor.
A inspiração e o código base do cache semântico presentes neste notebook existem graças ao curso: https://maven.com/boring-bot/advanced-llm/1/home de hamza farooq.
| Artigo | Caderno |
|---|---|
| WIP | Caderno |
Langchain tem sido uma das bibliotecas no universo de grandes modelos de idiomas que mais contribuiu para essa revolução. Ele nos permite encadear chamadas para modelos e outros sistemas, permitindo criar aplicativos com base em grandes modelos de idiomas. No curso, usaremos várias vezes, criando projetos cada vez mais complexos.
Nesta lição, usamos o Langchain para aprimorar o notebook da lição anterior, onde usamos dados de dois conjuntos de dados para criar um prompt enriquecido. Desta vez, com a ajuda de Langchain, construímos um pipeline responsável por recuperar dados do banco de dados do vetor e passá -lo para o modelo de idioma. O notebook está configurado para funcionar com dois conjuntos de dados diferentes e dois modelos diferentes. Um dos modelos é treinado para geração de texto, enquanto o outro é treinado para geração de text2text.
| Artigo | Caderno |
|---|
Criaremos um sistema de resposta de comentários usando um pipeline de dois modelos construído com o Langchain. Nesta configuração, o segundo modelo será responsável por moderar as respostas geradas pelo primeiro modelo.
Uma maneira eficaz de impedir que nosso sistema gerem respostas indesejadas é usando um segundo modelo que não possui interação direta com os usuários para lidar com a geração de respostas.
Essa abordagem pode reduzir o risco de respostas indesejadas geradas pelo primeiro modelo em resposta à entrada do usuário.
Vou criar notebooks separados para esta tarefa. Um envolverá modelos do OpenAI, e os outros utilizarão modelos de código aberto fornecidos abraçando o rosto. Os resultados obtidos nos três cadernos são muito diferentes. O sistema funciona muito melhor com os modelos OpenAI e LLAMA2.
| Artigo | Caderno |
|---|---|
| Artigo OpenAI | Notebook Openai |
| Artigo llama2-7b | Notebook llama2-7b |
| Nenhum artigo | Notebook GPT-J |
Os agentes são uma das ferramentas mais poderosas do mundo dos grandes modelos de idiomas. O agente é capaz de interpretar a solicitação do usuário e usar as ferramentas e as bibliotecas à sua disposição até alcançar o resultado esperado.
Com os agentes Langchain, vamos criar em apenas algumas linhas um dos agentes mais simples, mas incrivelmente poderosos. O agente atuará como assistente de analista de dados e nos ajudará a analisar dados contidos em qualquer arquivo do Excel. Será capaz de identificar tendências, usar modelos, fazer previsões. Em resumo, criaremos um agente simples que podemos usar em nosso trabalho diário para analisar nossos dados.
| Artigo | Caderno |
|---|
Neste exemplo, duas tecnologias vistas anteriormente são combinadas: agentes e bancos de dados de vetores. As informações médicas são armazenadas no Chromadb, e um agente Langchain é criado, que o buscará somente quando necessário para criar um prompt enriquecido que será enviado ao modelo para responder à pergunta do usuário.
Em outras palavras, um sistema de pano é criado para ajudar um chatbot médico.
Atenção!!! Use -o apenas como exemplo. Ninguém deve tomar as recomendações da bota como as de um médico de verdade. Reunino toda a responsabilidade pelo uso que pode ser dado ao chatbot. Eu o construí apenas como um exemplo de diferentes tecnologias.
| Artigo | Caderno |
|---|
As métricas usadas para medir o desempenho de grandes modelos de linguagem são bem diferentes das que usamos em modelos mais tradicionais. Estamos se afastando de métricas como precisão, pontuação de F1 ou recall e avançando em direção a métricas como Bleu, Rouge ou Meteor.
Essas métricas são adaptadas à tarefa específica atribuída ao modelo de idioma.
Nesta seção, exploraremos exemplos de várias dessas métricas e como usá -las para determinar se um modelo é superior a outro para uma determinada tarefa. Vamos nos aprofundar em cenários práticos, onde essas métricas nos ajudarão a tomar decisões informadas sobre o desempenho de diferentes modelos.
Bleu é uma das primeiras métricas estáveis a avaliar a qualidade das traduções. No caderno, comparamos a qualidade de uma tradução feita pelo Google com outro a partir de um modelo de código aberto de Hugging Face.
| WIP do artigo | Caderno |
|---|
Exploraremos o uso da métrica Rouge para medir a qualidade dos resumos gerados por um modelo de idioma. Usaremos dois modelos T5, um deles sendo o modelo T5-BASE e o outro, um tuno fino T5-BASE, projetado especificamente para criar resumos.
| Artigo | Caderno |
|---|
Neste exemplo inicial, você pode observar como usar o Langsmith para monitorar o tráfego entre os vários componentes que compõem o agente. O agente é um sistema de pano que utiliza um banco de dados vetorial para construir um prompt enriquecido e passá -lo para o modelo. Langsmith captura o uso das ferramentas do agente e as decisões tomadas pelo modelo, fornecendo informações o tempo todo sobre os dados enviados/recebidos, tokens consumidos, a duração da consulta e tudo isso em um ambiente verdadeiramente fácil de usar.
| Artigo | Caderno |
|---|
Anteriormente, no Notebook, Rouge Métricas: Avaliando os resumos, aprendemos a usar o Rouge para avaliar qual resumo melhor se aproximou do criado por um humano. Desta vez, usaremos a distância de incorporação e o Langsmith para verificar qual modelo produz resumos mais semelhantes aos de referência.
| Artigo | Caderno |
|---|
Tomamos o agente que funciona como assistente médico e incorporamos Giskard para avaliar se suas respostas estão corretas. Dessa forma, não apenas a resposta do modelo é avaliada, mas também a recuperação de informações no banco de dados vetorial. Giskard é uma solução que permite avaliar uma solução completa de pano.
| Artigo | Caderno |
|---|
A biblioteca LM-EVAL da Eleutherai fornece fácil acesso a benchmarks acadêmicos que se tornaram padrões do setor. Ele suporta a avaliação de modelos de código aberto e APIs de fornecedores como o OpenAI, e até permite a avaliação de adaptadores criados usando técnicas como o LORA.
Neste caderno, vou me concentrar em uma característica pequena, mas importante, da biblioteca: avaliando os modelos compatíveis com a biblioteca Transformers do Hugging Face.
| Artigo - WIP | Caderno |
|---|
Na seção Finetuning & Optimization, exploraremos diferentes técnicas, como ajuste fino ou LORA, e usaremos a biblioteca de peft de rosto abraçada para ajustar com eficiência modelos de linguagem grandes. Exploraremos técnicas como quantização para reduzir o peso dos modelos.
Neste caderno, dois modelos são treinados usando o ajuste rápido da biblioteca PEFT. Essa técnica não apenas nos permite treinar modificando os pesos de muito poucos parâmetros, mas também nos permite ter diferentes modelos especializados carregados na memória que usam o mesmo modelo fundamental.
O ajuste rápido é uma técnica aditiva e os pesos do modelo pré-treinado não são modificados. Os pesos que modificamos neste caso são os de tokens virtuais que adicionamos ao prompt.
| Artigo | Caderno |
|---|
Após uma breve explicação de como a técnica de ajuste fina lora funciona, ajustaremos um modelo da família Bloom para ensiná-lo a construir instruções que podem ser usadas para instruir grandes modelos de linguagem.
| Artigo | Caderno |
|---|
Vamos ver uma breve introdução à quantização, usada para reduzir o tamanho de grandes modelos de linguagem. Com a quantização, você pode carregar grandes modelos reduzindo os recursos de memória necessários. Ele também se aplica ao processo de ajuste fino, você pode ajustar o modelo em uma única GPU sem consumir todos os recursos. Após a breve explicação, vemos um exemplo sobre como é possível ajustar um modelo Bloom 7b INA A T4 16GB GPU no Google Colab.
| Artigo | Caderno |
|---|
Esta seção ainda está em construção. O objetivo é construir um currículo que nos levará das técnicas de poda mais simples para criar um modelo usando as mesmas técnicas empregadas pelas principais empresas do campo, como Microsoft, Google, Nvidia ou OpenAI, para construir seus modelos.
No primeiro caderno, o processo de poda será aplicado às camadas de feedforward de um modelo destilgpt2. Isso significa que o modelo terá pesos reduzidos nessas camadas específicas. Os neurônios para podar são selecionados com base em suas pontuações de importância, que calculamos usando a norma L1 de seus pesos. É uma abordagem simples, para este primeiro exemplo, que pode ser usado quando você deseja criar um modelo podado que imite o modelo básico em todas as áreas.
Ao alterar a estrutura do modelo, um novo arquivo de configuração deve ser criado para garantir que funcione corretamente com a biblioteca transformers .
| Notebook: podando um modelo destilgpt2. |
|---|
Neste primeiro caderno, tentamos replicar o processo de poda usado com o modelo DISTILGPT2, mas aplicado a um modelo de lhama. Ao não levar em consideração as características do modelo, o processo de poda resulta em um modelo completamente inutilizável. Este caderno serve como um exercício para entender o quão crucial é conhecer a estrutura dos modelos que passarão por poda.
| Notebook: Aproveite um modelo LLAMA3.2 Aproach incorreto. |
|---|
O segundo caderno aborda os problemas encontrados ao aplicar o mesmo processo de poda no modelo LLAMA, usado para o DISTILGPT2.
A abordagem correta é tratar as camadas MLP do modelo como pares, em vez de camadas individuais e calcular a importância do neurônio, considerando as duas camadas juntas. Além disso, mudamos para usar o peso absoluto máximo para decidir quais neurônios permanecem nas camadas podadas.
| Artigo de poda llama3 | Caderno: podando um modelo LLAMA3.2 Aproach correto. |
|---|
Neste caderno, examinaremos um exemplo de poda de profundidade, que envolve a remoção de camadas inteiras do modelo. A primeira coisa a observar é que a remoção de camadas inteiras de um modelo de transformador geralmente tem um impacto significativo no desempenho do modelo. Essa é uma mudança arquitetônica muito mais drástica em comparação com a simples remoção de neurônios das camadas MLP, como visto no exemplo anterior.
| Caderno: Profundação A poda um modelo de lhama. |
|---|
Neste projeto inicial direto, vamos desenvolver um gerador SQL a partir da linguagem natural. Começaremos criando o prompt para implementar duas soluções: uma usando modelos Openai em execução no Azure e o outro com um modelo de código aberto de abraçar o rosto.
| Artigo | Caderno |
|---|---|
| Crie um prompt NL2SQL para o OpenAI | Criação imediata para o OpenAi |
| WIP | Criação rápida para DEFOG/SQLCODER |
| Conferência do Azure Configuração. | Usando o ponto de inferência do Azure |
Neste pequeno projeto, criaremos um novo modelo alinhando um modelo Microsoft-PHI-3 com DPO e depois o publicará para abraçar o rosto.
| Artigo | Caderno |
|---|---|
| WIP | Alinhando com o modelo DPO A PHI3-3. |
Nesta solução inicial, projetamos uma arquitetura para um sistema NL2SQL capaz de operar em um grande banco de dados. O sistema deve ser usado com dois ou três modelos diferentes. De fato, usamos três modelos no exemplo.
É uma arquitetura que permite um kickoff de projeto rápido, fornecendo serviço para apenas algumas tabelas no banco de dados, permitindo -nos adicionar mais tabelas em nosso ritmo.
Nesta solução, exploramos o poder transformador de incorporações e grandes modelos de idiomas (LLMs) na avaliação de riscos do cliente e recomendação de produtos no setor financeiro. Alterando o formato em que armazenamos informações do cliente e, consequentemente, também mudaremos a maneira como essas informações viajam dentro dos sistemas, alcançando vantagens importantes.
Por favor, se você encontrar algum problema, abra um problema. Farei o meu melhor para corrigi -lo o mais rápido possível e dar crédito.
Se você deseja fazer uma contribuição ou sugerir um tópico, não hesite em iniciar uma discussão. Eu ficaria encantado por receber qualquer opinião ou conselho.
Não seja tímido, compartilhe o curso em suas redes sociais com seus amigos. Conecte -se comigo no LinkedIn ou no Twitter e sinta -se à vontade para compartilhar o que quiser ou fazer qualquer pergunta que possa ter.
Dê uma estrela ️ ao repositório. Isso me ajuda muito e me incentiva a continuar adicionando lições. É uma boa maneira de apoiar cursos gratuitos de código aberto como este.
Tom Kocmi, Christian Federmann, grandes modelos de idiomas são avaliadores de última geração da qualidade da tradução. Avaliando LLMs com LLMS.
Pere Martra, Introdução a grandes modelos de idiomas com o OpenAi
REACT: Sinergizar o raciocínio e atuar em modelos de idiomas. Seção Langchain & Agents. Amostra de assistente médico.
O poder de escala para ajuste rápido com eficiência de parâmetro. Seção de ajuste fino e otimização. Amostra de ajuste imediato.
Lora: adaptação de baixo rank de grandes modelos de linguagem. Seção de ajuste fino e otimização. Amostra de ajuste fino de Lora.
Qlora: Finetuning eficiente de LLMs quantizados. Seção de ajuste fino e otimização. Amostra de ajuste fino de Qlora.
Como solicitar o LLMS para texto para SQL: um estudo em configurações de tiro zero, domínio único e domínio cruzado. Projeto. Linguagem natural para SQL.
Saurav Muralidharan, Sharath Turuvekere Sreenivas, Raviraj Joshi, Marcin ChoChowski, Mostofa Patwary, Mohammad Shoeybi, Bryan Catanzaro, Jan Kautz, Pavlo Molchanov, "Antropact Modelos de Languas Via Via e Conhecimento da Protagem de Jan," Antrox, "Antrúzios de Antrúsculo," Pavlo Molchanov, "Antrov," Antrov, a ARTIVEN. 2024. Disponível em: https://doi.org/10.48550/arxiv.2407.14679.