paint-brush
PrivateGPT para resumo de livros: teste e classificação de variáveis de configuraçãopor@cognitivetech
3,153 leituras
3,153 leituras

PrivateGPT para resumo de livros: teste e classificação de variáveis de configuração

por CognitiveTech15m2024/01/15
Read on Terminal Reader

Muito longo; Para ler

Existem muitas variáveis ao implementar grandes modelos de linguagem. Vamos testar e refinar nossos processos para resumir livros fundindo o PrivateGPT.
featured image - PrivateGPT para resumo de livros: teste e classificação de variáveis de configuração
CognitiveTech HackerNoon profile picture
0-item
1-item

Comecei a resumir uma dúzia de livros à mão e descobri que levaria semanas para cada resumo. Então me lembrei da revolução da IA acontecendo e decidi que já havia passado da hora de pular nessas águas.


Quando comecei a explorar o uso de grandes modelos de linguagem (LLM) para resumir textos grandes, não encontrei uma orientação clara sobre como fazê-lo .

  • Algumas páginas fornecem exemplos de instruções para fornecer ao GPT4 a ideia de que ele saberá magicamente o conteúdo de qualquer livro que você deseja resumir. (NÃO)
  • Algumas pessoas sugeriram que eu precisasse encontrar um modelo com um contexto amplo que pudesse processar todo o meu texto de uma só vez. (Ainda não)
  • Estão disponíveis algumas ferramentas de código aberto que permitem fazer upload de documentos para um banco de dados e responder perguntas com base no conteúdo desse banco de dados. (Chegando perto)
  • Outros sugeriram que você deve primeiro dividir o livro em seções e inseri-las no LLM para resumir, uma de cada vez. (Agora estamos a falar)
  • Além de fazer essa determinação, existem inúmeras variáveis que devem ser levadas em conta ao implementar um determinado LLM.
  • Rapidamente percebi que, apesar de quaisquer recomendações ou classificações de modelos disponíveis, estava obtendo resultados diferentes dos outros. Seja meu caso de uso, formato do modelo, quantização, compactação, estilos de prompt ou o quê? Não sei. Tudo o que sei é que faça suas próprias classificações de modelos de acordo com suas próprias condições de trabalho. Não acredite apenas em algum gráfico que você lê online.


Este guia fornece alguns detalhes sobre meu processo de determinação e teste dos detalhes das variáveis mencionadas acima.


Encontre os dados completos de classificação, orientações e resumos resultantes no GitHub .

Fundo

Termos chave

Alguns desses termos são usados de maneiras diferentes, dependendo do contexto (sem trocadilhos).

  • Large Language Model (LLM) : (também conhecido como modelo) Um tipo de inteligência artificial que foi treinada em grandes conjuntos de dados para compreender e gerar a linguagem humana.

    Exemplo : GPT3.5 e GPT4 da OpenAI que conquistaram o mundo. (No nosso caso, estamos escolhendo entre modelos de código aberto e/ou para download gratuito encontrados em Hugging Face .)

  • Geração Aumentada de Recuperação (RAG) : Uma técnica, desenvolvida pela Meta AI , de armazenamento de documentos em um banco de dados onde o LLM pesquisa para encontrar uma resposta para uma determinada consulta do usuário (Document Q/A).

  • Instruções do usuário: (também conhecido como Prompt ou Contexto) é a consulta fornecida pelo usuário.

    Exemplo: “Resuma o seguinte texto: { text }

  • Prompt do sistema: instruções especiais fornecidas antes do prompt do usuário, que ajudam a moldar a personalidade do seu assistente.

    Exemplo: “Você é um assistente de IA útil.”

  • Contexto: instruções do usuário e possivelmente um prompt do sistema e possivelmente rodadas anteriores de pares de perguntas/respostas. (Os pares de perguntas/respostas anteriores também são chamados simplesmente de contexto).

  • Estilo de prompt : são combinações de caracteres especiais com as quais um LLM é treinado para reconhecer a diferença entre as instruções do usuário, o prompt do sistema e o contexto das perguntas anteriores.

    Exemplo: <s>[INST] {systemPrompt} [INST] [INST] {previousQuestion} [/INST] {answer} </s> [INST] {userInstructions} [/INST]

  • 7B: Indica o número de parâmetros em um determinado modelo (quanto maior geralmente melhor). Parâmetros são as variáveis internas que o modelo aprende durante o treinamento e são usadas para fazer previsões. Para meus propósitos, os modelos 7B provavelmente caberão em minha GPU com 12 GB de VRAM.

  • GGUF: Este é um formato específico para LLM projetado para hardware de consumo (CPU/GPU). Qualquer que seja o modelo de seu interesse, para uso no PrivateGPT, você deve encontrar sua versão GGUF (comumente feita por TheBloke ).

  • Q2-Q8 0, K_M ou K_S: Ao navegar nos arquivos de um repositório GGUF você verá diferentes versões do mesmo modelo. Um número mais alto significa menos compactado e melhor qualidade. O M em K_M significa “Médio” e o S em K_S significa “Pequeno”.

  • VRAM: Esta é a capacidade de memória da sua GPU. Para carregá-lo completamente na GPU, você precisará de um modelo menor que o VRAM disponível.

  • Tokens: Esta é a métrica com a qual o LLM avalia a linguagem. Cada token consiste em aproximadamente 4 caracteres.

