Jab aam model seedhe vyavasayik zarooraton ko poora nahi kar paata, toh apne vyavasayik data se model ka fine-tuning kar sakte hain, jisse model vishesh kaam aur output tarika aur acche se seekh sakta hai.
E-commerce entity recognition task ka example lete hain — hume model se text mein se product name, brand name, aur model nikalna hota hai, unka sahi category aur position dena hota hai. Model in products ke baare mein baat toh kar sakta hai, lekin jab use karte hain toh zaroori hai ki extracted information poori ho, fields uniform hon, aur output format stable rahe.
Jab task aur output ki demands spasht ho aur taiyaar udaharan bhi ho, toh in data se fine-tuning karke model ko sikha sakte hain ki hum kya chahte hain. Ki sabhi parameters update karne hain ya nahi, aur GPU kaafi hai ya nahi — ye task aur resources ke anusar decide karna hota hai.
Ab ms-swift se ek LoRA fine-tuning shuru karte hain aur data preparation, training, weight merging aur inference ek ek karke chalayenge.
Aam bade model pehle se hi bhasha samajh, knowledge-based prashno ke jawaab, text generation jaise kaafi kaabil hain. Lekin vastavik vyavasay mein, inka performance seedhe aam zarooraton ko poora nahi kar paata.
Udaharan ke liye, agar hum chahte hain ki model kisi vishesh jaankari nikaalne ke kaam ko sahi se kare, nirdhit format mein output de, ya kisi khaas sawaal ka ek unified tarike se jawaab de — toh in zarooraton ke liye maujooda model ko aur train karna padta hai. Is prakriya ko hi Fine-tuning (baarik samayojan) kehte hain.
Fine-tuning ka matlab naya model train karna nahi hai, balki maujooda model ki capability ko aur acche se vishesh paristhitiyon ke liye taiyaar karna hai. Shuru se bade model train karne ki tulna mein, fine-tuning ke liye kam data aur compute resources ki zaroorat hoti hai.
Abhi, bade model fine-tuning mein sabse aam tarika SFT (Supervised Fine-Tuning, dekhrekh wala samayojan) hai. SFT mein labeled data ka upyog karke model ko train kiya jaata hai — har training example mein input aur uska sahi output hota hai, jisse model seekhta hai ki diye gaye input ke liye kya result dena hai. Udaharan ke liye, jaankari nikaalne ke task mein, ek text ko input ke roop mein aur sahi field extraction ko output ke roop mein diya ja sakta hai. SFT un tasks ke liye sabse accha hai jinme spaasht training samples tayyar kiye ja sakte hain — jaise text classification, jaankari nikaalna, prashno ke jawaab dena, aur nirdhit format mein output banana.
SFT ke alawa, bade model training mein Reinforcement Learning (RL, sankariyan seekhne wala abhyas) bhi use hota hai. RL mein seedhe sahi jawaab dene ke bajaye, reward signal se model ke output ka evaluation hota hai aur uske anusaar model ki behavior ko sudhara jaata hai. SFT aur RL dono bade model ki Post-training (baad ki training) ka hissa hain. Post-training ka matlab hai ki jab model ka vishesh pre-training ho jaaye, toh aur behtar command following, reasoning, aur vishesh tasks ke liye training di jaati hai. Aamtaur pehle SFT se seekha jaata hai ki command ke anusar kaam kaise karna hai, phir RL se aur behtar jawaab quality aur behavior achieve kiya jaata hai.
साइन इन करें चर्चा में शामिल हों
Training ka tarika aur hardware resources ke anusar LoRA, QLoRA, ya Full Fine-Tuning chun sakte hain. In tarikon mein training parameters ki sankhya, VRAM ki demand, aur compute cost mein antar hota hai.
Full Fine-Tuning (Poora Baarik Samayojan): Training mein model ke sabhi parameters update hote hain, isliye model kaafi achhi tarah se adjust ho sakta hai. Lekin iske liye zyada VRAM aur compute resources chahiye, isliye training cost bhi zyada hoti hai.
LoRA Fine-Tuning (Low-Rank Adaptation, Kam Rank Samayojan): Bade model fine-tuning ke liye hardware resources ki demand kam karne ke liye, LoRA ka mool vichar hai ki pre-trained model ke weights ko freeze karke, Transformer ke har layer mein chhote trainable rank decomposition matrices inject kiye jaayein, jisse downstream tasks mein trainable parameters ki sankhya kaafi kam ho jaati hai. Training mein, sirf original model ke parameters fix rakh ke, matrix A (kam rank) aur matrix B (zyada rank) train karte hain.

