Training and eval now run clean on the unsloth 2026.5.2 / transformers v5 / torch 2.10 stack. Fixes: pytorch/pytorch base image (sidesteps the nvidia/cuda apt-signature failure and the torch download), correct base-model slug unsloth/Qwen3.5-4B, TRL SFTConfig API. Adds scripts/eval_adapter.py — runs dataset rows through base+adapter with structured (transformers-v5) message content and Qwen3.5 thinking-mode stripping. First v1 adapter: loss 2.10 -> 0.32 over 3 epochs. Eval surfaced an ill-posed ioc_extraction dataset (output URL not present in input) — to be fixed in the ExampleBuilder before the next training run. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
33 lines
1.1 KiB
Docker
33 lines
1.1 KiB
Docker
# psyc training container — unsloth + Qwen3.5 QLoRA fine-tuning.
|
|
#
|
|
# Build:
|
|
# docker build -t psyc-trainer -f Dockerfile.train .
|
|
#
|
|
# Run (24 GB GPU, mounts host data/ for datasets + adapter output):
|
|
# docker run --gpus all --rm \
|
|
# -v $(pwd)/data:/data \
|
|
# psyc-trainer \
|
|
# --dataset /data/datasets/ioc_extraction-v1.jsonl \
|
|
# --dataset /data/datasets/severity_classification-v1.jsonl \
|
|
# --dataset /data/datasets/routing_decision-v1.jsonl \
|
|
# --dataset /data/datasets/tlp_assignment-v1.jsonl \
|
|
# --output /data/adapters/psyc-v1
|
|
#
|
|
# Base image already ships Python 3.11 + torch 2.6 + CUDA 12.4 + cuDNN9, so
|
|
# there is no apt step and no torch download. Qwen3.5 needs transformers v5 —
|
|
# unsloth pulls it automatically.
|
|
|
|
FROM pytorch/pytorch:2.6.0-cuda12.4-cudnn9-devel
|
|
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
PIP_NO_CACHE_DIR=1 \
|
|
HF_HOME=/data/.hf-cache
|
|
|
|
RUN pip install --upgrade pip && \
|
|
pip install unsloth unsloth_zoo trl datasets
|
|
|
|
WORKDIR /workspace
|
|
COPY scripts/train_qlora.py /workspace/train_qlora.py
|
|
|
|
ENTRYPOINT ["python", "/workspace/train_qlora.py"]
|