O que é PrivateGPT?

PrivateGPT (pgpt) é um projeto de código aberto que fornece uma interface de usuário e API programável que permite aos usuários usar LLM com hardware próprio, em casa. Ele permite que você carregue documentos para seu próprio banco de dados local para Document Q/A compatível com RAG.


Documentação PrivateGPT - Visão geral :

PrivateGPT fornece uma API contendo todos os blocos de construção necessários para construir aplicativos de IA privados e sensíveis ao contexto . A API segue e estende o padrão da API OpenAI e oferece suporte a respostas normais e de streaming. Isso significa que, se você puder usar a API OpenAI em uma de suas ferramentas, poderá usar sua própria API PrivateGPT, sem alterações de código e gratuitamente se estiver executando privateGPT no modo local .


Eu deveria ter perguntado ao LLM, para começar.

Visão geral

  1. Comecei apenas fazendo perguntas para capítulos de livros, usando a UI\RAG do PrivateGPT .

    Em seguida, tentei pré-selecionar o texto para resumo. Esta foi a inspiração para as classificações da Rodada 1, para ver a grande diferença que meus resultados mostrariam. (Resumindo as seções pré-selecionadas.)

  2. Em seguida, eu queria descobrir quais modelos se sairiam melhor nessa tarefa, o que levou à classificação da Rodada 2, onde Mistral-7B-Instruct-v0.2 foi o vencedor claro.

  3. Então, eu queria obter os melhores resultados desse modelo, classificando os estilos de prompt e escrevendo código para obter o estilo de prompt exato esperado.

  4. Depois disso, é claro, tive que testar vários prompts do sistema para ver qual teria o melhor desempenho.

  5. Em seguida, tentei alguns prompts do usuário para determinar qual é exatamente o melhor prompt para gerar resumos que exigem menos pós-processamento.

  6. Em última análise, este tipo de teste deve ser realizado para cada LLM e para determinar a eficácia de qualquer refinamento nos nossos processos. Na minha opinião, somente depois que cada modelo tiver sido direcionado para suas condições mais ideais é que eles poderão ser adequadamente classificados entre si.

Classificações

Quando comecei a testar várias variantes do LLM, mistral-7b-instruct-v0.1.Q4_K_M.gguf veio como parte da configuração padrão do PrivateGPT (feita para rodar em sua CPU). Aqui, preferi as variantes Q8_0.


Embora eu tenha tentado mais de 50 LLM diferentes para esta mesma tarefa, o Mistral-7B-Instruct ainda está entre os melhores, especialmente desde que a v0.2 foi lançada, não encontrei nenhum melhor.


