Gemma 4 E2B
multi-seed QLoRA: пайплайн для медицинского SFT
Репозиторий-эксперимент от adityag-india: обвязка для multi-seed QLoRA на Gemma 4 E2B в 4-bit NF4 на медицинских чат-данных в формате user -> assistant JSONL. Это не готовый чекпоинт, а пайплайн со стадиями preflight → model gate → smoke → все сиды → агрегация. Собран и проверен на RunPod с RTX A6000 48 GB, PyTorch 2.8 / cu128.
🔍 Ключевые особенности
- 🛡 Гейты падают до траты GPU-времени: проверка torch/CUDA, реальный kernel-проб (matmul, SDPA, bitsandbytes NF4), схема и sha256 файлов данных, chat-template.
- 🔄 Повторный запуск резюмируется: завершённые сиды пропускаются, прерванный сид продолжается с последней законченной эпохи.
- 📊 По умолчанию 5 сидов по 10 эпох; агрегация считает mean, std, min, max и 95% CI и отказывается смешивать конфиги.
- 🔍 Оценка в отдельном процессе: test loss / perplexity / token accuracy, ROUGE-1/2/L на фиксированных 200 примерах и строка сравнения с базовой моделью.
- 🧨 Кастомный train loop вместо
Trainer: loss токен-точный по всему окну накопления, отдельный guard от FP32 upcast. - 🖥 В preflight порог ≥20 GiB GPU, только LoRA-параметры обучаемы, base NLL sanity <6 nats/token.
💻 Пример
bash setup_runpod.sh
export HF_TOKEN=hf_xxx
cp /path/to/*train*.jsonl data/
tmux new -s exp
python run_experiment.py --stage all 2>&1 | tee -a outputs/run.log
Подробнее
Гиперпараметры: LoRA r=32, alpha=64, dropout 0.05 на q,k,v,o,gate,up,down; lr 1e-4, cosine, max_length 1536, эффективный batch 8.Обучение шло на 48 GB A6000, но те же настройки воспроизводятся на 22 GiB L4 при micro-batch 1×8.
Сид управляет инициализацией LoRA, dropout и порядком данных; бит-репродуцируемости нет из-за bf16/4-bit.
Готовых метрик и бенчмарков в карточке нет — публикуется пайплайн, а не результаты.








Комментарии