Ambiakshi SLM Forge Studio

Unquantized 16-bit LoRA Fine-Tuning Foundry for Google Gemma 4 on 16GB Kaggle P100 GPUs. Zero-OOM mathematical profiler.

Hyperparameter & VRAM Matrix✅ FITS ON 16GB P100
Context Window (Tokens)8,192 tk
512 (FinBERT)4,0968,192 (Long-Context)
LoRA Rank (r)r = 16 (Alpha = 32)
Per-Device Batch Size2
Gradient CheckpointingReduces activation memory by ~75%
Model Weights (FP16):8.00 GB
LoRA Weights + Optimizer:0.75 GB
Activations Memory:4.59 GB
CUDA Runtime Buffer:0.85 GB
Estimated Peak VRAM:14.19 GB / 16.00 GB
Generated PyTorch LoRA ScriptGoogle Gemma 4 · Unquantized FP16
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model
from trl import SFTTrainer

# 1. Load Google Gemma 4 in Unquantized FP16
model_id = "google/gemma-4"
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto"
)
model.gradient_checkpointing_enable()

# 2. Configure Low-Rank Adaptation (LoRA)
peft_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM"
)
model = get_peft_model(model, peft_config)

# 3. Training Arguments for 8,192-Token Sequences
training_args = TrainingArguments(
    output_dir="./gemma4-slm-checkpoint",
    per_device_train_batch_size=2,
    gradient_accumulation_steps=4,
    learning_rate=2e-4,
    lr_scheduler_type="cosine",
    warmup_ratio=0.03,
    max_steps=500,
    fp16=True,
    logging_steps=10,
    save_strategy="steps",
    save_steps=100
)

# 4. Initialize SFTTrainer with 8k Context Window
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    peft_config=peft_config,
    max_seq_length=8192,
    args=training_args
)
trainer.train()
Target Hardware: Kaggle P100 (16GB) · Zero-OOM