Download tests/test_train_smoke.py from 42e/mathcompose: direct link, hf CLI and curl.
- Browser
- Download file 1.59 kB
-
https://huggingface.co/42e/mathcompose/resolve/main/tests/test_train_smoke.py
- Command line
-
hf download hf://42e/mathcompose/tests/test_train_smoke.py
-
curl -L -o test_train_smoke.py https://huggingface.co/42e/mathcompose/resolve/main/tests/test_train_smoke.py
1.59 kB
| """Smoke #6: the shared train.py wires up the REAL trl 1.7.1 SFT API. | |
| Trains a tiny random Qwen2 for 1 step on a handful of dummy-teacher rows, no | |
| 4-bit, on CPU. Proves SFTConfig(max_length, completion_only_loss) + | |
| SFTTrainer(processing_class, peft_config) + conversational prompt/completion | |
| data all fit together. Requires network (downloads the tiny test model). | |
| """ | |
| import argparse | |
| from pathlib import Path | |
| import pytest | |
| from mathcompose.common.io import write_jsonl | |
| from mathcompose.datagen.prm800k_loader import iter_prm800k | |
| from mathcompose.datagen.gen_verifier_data import generate_verifier_dataset | |
| from mathcompose.teachers import get_teacher | |
| TINY = "trl-internal-testing/tiny-Qwen2ForCausalLM-2.5" | |
| FIX = Path(__file__).parent / "fixtures" / "prm800k_sample.jsonl" | |
| def test_train_one_step(tmp_path): | |
| pytest.importorskip("torch") | |
| from mathcompose.train.train import build_and_train | |
| rows = list(generate_verifier_dataset(iter_prm800k(FIX), get_teacher("dummy"), banned=set())) | |
| train_file = tmp_path / "train.jsonl" | |
| write_jsonl(rows, train_file) | |
| out_dir = tmp_path / "vsmoke" | |
| args = argparse.Namespace( | |
| task="v", config="configs/verifier_v.yaml", base_id=TINY, | |
| train_file=str(train_file), val_file=None, output_dir=str(out_dir), | |
| no_4bit=True, max_steps=1, wandb=False, push=False, hub_model_id=None, | |
| ) | |
| build_and_train(args) | |
| # a LoRA adapter should have been saved | |
| assert (out_dir / "adapter_config.json").exists() or (out_dir / "adapter_model.safetensors").exists() | |