Vistar se samjhein toh, maan lijiye pre-trained matrix $W_0 \in \mathbb{R}^{d \times k}$ hai, toh iska update is tarah hota hai:
W = W_0 + \Delta W = W_0 + BA
Jahan, $\Delta W$ fine-tuning ke dauran seekhe jaane wale weight changes ko darshata hai,
B \in \mathbb{R}^{d \times r}, \quad
A \in \mathbb{R}^{r \times k}, \quad
r \ll \min(d,k)
A aur B LoRA ke naye parameters hain jo training mein participate karte hain. Model ki training poori hone ke baad, ek alag LoRA Adapter file milti hai jismein fine-tuned parameters save hote hain. Use karte waqt, base model aur uske saath ka Adapter dono load karna hota hai.

QLoRA ko simple samajhein toh ye quantization aur LoRA ka combination hai. Ye base model ko kam precision par quantize karta hai. QLoRA ki mukhya novelties nimn hain:
4bit NormalFloat (NF4): NF4 ek nayi data type hai jo samanya vitaran (normal distribution) ke weights ke liye soochna siddhant ke anusar sabse optimal hai;
Double Quantization (dvigun mapankit): Isme pehle se mapankit constants ko dobara mapankit karke ausat memory upyog kam kiya jaata hai;
Paged Optimizer (prishthit anukulak): Ye memory peaks ko manage karne mein madad karta hai, jisse gradient checkpointing ke dauran memory ki kami ki galti nahi aati.
Fine-tuning ka tarika model ki size, task ki zarooraton, GPU resources, aur training cost par nirbhar karta hai. Har tarik ka apna kshetra hai — zyada parameters update karne se better result zaroori nahi hota. Zyadaatar fine-tuning tasks ke liye, pehle LoRA try karein. LoRA mein sirf chhote naye parameters train hote hain, isliye GPU memory aur compute resources ki demand kam hoti hai, aur Adapter file bhi chhoti hoti hai jisse save karna aasan hai.
Agar base model bada hai toh LoRA lagane ke baad bhi VRAM kam padta hai, toh QLoRA consider karein. QLoRA base model ko quantize karke VRAM kam karta hai, jisse bade models bhi limited GPU resources mein fine-tune ho sakte hain. QLoRA zyada model size aur limited VRAM ke scenarios ke liye accha hai.
Agar GPU resources kaafi hain aur task ke liye model ko zyada achhi tarah se adjust karna hai, toh Full Fine-Tuning bhi kar sakte hain. Kyunki sabhi parameters update hote hain, isliye zyada VRAM, compute resources, aur training data chahiye, aur training aur saving ka cost bhi zyada hota hai — isliye vastavik task ke anusaar decide karna padega.
Vyavasayik projects mein, pehle kam cost par result verify karein, phir actual zaroorat ke anusar training cost badhayein. Agar LoRA se kaam ho raha hai, toh sirf zyada parameters update karne ke liye Full Fine-tuning ki zaroorat nahi hai.
ms-swift (SWIFT, Scalable lightWeight Infrastructure for Fine-Tuning) ModelScope community ka open-source bade model training aur deployment framework hai. Ye mukhya roop se bade language models aur multimodal models ke liye hai, jo model training, fine-tuning, inference, evaluation aur deployment tak poora toolset provide karta hai.

Ye Qwen, DeepSeek, Llama, GLM, InternLM jaise popular language models, aur Qwen-VL, InternVL jaise multimodal models ko support karta hai. Saath mein Embedding, Reranker, aur text classification jaise models aur tasks ki training bhi support karta hai.
Adhik upyog ke baare mein ms-swift par dekhein.
Training ke alawa, ms-swift ek complete model usage pipeline bhi provide karta hai. Training poori hone ke baad, swift infer se seedhe model inference kar sakte hain ya swift deploy se model ko OpenAI-compatible API service ke roop mein deploy kar sakte hain. Inference aur deployment mein, vLLM, SGLang, LMDeploy jaise inference engines se acceleration bhi kar sakte hain.
Shuruaati ke liye, ms-swift ki ek khaas baat hai ki ye bade model training ki dher saari complex configurations ko ek unified aur simple tarike se package karta hai. Command line parameters se base model, training data, fine-tuning tarika, aur training parameters specify karke ek model fine-tuning poora kar sakte hain. Agle experiment mein, hum ms-swift se ek poora model fine-tuning pipeline chalayenge — training data taiyar karna, LoRA training shuru karna, training results dekhna, LoRA weights merge karna, aur fine-tuned model se inference aur deployment karna.
Ab hum ek NER (Named Entity Recognition, naamit entity pehchaan) task ka udaharan lekar ModelScope Notebook mein poora model fine-tuning pipeline dikhayenge — data taiyar karna, model training, aur fine-tuned model se inference tak. Is udaharan se aap samajh payenge ki ms-swift se shuru se bade model fine-tuning kaise karte hain. Is experiment mein ubuntu22.04-cuda12.8.1-py312-torch2.10.0-1.39.0 image ka upyog kiya ja raha hai.