TLDR: Mistral-7B-Instruct-v0.2 - é meu atual líder em tarefas de resumo.

Rodada 1 - Perguntas/Respostas vs Resumo

Descobri rapidamente, ao fazer perguntas e respostas, que obtenho resultados muito melhores ao carregar pedaços menores de dados no banco de dados e começar do zero a cada vez. Então comecei a dividir o PDF em capítulos para fins de perguntas e respostas.


Para minha primeira análise, testei 5 LLM diferentes para as seguintes tarefas:

  1. Fazer as mesmas 30 perguntas para um capítulo de livro de 70 páginas.
  2. Resumindo o mesmo capítulo do livro de 70 páginas, dividido em 30 partes.

Classificação de perguntas/respostas

  1. Hermes Trismegistus Mistral 7b - Meu favorito, durante esses testes, mas na hora de editar os resumos decidi que era muito detalhado.
  2. SynthIA 7B V2 - Tornou-se meu modelo favorito testado nesta rodada.
  3. Mistral 7b Instruct v0.1 - Não tão bom quanto eu gostaria.
  4. CollectiveCognition v1.1 Mistral 7b Muito preenchimento e demorou mais tempo de todos. Ele obteve uma pontuação um pouco mais alta do que o mistral em qualidade/utilidade, mas a quantidade de preenchimento apenas tornou a leitura menos agradável.
  5. KAI 7b Instruct as respostas foram muito curtas e fizeram seu BS se destacar um pouco mais. Um bom modelo, mas não para resumos detalhados de livros.

Mostrado, para cada modelo

  • Número de segundos necessários para gerar a resposta
  • Soma de Utilidade Subjetiva\Classificações de Qualidade
  • Quantos caracteres foram gerados?
  • Soma dos pedaços de contexto encontrados no intervalo de destino.
  • Número de qualidades listadas abaixo encontradas no texto gerado:
    • Preenchimento (palavras extras com menos valor)
    • Curto (muito curto, não o suficiente para trabalhar).
    • BS (não é deste livro e não é útil.)
    • Bom BS (não da seção direcionada, mas válido.)

Modelo

Avaliação

Precisão de pesquisa

Personagens

Segundos

Bobagem

Preenchimento

Curto

Bom besteira

hermes-trismegisto-mistral-7b

68

56

62141

298

3

4

0

6

synthia-7b-v2.0

63

59

28087

188

1

7

7

0

mistral-7b-instruct-v0.1

51

56

21131

144

3

0

17

1

cognição coletiva-v1.1-mistral-7b

56

57

59453

377

3

10

0

0

kai-7b-instruir

44

56

21480

117

5

0

18

0

Classificação resumida

Para esta primeira rodada, divido o conteúdo do capítulo em seções com uma variedade de

900-14.000 caracteres cada (ou 225-3.500 tokens).


NOTA: Apesar dos numerosos modelos de contexto grandes lançados, por enquanto, ainda acredito que contextos menores resultam em resumos melhores. Não prefiro mais do que 2.750 tokens (11.000 caracteres) por tarefa de resumo.


  1. Hermes Trismegistus Mistral 7b – Ainda na liderança. É detalhado, com algum preenchimento. Posso usar esses resultados.
  2. SynthIA 7B – Muito bom, mas muito conciso. Muitas das respostas foram perfeitas, mas 7 eram muito curtas/incompletas para serem usadas.
  3. Mistral 7b Instruct v0.1 - Muito curto.
  4. Instrução KAI 7b - Muito curto.
  5. CollectiveCognition v1.1 Mistral 7b - Muito lixo. Alguns dos resumos eram superdetalhados e perfeitos, mas mais da metade das respostas eram um conjunto de perguntas baseadas no texto, não um resumo.


Não é de surpreender que os resumos tenham um desempenho muito melhor do que as perguntas e respostas, mas também tinham um contexto mais específico.

Nome

Pontuação

Personagens gerados

% de diferença do OG

Segundos para gerar

Curto

Lixo

Bobagem

