Skip to main content

dqntrain

Headless, config-driven fine-tuning for LLMs on cloud GPUs.

A programmatic fine-tuning toolkit inspired by Unsloth Studio's workflow, built for headless environments like Kaggle, Google Colab, and remote servers. No GUI required — just YAML/JSON recipes, clean Python APIs, and automatic GPU-aware defaults.

Quick Start (Kaggle / Colab Notebook)

1. Install

%%capture
!pip install dqntrain

2. Define a Config

from dqntrain import auto_config_for_model

config = auto_config_for_model("unsloth/Qwen2.5-7B-Instruct-bnb-4bit")
config.training.num_train_epochs = 1
config.dataset.path = "yahma/alpaca-cleaned"
config.export.formats = ["lora", "gguf"]

3. Train

from dqntrain import (
    ModelLoader, DatasetBuilder, DQNTrainer,
    TrainingMonitor, ModelExporter
)

loader = ModelLoader(config)
model, tokenizer = loader.load()
model = loader.apply_lora()

dataset = DatasetBuilder(config).build()

monitor = TrainingMonitor()
trainer = DQNTrainer(config, monitor=monitor)
trainer.create_trainer(model, tokenizer, dataset)
trainer.train()
monitor.plot()

ModelExporter(config).export(model, tokenizer)

That's it. The entire pipeline in ~15 lines.

Features

Capability Description
Model presets auto_config_for_model() detects your GPU and sets 4-bit, batch size, seq length
LoRA / QLoRA LoRAConfig dataclass or YAML recipes
Dataset formats JSON, JSONL, CSV, HuggingFace datasets, conversations — auto-detected
Live monitoring Loss/LR/GPU tracking with matplotlib plots + JSONL logs
Multi-format export LoRA, merged 16-bit, GGUF, Ollama Modelfile — in one call
Headless-first No browser, no desktop UI — built for notebooks and servers

Project Structure

dqntrain/
├── dqntrain/
│   ├── config.py          # YAML/JSON recipes + auto GPU presets
│   ├── models.py          # Model loader + LoRA applier
│   ├── data.py            # Dataset builder (JSON/CSV/HF/conversations)
│   ├── trainer.py         # SFTTrainer wrapper with cloud paths
│   ├── observability.py   # Live metrics, plots, JSONL logging
│   ├── export.py          # GGUF, merged, Ollama, Hub push
│   └── utils.py           # Environment detection + GPU info
├── configs/
│   ├── quick_lora.yaml    # T4-optimized 4-bit recipe
│   └── full_finetune.yaml # P100+ 16-bit recipe
└── notebooks/
    └── kaggle_template.ipynb  # Ready-to-run Kaggle notebook

Config Recipes

Save a YAML file and pass it to load_config():

model:
  name: "unsloth/Qwen2.5-7B-Instruct-bnb-4bit"
  max_seq_length: 2048
  load_in_4bit: true

lora:
  r: 16
  lora_alpha: 32
  target_modules: [q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj]

training:
  num_train_epochs: 1
  per_device_train_batch_size: 1
  gradient_accumulation_steps: 4
  learning_rate: 2.0e-4
  output_dir: "./outputs"

dataset:
  path: "yahma/alpaca-cleaned"
  instruction_column: "instruction"
  response_column: "output"

export:
  formats: [lora, gguf]
  quantization: "q4_k_m"

Supported Dataset Formats

DatasetBuilder auto-detects:

  • HuggingFace datasets (dataset.path = "yahma/alpaca-cleaned")
  • JSON / JSONL files with instruction/response or conversations arrays
  • CSV files with text columns
  • In-memory lists of dicts

GPU-Aware Defaults

auto_config_for_model() inspects your GPU and adjusts:

  • load_in_4bit — forced on for T4 (15 GB), optional on P100/V100
  • per_device_train_batch_size — smaller for big models
  • max_seq_length — capped to fit VRAM
  • gradient_accumulation_steps — scaled up to maintain effective batch size

Export Formats

ModelExporter can produce any combination of:

  • lora — LoRA adapter (smallest, fastest to save)
  • merged / safetensors — Full 16-bit merged model
  • gguf — Quantized GGUF for llama.cpp / Ollama
  • ollamaModelfile ready for ollama create

CLI Usage

# Install deps
pip install dqntrain

# Run from a config file
dqntrain --config configs/quick_lora.yaml

# Override model and dataset
dqntrain --model unsloth/Phi-4 --dataset my_data.jsonl --epochs 2

Kaggle-Specific Tips

  1. Enable Internet in notebook settings for pip install and HF downloads.
  2. Persist outputs — everything in /kaggle/working survives the session.
  3. Save Versions — click "Save Version" → "Run" to execute headlessly. Logs still write to /kaggle/working.
  4. Dataset inputs — upload custom JSON/CSV via Kaggle Datasets, then reference them with config.dataset.path = "/kaggle/input/your-dataset/file.json".

License

MIT. This package depends on Unsloth (Apache 2.0 core), TRL, and Transformers.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dqntrain-0.1.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dqntrain-0.1.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file dqntrain-0.1.0.tar.gz.

File metadata

  • Download URL: dqntrain-0.1.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.12

File hashes

Hashes for dqntrain-0.1.0.tar.gz
Algorithm Hash digest
SHA256 53cf1db851feeaad3ac0aa658c709dd35cdc42bd9ebe0bbf09efdee190be8370
MD5 5141f67752c9c4500fc7ddbdffd08335
BLAKE2b-256 ebeaf3acedbd2f4d15076648b3cf00be23c082c51d193397b50e82a8e7a0a57a

See more details on using hashes here.

File details

Details for the file dqntrain-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dqntrain-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.12

File hashes

Hashes for dqntrain-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b85f0e85a9c2bd1346d29f44d07c80356b0154b37cd8d84eaaf0d4ceb3b2db8
MD5 426a4e79b5d647a63446ea990de24ff8
BLAKE2b-256 dc5cedf37c63a79f14dd97d0530d101105f4a80284d53ec50bd22d8338e635dd

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page