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.1.tar.gz (17.9 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.1-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dqntrain-0.1.1.tar.gz
  • Upload date:
  • Size: 17.9 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.1.tar.gz
Algorithm Hash digest
SHA256 b7814ebff6cd694a5729e6308e75622992d43cb9965af79516bc8e05b0920ee1
MD5 06a1d1447bc2030dbd6d322e0f8a8e88
BLAKE2b-256 9fdff5d0e398e9814d0e9487ef4e6a597ba01612eacb5751205d9f8ffab74dff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dqntrain-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e0c1aa88d7b4ba485cbd0290a4193697f5e911eb083463fc77017c40a4dda4fb
MD5 8e1376bfe890572b492385b84d5741d5
BLAKE2b-256 54f65d56dc840fae24b5bf44e2982c01b808545e9b8f43fbf702c933f3d62362

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.3

2 files

0.1.2

2 files

This release

0.1.1 This release

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