Preencher

Questões

Detalhado

hermes-trismegisto-mistral-7b

74

45870

-61

274

0

1

1

3

0

0

synthia-7b-v2.0

60

26849

-77

171

7

1

0

0

0

1

mistral-7b-instruct-v0.1

58

25797

-78

174

7

2

0

0

0

0

kai-7b-instruir

59

25057

-79

168

5

1

0

0

0

0

cognição coletiva-v1.1-mistral-7b

31

29509

-75

214

0

1

1

2

17

8

Encontre os dados completos e classificações no Google Docs ou no GitHub: QA Scores , Summary Rankings .

Rodada 2: Resumo - Classificação do modelo

Novamente, prefiro as versões Q8 dos modelos 7B.


Descobrir que o Mistral 7b Instruct v0.2 foi lançado valeu a pena uma nova rodada de testes.

Também decidi testar o estilo prompt. PrivateGPT não veio empacotado com o prompt Mistral e, embora o prompt Mistral seja semelhante ao prompt Llama2, ele pareceu funcionar melhor com o prompt padrão (índice de lhama).

  • SynthIA-7B-v2.0-GGUF - Esse modelo se tornou meu favorito, então usei-o como benchmark.
  • Mistral-7B-Instruct-v0.2 (Llama-index Prompt) Estrela do show aqui, bastante impressionante.
  • Mistral-7B-Instruct-v0.2 (Prompt Llama2) Ainda bom, mas não tão bom quanto usar o prompt llama-index
  • Tess-7B-v1.4 - Outro do mesmo criador do Synthia v2. Bom, mas não tão bom.
  • Llama-2-7B-32K-Instruct-GGUF - funcionou bem, mas lentamente, com prompt de índice de lhama. Apenas ruim com o prompt do llama2. (Deve testar novamente com o estilo Llama2 "Instruct Only")

Classificação resumida

Apenas resumos, perguntas e respostas são menos eficientes para resumos de livros.

Modelo

% Diferença

Pontuação

Comente

Synthia 7b V2

-64.43790093

28

Bom

Mistral 7b Instruct v0.2 (prompt padrão)

-60.81878508

33

VBom

Instrução Mistral 7b v0.2 (prompt Llama2)

-64.5871483

28

Bom

Tess 7b v1.4

-62.12938978

29

Menos Estruturado

Instrução Llama 2 7b 32k (padrão)

-61.39890553

27

Menos estruturado. Lento

Encontre os dados completos e classificações no Google Docs ou no GitHub .

Rodada 3: Estilo de Prompt

Na rodada anterior, percebi que o Mistral 7b Instruct v0.2 tinha um desempenho muito melhor com o prompt padrão do que o llama2.


Bem, na verdade, o prompt do mistral é bastante semelhante ao llama2, mas não exatamente o mesmo.

  1. lhama_index (padrão)
 system: {{systemPrompt}} user: {{userInstructions}} assistant: {{assistantResponse}}
  1. lhama2:
 <s> [INST] <<SYS>> {{systemPrompt}} <</SYS>> {{userInstructions}} [/INST]
  1. mistral:
 <s>[INST] {{systemPrompt}} [/INST]</s>[INST] {{userInstructions}} [/INST]


Comecei a testar a saída com os estilos de prompt default e llama2 . Em seguida, comecei a trabalhar na codificação do modelo mistral .


Os resultados dessa classificação me deram a confiança de que codifiquei corretamente.

Estilo de prompt

% Diferença

Pontuação

Observação

Mistral

-50%

51

Perfeito!

Padrão (índice de lhama)

-42%

43

Títulos ruins

Lhama2

-47%

48

Sem estrutura

Encontre os dados completos e classificações no Google Docs ou no GitHub .

Rodada 4: prompts do sistema

Depois de definir o estilo do prompt, tentei alguns prompts do sistema diferentes e fiquei surpreso com o resultado!

Nome

Alerta do sistema

Mudar

Pontuação

Comente

Nenhum


-49,8

51

Perfeito

