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.2.tar.gz (18.8 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.2-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dqntrain-0.1.2.tar.gz
  • Upload date:
  • Size: 18.8 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.2.tar.gz
Algorithm Hash digest
SHA256 20c584291aff944eaa13a02f4d66bbe42bcdefe60478c5d24e23bce771ba1ad9
MD5 cd6195918158304758ca40c2730b7100
BLAKE2b-256 2f69eedfffa7b01a78b9ef98fde8f6d408f28f09ab9185ae52f3fbc14f27d19a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dqntrain-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 20.3 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 09353a9fc25e985b6e915693f5e0979b49f369b490f001189f848e02cef1be01
MD5 afdc9fed5e310f6b3dcaffa6ac36c210
BLAKE2b-256 847e5d0520ab010457938e316bb5aafffc82d2083d2a00cedce795f8f14987f3

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.3

2 files

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

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