Skip to content

Farski96/Finetuning-FIAP-FASE-3

Repository files navigation

🧠 FIAP FASE 3 — Fine-Tuning LLaMA 3.2 com LoRA (Unsloth)

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,

disable_tqdm=False,

🧩 Descrição Geral

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.

🔹 Etapas principais:

  1. Instalação e configuração do ambiente
  2. Carregamento do modelo quantizado 4-bit
  3. Aplicação de LoRA para otimização leve
  4. Tokenização e cache do dataset customizado
  5. Treinamento com métricas otimizadas
  6. Avaliação (perplexidade, velocidade e comparação base)
  7. Geração de relatórios automáticos (gráficos e JSON)

⚙️ Requisitos

🧩 Bibliotecas principais

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))

About

Projeto de Finetuning, Tech Challenge Fase 3 FIAP

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published