Prompt padrão

Você é um assistente prestativo, respeitoso e honesto. \nSempre responda da forma mais prestativa possível e siga TODAS as instruções fornecidas. \nNão especule nem invente informações. \nNão faça referência a nenhuma instrução ou contexto."

-58,5

39

Menos legal

MeuPrompt1

"Você é amado. Aja como um especialista em resumo, delineamento e estruturação. \nSeu estilo de escrita deve ser informativo e lógico."

-54,4

44

Menos legal

Simples

"Você é um assistente de IA útil. Não inclua nenhuma instrução do usuário ou contexto do sistema como parte de sua produção."

-52,5

42

Menos legal

No final, descobri que o Mistral 7b Instruct v0.2 funciona melhor para meus resumos sem qualquer prompt do sistema.


Talvez tivesse resultados diferentes para uma tarefa diferente, ou talvez uma solicitação melhor, mas funciona bem, então não estou brincando com isso.


Encontre os dados completos e classificações no Google Docs ou no GitHub .

Rodada 5: Solicitação do usuário

O que já comecei a suspeitar é que estou obtendo melhores resultados com menos palavras no prompt. Como encontrei o melhor prompt do sistema, para Mistral 7b Instruct v0.2 , também testei qual prompt do usuário é mais adequado.


Incitar

contra OG

pontuação

observação

Prompt0

Escreva notas concisas, mas abrangentes, resumindo o texto a seguir. Use marcadores aninhados: com títulos, termos e conceitos-chave em negrito. Concentre-se no conhecimento essencial deste texto sem adicionar nenhuma informação externa.

43%

11


Solicitação1

Escreva notas concisas, mas abrangentes, resumindo o texto a seguir. Use marcadores aninhados: com títulos, termos e conceitos-chave em negrito. Concentre-se no conhecimento essencial deste texto sem adicionar nenhuma informação externa.

46%

11

Notas extras

Prompt2

Escreva notas abrangentes resumindo o texto a seguir. Use marcadores aninhados: com títulos, termos e conceitos-chave em negrito.

58%

15


Alerta3

Crie notas concisas com marcadores resumindo as partes importantes do texto a seguir. Use marcadores aninhados, com termos de títulos e conceitos-chave em negrito, incluindo espaços em branco para garantir a legibilidade. Evite repetição.

43%

10


Prompt4

Escreva notas concisas resumindo o texto a seguir. Use marcadores aninhados: com títulos, termos e conceitos-chave em negrito.

41%

14


Alerta5

Crie notas abrangentes, mas concisas, resumindo o texto a seguir. Use marcadores aninhados: com títulos, termos e conceitos-chave em negrito.

52%

14

Notas extras

Encontre os dados completos e classificações no Google Docs ou no GitHub .


Talvez com hardware mais poderoso que possa suportar modelos 11b ou 30b eu obteria melhores resultados com solicitações mais descritivas. Mesmo com o Mistral 7b Instruct v0.2, ainda estou aberto a tentar algumas instruções criativas, mas por enquanto estou feliz em refinar meu processo existente.

Prompt2: Vitórias!

Escreva notas abrangentes resumindo o texto a seguir. Use marcadores aninhados: com títulos, termos e conceitos-chave em negrito.


Nesse caso, abrangente tem melhor desempenho que “conciso”, ou mesmo que “abrangente, mas conciso”.


No entanto, alerto que isso dependerá do seu caso de uso. O que procuro são notas altamente condensadas e legíveis que cubram o conhecimento importante.


Essencialmente, se eu não tivesse lido o original, ainda saberia quais informações ele transmite, se não todos os detalhes específicos. Mesmo que eu tenha lido o original, não vou me lembrar da maioria mais tarde. Estas notas são uma referência rápida aos tópicos principais.

Resultado

Usando o conhecimento adquirido nesses testes, resumi meu primeiro livro completo, 539 páginas em 5-6 horas!!! Incrível!

Em vez de gastar semanas por resumo, concluí meus primeiros 9 resumos de livros em apenas 10 dias.

