Neste guia prático, vamos explorar o processo de ajuste fino de um modelo de linguagem grande (LLM) e executá-lo localmente em sua máquina usando o Ollama. Aprenderemos como usar dados específicos para treinar um LLM menor e obter um desempenho superior em tarefas específicas, comparado a modelos maiores. Abordaremos também como configurar o ambiente necessário, preparar os dados e utilizar as ferramentas certas para um processo de treinamento eficiente.

A escolha do conjunto de dados é crucial para o sucesso do ajuste fino de um LLM. Um conjunto de dados relevante para a tarefa em questão permite treinar um modelo menor que pode superar o desempenho de modelos maiores em tarefas específicas.
Neste exemplo, vamos criar um LLM rápido e pequeno que gera código SQL a partir de dados de tabelas. Para isso, utilizaremos o conjunto de dados "Synthetic Text to SQL", que contém mais de 105.000 registros, divididos em colunas de prompt, SQL, complexidade do conteúdo, entre outros.
É importante ressaltar que este projeto não exige hardware complexo e pode ser executado em máquinas com menos recursos. Utilizaremos o Google Colab para treinar o modelo na nuvem caso você não possua uma GPU.
Para este projeto, utilizaremos duas ferramentas poderosas: Unsloth e Llama.
Antes de começar, certifique-se de ter o Anaconda e as bibliotecas CUDA instaladas em sua máquina. Recomenda-se usar CUDA 12.1 e Python 3.10.
Em seguida, instale as dependências do Unsloth, que incluem:
Crie um novo ambiente para o projeto e instale o Jupyter Notebook. Após a instalação, execute o Jupyter Notebook para começar a codificar.
No Jupyter Notebook, importe o modelo de linguagem rápida usando o Unsloth, especificando o modelo Llama 3/8 bits, um comprimento máximo de sequência de 2048 tokens e carregando-o em 4 bits para reduzir o uso de memória.
Em seguida, carregue o modelo PEFT (Parameter-Efficient Fine-Tuning), que utiliza adaptadores LoRA para atualizar apenas 1 a 10% dos parâmetros do modelo, economizando tempo e recursos.
A próxima etapa é formatar os dados para o modelo Llama 3, que utiliza prompts no estilo Alpaca. Adapte o código para incluir apenas as informações relevantes do conjunto de dados, como SQL, prompts e explicações.
Utilize o treinador de ajuste fino supervisionado do Hugging Face para treinar o modelo, definindo parâmetros como etapas máximas, semente e etapas de aquecimento.
Após o treinamento, converta o modelo para o tipo de arquivo correto para execução local com Ollama usando um comando do Unsloth.
No terminal, navegue até o caminho onde o arquivo do modelo está salvo e crie um arquivo chamado "modelfile". Abra o arquivo em um editor de código e adicione um prompt, como "Você é um gerador de SQL que recebe a consulta de um usuário e fornece SQL útil para usar."
Com o Ollama em execução, execute o comando para ler os itens no arquivo "modelfile" e iniciar o modelo usando o llama.cpp, permitindo a execução local do seu LLM ajustado.
Parabéns! Agora você tem um LLM ajustado fino em execução localmente, pronto para ser integrado em suas aplicações.