Training
The TRL library was used with SFT/full-rank options:
python trl/scripts/sft.py --model_name_or_path Qwen/Qwen3-1.7B --dataset_name openai/gsm8k --dataset_config main --learning_rate 2e-5 \--num_train_epochs 1 --per_device_train_batch_size 2 --gradient_accumulation_steps 8 --gradient_checkpointing --eos_token '<|im_end|>' --eval_strategy steps \--eval_steps 100 --completion_only_loss True --report_to wandb --output_dir /path/to/the/finetuned/model
This is by far not the most compute and performance efficient fine-tuning, but it could be a good baseline.
The dataset was preprocessed to the conversational format:
# trl/scripts/sft.py dataset = load_dataset(...) def preprocess_function(example): return { "prompt": [{"role": "user", "content": example["question"]}], "completion": [ {"role": "assistant", "content": example['answer']} ], } dataset = dataset.map(preprocess_function)
Evaluation
Evaluation was done with lm_eval on the test split of gsm8k:
python -m lm_eval --model vllm --model_args pretrained=${model},tensor_parallel_size=1,dtype=auto,gpu_memory_utilization=0.9,data_parallel_size=1 \ --tasks gsm8k --batch_size 1 --apply_chat_template=True --confirm_run_unsafe_code --trust_remote_code
Results
Table with columns: Model, gsm8k| Model | gsm8k |
|---|
| Qwen3-1.7B | 20.6 |
| Qwen3-1.7B-Math | 62.1 |
License
Please refer to the license of the original model Qwen/Qwen3-1.7B and dataset gsm8k.