Plágio

Você pode ver os resultados do CopyLeaks abaixo para cada um dos textos publicados, aqui.

Principalmente considerando que não se trata de fins lucrativos, mas sim de fins educacionais, acredito que esses números são aceitáveis.

Livro

Modelos

Diferença de personagem

Idêntico

Pequenas alterações

Parafraseado

Total Correspondido

Corpo Oriental Mente Ocidental

Synthia 7Bv2

-75%

3,5%

1,1%

0,8%

5,4%

Poder de cura Nervo Vago

Mistral-7B-Instruir-v0.2; SynthIA-7B-v2.0

-81%

1,2%

0,8%

2,5%

4,5%

Ayurveda e a Mente

Mistral-7B-Instruir-v0.2; SynthIA-7B-v2.0

-77%

0,5%

0,3%

1,2%

2%

Curando os Eus Fragmentados dos Sobreviventes de Trauma

Mistral-7B-Instruir-v0.2

-75%




2%

Uma base segura

Mistral-7B-Instruir-v0.2

-84%

0,3%

0,1%

0,3%

0,7%

O corpo mantém a pontuação

Mistral-7B-Instruir-v0.2

-74%

0,1%

0,2%

0,3%

0,5%

Livro Completo dos Chakras

Mistral-7B-Instruir-v0.2

-70%

0,3%

0,3%

0,4%

1,1%

50 anos de teoria do apego

Mistral-7B-Instruir-v0.2

-70%

1,1%

0,4%

2,1%

3,7%

Distúrbios de apego em adultos

Mistral-7B-Instruir-v0.2

-62%

1,1%

1,2%

0,7%

3,1%

Companheiro do Curso de Psicologia

Mistral-7B-Instruir-v0.2

-62%

1,3%

1,2%

0,4%

2,9%

Psicologia em sua vida

Mistral-7B-Instruir-v0.2

-74%

0,6%

0,4%

0,5%

1,6%

Resumos de livros concluídos

Em vez de gastar semanas por resumo, concluí meus primeiros 9 resumos de livros em apenas 10 dias. Entre parênteses está a contagem de páginas do original.

  1. Corpo Oriental Mente Ocidental Anodea Judith (436 páginas)
  2. Poder de cura do nervo vago Stanley Rosenberg (335 páginas)
  3. Ayurveda e a Mente Dr. David Frawley (181 páginas)
  4. Curando os eus fragmentados dos sobreviventes do trauma Janina Fisher (367 páginas)
  5. Uma base segura John Bowlby (133 páginas)
  6. O corpo mantém a pontuação Bessel van der Kolk (454 páginas)
  7. Yoga e Teoria Polivagal, de Segurança Polivagal Steven Porges (37 páginas)
  8. Livro completo dos chakras de Llewellyn Cynthia Dale (999 páginas)
  9. Cinquenta anos de teoria do apego: The Donald Winnicott Memorial Lecture (54 páginas)
  10. Distúrbios de apego em adultos (477 páginas)
  11. A companheira do curso de psicologia Dana S. Dunn, Jane S. Halonen (308 páginas)
  12. O mito da violência redentora Walter Wink (5 páginas)
  13. Psicologia em sua vida Sarah Gison e Michael S. Gazzaniga (1.072 páginas)

Passo a passo

Caso tenha interesse em acompanhar meus passos mais de perto, confira o passo a passo no GitHub, contendo scripts e exemplos.

Conclusão

Agora que refinei meus processos e me sinto confiante para trabalhar com formatos de prompt, realizarei mais testes. Na verdade, já realizei mais testes e classificações (publicarei a seguir), mas é claro que farei mais testes novamente e continuarei aprendendo!


Ainda acredito que se você deseja obter os melhores resultados para qualquer tarefa executada com IA, você deve realizar seus próprios experimentos e ver o que funciona melhor. Não confie apenas em classificações de modelos populares, mas use-as para orientar sua própria pesquisa.

Recursos adicionais


Também aparece aqui .