Training supported
#12
by
russwest404
- opened
Qwen3 Reranker models can be fine-tuned by SWIFT: https://github.com/modelscope/ms-swift
pip install ms-swift -U
# Pointwise training (binary classification)
nproc_per_node=4
NPROC_PER_NODE=$nproc_per_node \
swift sft \
--model Qwen/Qwen3-Reranker-4B \
--task_type generative_reranker \
--loss_type generative_reranker \
--train_type full \
--dataset MTEB/scidocs-reranking \
--split_dataset_ratio 0.05 \
--eval_strategy steps \
--output_dir output \
--eval_steps 100 \
--num_train_epochs 1 \
--save_steps 200 \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps 8 \
--learning_rate 6e-6 \
--label_names labels \
--dataloader_drop_last true
# Listwise training (learning relative ranking)
nproc_per_node=4
NPROC_PER_NODE=$nproc_per_node \
swift sft \
--model Qwen/Qwen3-Reranker-4B \
--task_type generative_reranker \
--loss_type listwise_generative_reranker \
--train_type full \
--dataset MTEB/scidocs-reranking \
--split_dataset_ratio 0.05 \
--eval_strategy steps \
--output_dir output \
--eval_steps 100 \
--num_train_epochs 1 \
--save_steps 200 \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps 8 \
--learning_rate 6e-6 \
--label_names labels \
--dataloader_drop_last true
SWIFT supports both pointwise and listwise training approaches. Pointwise treats each query-document pair as binary classification, while listwise learns relative ranking relationships between documents.
The dataset format is:
{"query": "your query", "positive": ["relevant_doc1", "relevant_doc2", ...], "negative": ["irrelevant_doc1", "irrelevant_doc2", ...]}
Documentation here:
https://swift.readthedocs.io/en/latest/BestPractices/Reranker.html