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.