1) Dekhein ki ms-swift environment mein pehle se installed hai ya nahi. Dhyan dein ki package name ms_swift hai:
!pip3 list |grep ms_swift
Nimn tarah ki output dikhe toh samajh lein ki ms-swift installed hai:

Agar installed nahi hai toh ye command chalayein:
!pip3 install ms-swift
2)Data taiyari — Is experiment mein open-source data ka upyog kiya ja raha hai, jo e-commerce entity recognition ke liye hai. Dataset mein chaar entity types hain: HCCX — product name (utpaad ka naam), HPPX — brand name (braand ka naam), XH — product model (utpaad ka model), MISC — anya entities (anya sansthaa, desh, size, capacity, vyakti, kriti aur kaaryakram ke naam aadi).
3)Pehle ek data folder banayein aur data usme upload karein. Data ka format ye hai — is task mein model ko sirf entity category, entity text, aur entity ka starting position output karna hai. Data ko training set aur test set mein baanta gaya hai — train.jsonl mein 5400 samples aur val.jsonl mein 600 samples hain.
{"messages":[{"role":"system","content":"你是一个实体识别模型。请识别用户文本中的实体,严格按实体在原文中的顺序输出,每个实体单独一行,格式为:(类型,实体文本,起始位置)。起始位置从0开始;类型只能是HCCX、HPPX、MISC、XH之一。没有实体时只输出:无实体。不要输出解释、Markdown或其他内容。"},{"role":"user","content":"推bb护肤刮痧l背疗橄榄油全身按开背足体按油身m油5摩油摩精00"},{"role":"assistant","content":"(HCCX,橄榄油,10)\n(HCCX,按油,20)\n(HCCX,油,24)\n(HCCX,油,27)"}]}
Folder structure ye hai:

4)Model training — Is hisse mein Qwen/Qwen3-0.6B ka upyog karke fine-tuning ki ja rahi hai. Terminal mein neeche diye gaye command se training shuru ho jayegi:
!CUDA_VISIBLE_DEVICES=0 swift sft \
--model Qwen/Qwen3-0.6B \
--dataset data/train.jsonl \
--val_dataset data/val.jsonl \
--tuner_type lora \
--target_modules all-linear \
--lora_rank 16 \
--lora_alpha 32 \
--lora_dropout 0.05 \
--torch_dtype bfloat16 \
--num_train_epochs 2 \
--per_device_train_batch_size 4 \
--per_device_eval_batch_size 4 \
--gradient_accumulation_steps 4 \
--learning_rate 1e-4 \
--warmup_ratio 0.05 \
--max_length 512 \
--eval_strategy steps \
--eval_steps 100 \
--save_strategy steps \
--save_steps 100 \
--save_total_limit 3 \
--logging_steps 10 \
--load_from_cache_file true \
--dataset_num_proc 4 \
--dataloader_num_workers 4 \
--output_dir output/qwen3_0_6b_ner_lora
Mukhya parameters ka matlab:
| Parameter | Arth |
| --model Qwen/Qwen3-0.6B | Qwen3-0.6B base model ka upyog |
| --tuner_type lora | LoRA fine-tuning ka upyog |
| --target_modules all-linear | Sabhi linear layers par LoRA lagayein |
| --lora_rank 16 | LoRA capacity (kshamata) |
| --lora_alpha 32 | LoRA scaling factor |
| --num_train_epochs 2 | Training ki rounds ki sankhya |
| --per_device_train_batch_size 4 | Ek GPU par har step mein 4 samples |
| --gradient_accumulation_steps 4 | 4 steps baad parameters update |
| --learning_rate 1e-4 | LoRA learning rate (seekhne ki dar) |
| --max_length 512 | Ek sample ki adhiktam lambai |
| --eval_steps 100 | Har 100 steps par validation |
| --save_steps 100 | Har 100 steps par checkpoint save |
| --save_total_limit 3 | Adhiktam 3 checkpoints rakhenge |
| --output_dir | Model aur logs ki save location |
Training shuru hone ke baad, ms-swift lagatar current training information dikhata hai:


