Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minilegis

O minilegis é um projeto exploratório com o objetivo de testar a viabilidade de treinar um LLM no contexto da legislação brasileira. O projeto é "mini" pois busca chegar num método funcional e reprodutível em uma escala pequena, assim fundamentando projetos futuros de maior escala.

Estrutura do projeto

  • O minilegis é produto de um processo de tentativa e erro. A pasta llama_finetune conta com a minha primeira abordagem, que é um fine-tune simples com perguntas e respostas. Acabei deixando essa abordagem de lado, mas quis incluir no histórico do projeto, portanto, instruções de como rodar ela estarão dentro do diretório dela, e não nesse principal.
  • A segunda e última abordagem que tomei está no diretório rag. As instruções de como rodar ela estarão nesse arquivo principal, pois é a que é comentada no artigo de entrega
  • Dentro do diretório artigo tem o... artigo, que eu escrevi. No zip tem ele em .tex, mas deixei o pdf compilado também

Como rodar (aka. "Como replicar os resultados alcançados no artigo de entrega")

  • Instale os pacotes listados no requirements.txt.
    • Eu instalei todos num ambiente conda -- maioria acaba sendo instalado via pip install unloth, se não conseguir usar o requirements.
  • Antes de começar a mexer em qualquer coisa, rode python leis_scrap.py. O script irá baixar as leis direto do site do Planalto.gov, se os links não tiverem quebrado. Esses dados são necessários pro treinamento
  • Dentro do diretório rag, rode nessa ordem:
    • python prepare_retrieval.py - Script que prepara os índices para retrieval RAG
    • python build_rag_dataset.py - Gera o dataset que será usado no treinamento; para mais detalhes de como os dados se parecem, tem um exemplo no arquivo example.json - Vão ser uns 7000 exemplos desses (processo demorado, demorou 30h para mim numa rtx 4090)
    • python train_lora_rag.py - Depois de gerado o dataset, o treinamento pode começar executando esse script. Com 10 épocas, durou +- 10h para mim

Inferência

  • Tem 3 scripts diferentes pra fazer inferência no diretório rag: ,
    • infer_rag.py faz a inferência do modo normal, pede entrada e tudo mais. Nada de especial, é o padrão
    • infer_rag_cpu.py igual o acima mas faz a inferência na CPU. Não recomendo rodar, demora um monte e só deixa o computador lento. Fiz isso porque as GPUs que tinha acesso estavam ocupadas kk
    • infer_rag_force_ctx.py igual o padrão, mas você pode forçar um contexto específico dentro do código ao invés dele depender do retrieval. Não pensei em fazer o contexto ser input na hora, então vai ter que editar o arquivo se quiser mexer o contexto

Avaliação

  • Essa parte não foi incluída no trabalho, deixei um job rodando com ela mas no fim perdi os resultados. Basta rodar o eval_rag_pipeline.py, leva umas 24h.

About

O minilegis é um projeto exploratório com o objetivo de testar a viabilidade de treinar um LLM para inferência acerca do tema de legislação brasileira. O projeto é "mini" pois busca chegar num método funcional para tal fim em uma escala pequena e fundamentar projetos de maior escala.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages