Romeu Cornelius Junior

Software Developer

Utilizando Meta Llama 3.1 para Responder Questões Médicas

Nos últimos anos, as Modelos de Linguagem de Grande Escala (LLMs) têm se tornado ferramentas poderosas em diversas áreas, incluindo a saúde. Neste artigo, vamos explorar um passo a passo de como configurar, treinar e utilizar uma LLM, especificamente o Llama 3.1, para criar um modelo capaz de responder a questões médicas. Para isso, usaremos três plataformas essenciais: Kaggle, Hugging Face e W&B (Weights & Biases).

Preparação do Ambiente

Antes de tudo preencha o formulário de download do Meta e com o mesmo endereço de e-mail, crie uma conta no Kaggle, depois vá para a página do modelo Llama 3 no Kaggle e aceite o acordo. Agora crie uma conta no huggingface e no  W&B (Weights & Biases) utilizando a mesma conta de e-mail. 

Kaggle é uma plataforma que oferece recursos computacionais gratuitos, ideais para treinar modelos de IA. Para começar:

Crie uma nova competição ou use um notebook público: Isso fornecerá acesso a GPUs potentes e um ambiente controlado. Vá para as opções de sessão e selecione a GPU P100 como acelerador.

Gere o token Hugging Face e Weights & Biases, e crie os Kaggle Secrets. Você pode criar e ativar os Kaggle Secrets indo para Add-ons > Secrets > Add a new secret.

Inicie a sessão do Kaggle instalando todos os pacotes Python necessários.

Importe os pacotes Python necessárias para carregar o conjunto de dados, o modelo, o tokenizador e fazer ajustes finos.

O Hugging Face é uma plataforma que oferece uma ampla gama de modelos pré-treinados e ferramentas para NLP (Processamento de Linguagem Natural). Para este tutorial, ajustaremos o modelo Llama 3 8B-Chat usando o conjunto de dados públicos do hugginface ruslanmv/ai-medical-chatbot . O conjunto de dados contém 250 mil diálogos entre um paciente e um médico. 

Weights & Biases (W&B) é uma ferramenta poderosa para rastrear experimentos e otimizar o processo de treinamento. Monitoraremos o processo de treinamento usando Weights & Biases (W&B), em seguida, salvaremos o modelo ajustado no Hugging Face. Para isso, precisamos:

Fazer login no Hugging Face Hub e no W&B usando a chave de API.

Definir o modelo base, o conjunto de dados e a nova variável do modelo. Carregaremos o modelo base do Kaggle e o conjunto de dados do HugginFace Hub e, em seguida, salvaremos o novo modelo.

Definir o tipo de dado e atenção da implementação.

Carregando o modelo e o tokenizador

Nesta parte, carregaremos o modelo do Kaggle. No entanto, devido a restrições de memória, não conseguimos carregar o modelo completo. Portanto, estamos carregando o modelo usando precisão de 4 bits.  Nosso objetivo neste projeto é reduzir o uso de memória e acelerar o processo de ajuste fino.

Carregue o tokenizer e então configure um modelo e tokenizer para tarefas de IA conversacional. Por padrão, ele usa o template chatml do OpenAI, que converterá o texto de entrada em um formato semelhante ao de chat.

O ajuste fino do modelo completo levará muito tempo, então, para melhorar o tempo de treinamento, anexaremos a camada adaptadora com alguns parâmetros, tornando todo o processo mais rápido e com maior eficiência de memória.

Carregando o conjunto de dados

Para carregar e pré-processar nosso conjunto de dados:

Carregue o conjunto de dados ruslanmv/ai-medical-chatbot , embaralhe-o e selecione apenas 1000 linhas. Isso reduzirá significativamente o tempo de treinamento.

Formate o modelo de chat para torná-lo conversacional. Combine as perguntas do paciente e as respostas do médico em uma coluna de “texto”.

Exiba uma amostra da coluna de texto (a coluna “texto” tem um formato semelhante ao de um bate-papo com tokens especiais).

Divida o conjunto de dados em um conjunto de treinamento e validação.

Treinando o modelo

Estamos definindo os hiperparâmetros do modelo para que possamos executá-lo no Kaggle. Você pode aprender sobre cada hiperparâmetro lendo o tutorial Fine-Tuning Llama 3 .

Estamos ajustando o nosso modelo para um ciclo de treinamento a e registrando as métricas usando Weights & Biases.

Agora, configuraremos um treinador de ajuste fino supervisionado (SFT) e forneceremos um conjunto de dados de treinamento e avaliação, configuração LoRA, argumento de treinamento, tokenizador e modelo. Estamos mantendo o max_seq_length em 512 para evitar exceder a memória da GPU durante o treinamento.

Começaremos o processo de ajuste fino executando o código a seguir. 

Considere treinar o modelo pelo menos umas três vezes sobre o conjunto de dados completo para obter melhores resultados.

Avaliando o modelo

Ao final da execução do nosso modelo, quando finalizarmos a sessão Weights & Biases, será gerado o histórico de execução e o resumo.

Você poderá acompanhar tudo que aconteceu com o nosso modelo.

As métricas de desempenho do modelo também são armazenadas sob o nome específico do projeto na sua conta Weights & Biases. 

Vamos avaliar o modelo em uma consulta de paciente de amostra para verificar se ele está devidamente ajustado.

Para gerar uma resposta, precisamos converter mensagens em formato de bate-papo, passá-las pelo tokenizador, inserir o resultado no modelo e então decodificar o token gerado para exibir o texto.

Salvando o modelo

Agora salvaremos o Modelo ajustado e o enviaremos para o Hugging Face Hub. A API do Hub criará automaticamente o repositório e armazenará o arquivo do adaptador.

Como podemos ver, nosso arquivo adaptador de salvamento é significativamente menor que o modelo base.

Por fim, salvaremos o notebook com o arquivo do adaptador para mesclá-lo com o modelo base no novo notebook.

Para salvar o Kaggle Notebook, clique no botão Salvar versão no canto superior direito, selecione o tipo de versão como Salvamento rápido, abra a configuração avançada, selecione Sempre salvar a saída ao criar um salvamento rápido e pressione o botão Salvar.

 

Assista aqui o passo a passo

Conclusão

Configurar, treinar e utilizar uma LLM (Llama 3.1) para responder a questões médicas é um processo complexo, mas recompensador. Utilizando as plataformas Kaggle, Hugging Face e Weights & Biases integrados, conseguimos criar um modelo poderoso e eficiente.

Após testar e comparar nosso modelo recém-criado com os mais famosos do mercado, como ChatGPT, Copilot e Perplexity, ficamos muito satisfeitos com os resultados. Nosso modelo gerou respostas consistentes, mesmo sendo mais limitado e reduzido, demonstrando o poder dessa incrível ferramenta que é o Meta Llama 3.1.

Esperamos que este guia tenha sido útil e inspire você a explorar ainda mais o potencial das LLMs na área médica.