← Back to Tutorials

ML to DL to Fine-Tuning

Training & Datasets

Start with a capstone project using Amazon product data from HuggingFace datasets.

from datasets import load_dataset

dataset = load_dataset("amazon_polarity", split="train[:1000]")
print(dataset[0])

Baseline Models with Traditional ML

from sklearn.feature_extraction.text import TfidfVectorizer
from xgboost import XGBClassifier

vectorizer = TfidfVectorizer(max_features=5000)
X_train = vectorizer.fit_transform(train_texts)
model = XGBClassifier()
model.fit(X_train, train_labels)

Neural Networks with PyTorch

import torch
import torch.nn as nn

class SentimentClassifier(nn.Module):
    def __init__(self, vocab_size, embed_dim):
        super().__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.fc = nn.Linear(embed_dim, 2)

    def forward(self, x):
        x = self.embedding(x).mean(dim=1)
        return self.fc(x)

Fine-Tuning Frontier Models

Supervised Fine-Tuning (SFT) adapts a pre-trained model to your specific task. Use LoRA for efficient fine-tuning.

from transformers import AutoModelForCausalLM, TrainingArguments
from trl import SFTTrainer

model = AutoModelForCausalLM.from_pretrained("microsoft/Phi-3-mini-4k-instruct")
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    args=TrainingArguments(output_dir="./phi3-finetuned", per_device_train_batch_size=4)
)
trainer.train()

Monitoring & Handling Failures

✏️ Exercise: Fine-tune a small language model (Phi-3 mini or Llama 3.2 1B) on a custom dataset of your choice. Start with an XGBoost baseline, then build a PyTorch classifier, then SFT a pre-trained model. Compare all three approaches on the same test set.