Esse repositório contém os artefatos produzidos no trabalho de conclusão de curso "IA Generativa Aplicada a Capacitação do Setor Automotivo".
As apostilas utilizadas se encontram no diretório data/source
e os arquivos json gerados no processo de extração das questões podem ser encontrados em data/output
.
As apostilas foram cedidas pela Universidade do Automóvel em formato DOCX. Foi utilizado o pacote python-docx para realizar a leitura do conteúdo das apostilas. O conteúdo foi agrupado por seção e seções como capa, sumário, introdução e referências bibliográficas não foram consideradas, assim como legendas de figuras e tabelas. O conteúdo obtido foi exportado no formato .json no arquivo data/source/documents.json
e o código utilizado para processamento das apostilas encontra-se em src/documents
.
Para extrair as questões das apostilas foi utilizado o modelo InternLM2 em sua versão de chat com 7 bilhões de parâmetros. É um modelo de código aberto, que permite uso acadêmico e comercial, e que apresenta uma das melhores performances nos benchmarks da lingua portuguesa no Open Portuguese LLM, considerando apenas os modelos com a mesma quantidade de parâmetros. O modelo foi implantado na cloud do Modal como uma aplicação serverless e foi utilizado o vLLM para otimizar o desempenho da execução de inferência do modelo. O código utilizado para implantação do modelo encontra-se em src\models\internlm.py
O processo de extração das questões consiste de múltiplas etapas, onde em cada etapa é executado um prompt no modelo, sendo estes de dois tipos: extração e validação. Prompts de extração buscam obter algum dado específico dos documentos, enquanto os de validação usam o documento como referência para validar se a extração ocorreu com sucesso, seguindo alguma regra de validação definida no prompt. Essa estratégia de validação é inspirada no framework DeepEval, porém o mesmo não foi utilizado por não dar suporte ao vLLM.
O processo se inicia com a extração de tópicos a partir do conteúdo dos documentos, com o objetivo de direcionar a extração de questões para temas específicos. Os tópicos extraidos são validados e os que tem fraca relação com o documento são descartados. Para cada tópico obtido, são extraídas questões e respostas referentes ao tópico e ao documento o qual ele pertence. Por fim, as questões que são pouco relacionadas ao documento são descartadas, assim como aquelas que possuem respostas erradas.
Os prompts utilizados estão disponíveis em src\prompts
.
Pré-requisitos
- Instalar o pacote python_docx;
- Criar uma conta na plataforma Modal e seguir o passo a passo disponível em: https://modal.com/docs/guide#getting-started;
- O uso do Modal não é obrigatório e é possível utilizar outro modelo implementando a classe
IModel
disponível emsrc\models\__init__.py
e alterando o modelo emsrc\index.py
.
- O uso do Modal não é obrigatório e é possível utilizar outro modelo implementando a classe
Por fim execute:
python src/index.py
O arquivo vehicle_repair_and_maintenance_qa.json
é gerado no final do processo e utilizado como dataset para fine-tuning do modelo.
O fine-tuning foi realizado no modelo PTT5, modelo pré-treinado do Google T5 com o vocabulário da língua portuguesa. O treinamento e avaliação do modelo estão acessíveis neste notebook e o modelo encontra-se disponível no Hugging Face.