LoRA training poori hone ke baad, corresponding LoRA Adapter save hota hai. Adapter ek poora model nahi hota, isliye use karte waqt pehla base model load karna padta hai. Training script ke output_dir mein checkpoints aur corresponding Adapter files mil jaate hain. Vastavik deployment mein, LoRA Adapter ko base model mein merge karke ek poora model banaya ja sakta hai, jo offline deployment ya model transfer ke liye zyada suvidhaajanak hota hai. Training poori hone ke baad directory structure ye hai:

Merge command ye hai:
!CUDA_VISIBLE_DEVICES=0 swift export \
--adapters output/qwen3_0_6b_ner_lora/v2-20260903-172616/checkpoint-676 \
--merge_lora true \
--output_dir output/qwen3_0_6b_ner_merged
Jahan, --adapters training se prapt LoRA checkpoint ka path deta hai, --merge_lora true darshata hai ki LoRA parameters ko base model mein merge karna hai, aur --output_dir merge kiye gaye model ki save directory specify karta hai.
Result ye raha:

Merge poori hone ke baad, poora model seedhe load karke inference kar sakte hain. Application integration ke liye, model ko OpenAI-compatible interface ke roop mein bhi start kar sakte hain aur API ke madhyam se fine-tuned model tak pahunch sakte hain. Ye ek persistent service hai jo terminal mein start karni hoti hai — chhate chapter mein padhein ki terminal mein command kaise start karte hain. Command ye hai:
CUDA_VISIBLE_DEVICES=0 swift deploy \
--model output/qwen3_0_6b_ner_merged \
--load_args false \
--infer_backend vllm \
--enable_thinking false \
--host 0.0.0.0 \
--port 8000 \
--served_model_name qwen3-0.6b-ner \
--api_key 123 \
--vllm_gpu_memory_utilization 0.7 \
--vllm_max_model_len 1024 \
--max_new_tokens 128
Parameters ka vivaran:
| Parameter | Arth |
| swift deploy | ms-swift ki OpenAI-compatible service shuru karein |
| --model | Merge kiye gaye poore model ki directory specify karein |
| --load_args | Model directory se args.json parameters na load karein |
| --infer_backend | vLLM inference engine ka upyog karein |
| --enable_thinking | Qwen3 thinking mode band karein |
| --host | Interface IP address |
| --port | Port number |
| --served_model_name | Interface par model ka naam set karein |
| --api_key | API access key set karein |
| --vllm_gpu_memory_utilization | Model lagbhag 70% VRAM upyog kare |
| --vllm_max_model_len | Adhiktam kul tokens ki sankhya |
| --max_new_tokens | Adhiktam output lambai |
Model start hone ke baad, result ye hai:

Model start hone ke baad, API ke madhyam se connectivity test kar sakte hain, code ye hai:
import json
import requests
url = "http://127.0.0.1:8000/v1/chat/completions"
headers = {
"Authorization": "Bearer 123",
"Content-Type": "application/json"
}
payload = {
"model": "qwen3-0.6b-ner",
"messages": [
{
"role": "system",
"content": "你是一个实体识别模型。请识别用户文本中的实体,严格按实体在原文中的顺序输出,每个实体单独一行,格式为:(类型,实体文本,起始位置)。起始位置从0开始;类型只能是HCCX、HPPX、MISC、XH之一。没有实体时只输出:无实体。不要输出解释、Markdown、think标记或其他内容。"
},
{
"role": "user",
"content": "3539,2017消防灭火防滑耐磨长筒抢险救援胶靴"
}
],
"temperature": 0,
"max_tokens": 128
}
try:
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
result = response.json()
output_text = result["choices"][0]["message"]["content"]
print("识别结果:")
print(output_text)
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
Model ka output ye raha — regex se think tag hata sakte hain:

Is chapter ke sabhi experiment data aur code ke liye dekhein: https://modelscope.cn/gallery/liucong/ab458cbd-b47f-4830-91b6-314ea2036fc6