Fine-tuning completo do modelo LLaMA 3.2-1B (bnb-4bit) com LoRA (Low-Rank Adaptation), otimizado para Google Colab + GPU A100, incluindo:
- Preparação e tokenização de datasets customizados
- Treinamento com quantização 4-bit via BitsAndBytes
- Avaliação completa (perplexidade, inferência, comparação base)
- Geração de relatórios visuais e JSON consolidados
Tratamento e preparação dos dados Para o tratamento e preparação da base obtamos por fazer a limpeza de campos vazios e nulos, juntamente com a remoção de caracteres especiais e HTML, com isso retiramos da base as colunas que não utilizariamos para o fine tunning elas são as 'target_ind', 'target_rel' e 'uid'. Com a base limpa nos optamos por quebrar a mesma em pedaços para melhorar a performance na hora de preparar o modelo pra tokenizar
database para baixar = https://drive.google.com/file/d/12zH4mL2RX8iSvH0VCNnd3QxO4DzuHWnK ( O The AmazonTitles-1.3MM )
utilizamos o modelo unsloth/Llama-3.2-1B-bnb-4bit com os parametros:
BATCH - Otimizado para A100 sem estourar RAM per_device_train_batch_size=32,
per_device_eval_batch_size=32,
gradient_accumulation_steps=1, # Sem acumulação = mais rápido
LEARNING learning_rate=5e-4,
lr_scheduler_type="cosine",
warmup_ratio=0.03,
PRECISÃO bf16=True,
bf16_full_eval=True,
LOGGING MÍNIMO logging_steps=100,
logging_first_step=True,
SEM SALVAMENTO DURANTE TREINO save_strategy="no",
save_steps=999999,
AVALIAÇÃO MÍNIMA eval_strategy="steps",
eval_steps=500, STEPS num_train_epochs=1,
max_steps=4000,
OTIMIZAÇÕES optim="adamw_torch_fused",
gradient_checkpointing=True,
DATALOADER RÁPIDO dataloader_num_workers=2, # 2 workers = balanço velocidade/RAM
dataloader_pin_memory=True,
SEM EXTRAS report_to="none",
load_best_model_at_end=False,
O script realiza um pipeline completo de fine-tuning do modelo unsloth/Llama-3.2-1B-bnb-4bit, adaptado para descrições de produtos no formato Alpaca.
- Instalação e configuração do ambiente
- Carregamento do modelo quantizado 4-bit
- Aplicação de LoRA para otimização leve
- Tokenização e cache do dataset customizado
- Treinamento com métricas otimizadas
- Avaliação (perplexidade, velocidade e comparação base)
- Geração de relatórios automáticos (gráficos e JSON)
pip install -U bitsandbytes transformers datasets pyarrow accelerate peft unsloth trl einops sentencepiece
💻 Requisitos de hardware
GPU A100, T4 ou superior
>= 25GB VRAM recomendados
Compatível com Google Colab Pro+
🏗️ Instalação
📌 Opção 1 — Google Colab (recomendada)
1️⃣ Clone o repositório:
bash
Copiar código
!git clone https://github.com/Farski96/Finetuning-FIAP-FASE-3.git
%cd Finetuning-FIAP-FASE-3
2️⃣ Execute o script principal:
bash
Copiar código
!python fiap_fase_3_finetuning.py
📌 Opção 2 — Execução local
1️⃣ Crie um ambiente virtual:
bash
Copiar código
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.\.venv\Scripts\activate # Windows
2️⃣ Instale as dependências:
bash
Copiar código
pip install -r requirements.txt
3️⃣ Execute o script:
bash
Copiar código
python fiap_fase_3_finetuning.py
📂 Estrutura do Projeto
Finetuning-FIAP-FASE-3/
│
├── fiap_fase_3_finetuning.py # Script principal (fine-tuning + testes)
├── /chunks/ # JSONs de treino (base de dados)
├── /tokenized_datasets/ # Cache tokenizado
├── /output/final_model/ # Modelo fine-tuned salvo
├── /test_results/ # Métricas e relatórios
│ ├── test_generation.csv
│ ├── test_perplexity.json
│ ├── test_speed.json
│ ├── test_comparison.csv
│ ├── test_token_analysis.json
│ ├── consolidated_test_report.json
│ └── test_report_complete.png
└── README.md
🚀 Execução do Fine-Tuning
1️⃣ Monte o Google Drive
from google.colab import drive
drive.mount('/content/drive')
2️⃣ Configure diretórios base
BASE_DIR = Path("/content/drive/MyDrive/tc_fiap_ft1")
3️⃣ Adicione seus arquivos JSON de dataset
Coloque seus chunk_*.json dentro de:
/content/drive/MyDrive/tc_fiap_ft1/chunks/
4️⃣ Execute o script
python fiap_fase_3_finetuning.py
5️⃣ Acompanhe logs e progresso
O script exibe métricas de loss, tempo estimado e estatísticas de GPU.
📈 Avaliação e Métricas
Após o fine-tuning, o script executa automaticamente uma suíte de testes completa:
Teste Descrição
🧪 Geração de Texto Geração de respostas em formato Alpaca
📊 Perplexidade Mede coerência e fluência do modelo
⚡ Velocidade de Inferência Calcula tokens/segundo e tempo médio
🆚 Comparação com Modelo Base Compara resultados do modelo original vs fine-tuned
🔤 Distribuição de Tokens Avalia diversidade e repetição de tokens
📊 Resultados e Relatórios
Após execução, todos os resultados são salvos em /test_results/.
📁 Arquivos gerados:
Arquivo Descrição
test_generation.csv Textos gerados em teste
test_perplexity.json Métricas de perplexidade
test_speed.json Benchmark de inferência
test_comparison.csv Comparação com modelo base
test_token_analysis.json Estatísticas de tokens
test_report_complete.png Relatório visual consolidado
consolidated_test_report.json Relatório JSON final
🧩 Boas Práticas e Dicas
💾 Cache automático: datasets tokenizados são reutilizados.
⚙️ Evite checkpoints desnecessários: o treino é rápido e direto.
🧠 LoRA: ideal para fine-tuning leve, sem re-treinar o modelo completo.
📉 Perplexidade: ótima métrica de qualidade textual.
🔥 Use GPUs A100/T4: melhor desempenho com quantização 4-bit.
🧠 Exemplo de Prompt (formato Alpaca)
Below is an instruction that describes a task, paired with an input that provides further context.
Write a response that appropriately completes the request.
### Instruction:
Describe the following product in a detailed and persuasive way.
### Input:
Wireless RGB Gaming Mouse 16000 DPI
### Response:
📦 requirements.txt
# FIAP FASE 3 — FINE-TUNING LLAMA 3.2
# Núcleo Hugging Face
transformers==4.45.2
datasets==3.0.1
accelerate==1.1.1
evaluate==0.4.2
trl==0.9.6
# Quantização e treinamento leve
bitsandbytes==0.43.3
peft==0.12.0
unsloth==2024.9.0
xformers==0.0.27.post2
einops==0.8.0
sentencepiece==0.2.0
# Análise e relatórios
numpy==1.26.4
pandas==2.2.3
matplotlib==3.9.2
seaborn==0.13.2
scikit-learn==1.5.2
tqdm==4.66.4
# Sistema e compatibilidade
pyarrow==17.0.0
torch==2.4.1
torchaudio==2.4.1
torchvision==0.19.1
# Colab e IO
google-colab==1.0.0
pathlib==1.0.1
🧰 Execução Local com Ambiente Virtual
1️⃣ Criar ambiente:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# ou
.\.venv\Scripts\activate # Windows
2️⃣ Instalar dependências:
pip install -r requirements.txt
3️⃣ Executar:
python fiap_fase_3_finetuning.py
✨ Autor
👤 Farski
💼 Especialista em Tecnologia, IA e Fine-Tuning de LLMs
🎓 Projeto desenvolvido na FIAP - Pós-Graduação em Inteligência Artificial (Fase 3)
📅 2025
🧾 Licença
Distribuído sob a licença MIT.
Integrantes do Grupo
Fernando Jarski RM364678
Jorge de Souza Faleiros Filho RM363042
Lucca Arruda Sartori RM363728
Marcio Camargo da Silva RM361109
Murilo Lourenço Martins RM364680
-----------------------
## 👤 Contato
**Fernando Jarski**
📧 Email: jarskifernando@gmail.com
🔗 LinkedIn: [linkedin.com/in/fernando-jarski]((https://www.linkedin.com/in/fernando-jarski))