| #!/usr/bin/env python3 | |
| """ | |
| Minimal integration test for training endpoints. | |
| """ | |
| import time | |
| import json | |
| import requests | |
| BASE = "http://localhost:8001" | |
| print("1) Start a training job") | |
| resp = requests.post(f"{BASE}/train/start", json={ | |
| "dataset": "./sample_data/train.jsonl", | |
| "model_id": "unsloth/gemma-3n-E4B-it", | |
| "prompt_field": "prompt", | |
| "response_field": "response", | |
| "epochs": 1, | |
| "batch_size": 1, | |
| "gradient_accumulation": 8, | |
| "use_bf16": True, | |
| "dry_run": True | |
| }) | |
| print(resp.status_code, resp.text) | |
| resp.raise_for_status() | |
| job = resp.json() | |
| job_id = job["job_id"] | |
| print("job_id=", job_id) | |
| print("2) Poll status (10s)") | |
| for _ in range(10): | |
| s = requests.get(f"{BASE}/train/status/{job_id}") | |
| print(s.status_code, json.dumps(s.json(), indent=2)) | |
| time.sleep(1) | |
| print("3) Done") | |