學(xué)習(xí)教材)
ms-swift 零基礎(chǔ)學(xué)習(xí)教材從推理到 LoRA 微調(diào)與部署適合剛開始學(xué)習(xí) AI 和編程的。你不需要一次看懂全部內(nèi)容也不需要死記參數(shù)。第一次只完成“第 0 關(guān) → 第 1 關(guān) → 第 2 關(guān)”成功后再學(xué)習(xí)自定義數(shù)據(jù)和參數(shù)調(diào)節(jié)。本文依據(jù) 2026 年 8 月 24 日可見的 ms-swift 4.x 官方文檔整理??蚣堋⒛P秃鸵蕾嚂氯裘钍д堃晕哪┕俜轿臋n為準(zhǔn)。0. 先知道自己在做什么0.1 一句話認(rèn)識 ms-swiftms-swift 是 ModelScope 社區(qū)提供的大模型訓(xùn)練、微調(diào)、推理、評測、量化和部署工具。你可以把大語言模型想象成一名已經(jīng)讀過很多書的學(xué)生推理inference向這名學(xué)生提問讓它回答。監(jiān)督微調(diào)SFT拿“問題—標(biāo)準(zhǔn)答案”練習(xí)冊繼續(xù)教它。LoRA不重寫整本大腦只訓(xùn)練一小組“外掛筆記”花費更少顯存。部署deploy把模型變成一個可以由其他程序訪問的服務(wù)。量化quantization降低數(shù)字精度讓模型更小、更省顯存代價可能是少量能力損失。checkpoint訓(xùn)練過程中的存檔點類似游戲存檔。ms-swift 的包名是ms-swift但安裝后使用的命令是swift。它和 Apple 的 Swift 編程語言不是一回事。0.2 這份教材的學(xué)習(xí)路線準(zhǔn)備 Python 環(huán)境 ↓ 用原始模型聊天推理 ↓ 準(zhǔn)備少量 JSONL 教學(xué)數(shù)據(jù) ↓ 用 LoRA 做 SFT 微調(diào) ↓ 加載 LoRA 檢查效果 ↓ 部署成 OpenAI 兼容接口0.3 先接受三個現(xiàn)實大模型很吃硬件。普通電腦能學(xué)習(xí)命令和運行小模型但訓(xùn)練較大模型通常需要 NVIDIA GPU 或云 GPU。第一次成功比第一次完美重要。先用小模型、少量數(shù)據(jù)、1 個 epoch 跑通全流程。微調(diào)不是給模型灌入百科知識的萬能辦法。想讓模型準(zhǔn)確查詢大量、經(jīng)常變化的資料很多時候 RAG檢索增強(qiáng)生成比微調(diào)更合適。1. 硬件與系統(tǒng)先選適合你的路線路線 ANVIDIA GPU最適合訓(xùn)練推薦 Linux NVIDIA GPU。先檢查nvidia-smi如果能看到顯卡名稱、顯存和 CUDA 信息說明驅(qū)動基本可用。顯存越大能使用的模型、序列長度和批量越大。大致理解模型規(guī)模0.6B約為 6 億參數(shù)4B約為 40 億參數(shù)。參數(shù)越多通常資源需求越大。實際顯存還受精度、序列長度、優(yōu)化器、注意力實現(xiàn)等影響不能只靠參數(shù)量精確計算。路線 BApple 芯片 Mac適合入門推理和小實驗PyTorch 可使用 MPS但 CUDA、flash_attn、vLLM 和部分量化/訓(xùn)練功能是 NVIDIA 路線不能照搬。建議先用較小模型做swift infer訓(xùn)練時從極小模型、短序列和很少數(shù)據(jù)開始遇到算子不支持或內(nèi)存不足時轉(zhuǎn)到 NVIDIA 云 GPU不要設(shè)置CUDA_VISIBLE_DEVICES。路線 C只有 CPU適合理解流程可以安裝、查看幫助、處理數(shù)據(jù)也可能運行很小的模型但速度通常很慢不建議把 CPU 當(dāng)作正式訓(xùn)練設(shè)備。安全提醒租云 GPU 會產(chǎn)生費用。設(shè)置預(yù)算和自動關(guān)機(jī)訓(xùn)練結(jié)束后停止實例。不要把平臺 Token、API Key 寫進(jìn)公開代碼或提交到 Git。2. 創(chuàng)建干凈的 Python 環(huán)境官方 4.x 主線要求 Python 至少 3.10官方當(dāng)前推薦 Python 3.12。下面二選一。2.1 使用 Condaconda create-nms-swift-studypython3.12-yconda activate ms-swift-study python--version以后每次打開新終端都先執(zhí)行conda activate ms-swift-study2.2 使用 uv在一個專門的練習(xí)文件夾內(nèi)執(zhí)行mkdirms-swift-studycdms-swift-study uv venv--python3.12source.venv/bin/activateWindows PowerShell 激活命令是.venv\Scripts\Activate.ps1如果沒有uv可先按 uv 官方說明安裝也可以使用上一節(jié) Conda 路線。3. 安裝 ms-swift 并做體檢3.1 常規(guī)安裝python-mpipinstall-Ums-swift如果正在使用 uv 創(chuàng)建的環(huán)境也可按官方推薦uv pipinstall-Ums-swift --torch-backendauto不要一開始安裝全部可選依賴。需要評測、DeepSpeed、vLLM 時再安裝對應(yīng)組件可以減少沖突。3.2 檢查是否成功swift--helpswift sft--helppython-cimport torch; print(PyTorch:, torch.__version__); print(CUDA可用:, torch.cuda.is_available()); print(MPS可用:, torch.backends.mps.is_available() if hasattr(torch.backends, mps) else False)看到swift的幫助文字就說明命令已安裝。再記錄環(huán)境方便排錯python--versionpython-mpip show ms-swift torch transformers3.3 下載來源ms-swift 默認(rèn)從 ModelScope 下載模型和數(shù)據(jù)集。若要從 Hugging Face 下載在命令后增加--use_hftrue第一次運行會下載模型可能需要較多時間和磁盤。--model既可以是 Hub 上的模型 ID也可以是已經(jīng)下載好的本地模型目錄。4. 第 1 關(guān)先讓原始模型回答問題第一次請選小模型。下面以Qwen/Qwen3-0.6B為學(xué)習(xí)示例若官方支持列表或模型頁面發(fā)生變化請換成當(dāng)前受支持的小型指令模型。NVIDIA 單卡CUDA_VISIBLE_DEVICES0swift infer\--modelQwen/Qwen3-0.6B\--infer_backendtransformers\--streamtrue\--temperature0\--max_new_tokens256Mac 或 CPU去掉第一行環(huán)境變量swift infer\--modelQwen/Qwen3-0.6B\--infer_backendtransformers\--streamtrue\--temperature0\--max_new_tokens256進(jìn)入交互模式后輸入請用高中生能理解的語言解釋什么是神經(jīng)網(wǎng)絡(luò)。常用交互命令clear清空對話歷史reset-system重置系統(tǒng)提示詞和歷史multi-line進(jìn)入多行輸入模式以#結(jié)束single-line回到單行模式quit或exit退出。參數(shù)解釋--model模型 ID 或本地目錄--infer_backend transformers使用兼容性最好的 Transformers 推理后端--stream true像打字一樣逐步輸出--temperature 0回答更穩(wěn)定--max_new_tokens 256最多生成 256 個新 token不等于 256 個漢字。如果這一步失敗先不要訓(xùn)練。把推理環(huán)境解決好再繼續(xù)??蛇x瀏覽器聊天界面swift app\--modelQwen/Qwen3-0.6B\--infer_backendtransformers\--streamtrue\--max_new_tokens256完整訓(xùn)練 Web UI 可啟動swift web-ui命令行更適合學(xué)習(xí)參數(shù)和復(fù)現(xiàn)因此本教材以命令行為主。5. 第 2 關(guān)認(rèn)識訓(xùn)練數(shù)據(jù)5.1 SFT 數(shù)據(jù)在教什么每條數(shù)據(jù)都像一道帶標(biāo)準(zhǔn)答案的題{messages:[{role:user,content:11等于幾},{role:assistant,content:11等于2。}]}user用戶說的話assistant希望模型學(xué)習(xí)的答案system可選規(guī)定身份、風(fēng)格或規(guī)則。5.2 創(chuàng)建data/train.jsonlJSONL 的規(guī)則是一行一個完整 JSON 對象不是在最外層套一個大數(shù)組。{messages:[{role:system,content:你是一名耐心的高中數(shù)學(xué)助教分步驟回答。},{role:user,content:什么是一元二次方程},{role:assistant,content:只含一個未知數(shù)并且未知數(shù)的最高次數(shù)是2的整式方程叫作一元二次方程。一般形式是 ax2bxc0其中 a≠0。}]} {messages:[{role:system,content:你是一名耐心的高中數(shù)學(xué)助教分步驟回答。},{role:user,content:如何解方程 x2-5x60},{role:assistant,content:第1步因式分解x2-5x6(x-2)(x-3)。第2步令每個因式為0x-20或x-30。因此 x2 或 x3。}]} {messages:[{role:system,content:你是一名耐心的高中數(shù)學(xué)助教分步驟回答。},{role:user,content:判別式有什么用},{role:assistant,content:對 ax2bxc0判別式 Δb2-4ac。Δ0 時有兩個不相等實根Δ0 時有兩個相等實根Δ0 時沒有實根。}]}真實訓(xùn)練不要只用 3 條這是檢查格式的最小樣例。高質(zhì)量的幾十至幾百條數(shù)據(jù)比大量錯誤、矛盾、機(jī)械重復(fù)的數(shù)據(jù)更值得嘗試。5.3 數(shù)據(jù)檢查清單每一行能單獨通過 JSON 解析使用 UTF-8 編碼messages存在且是列表對話角色順序合理最后有要學(xué)習(xí)的assistant答案答案正確、清晰、風(fēng)格一致不含密碼、身份證號、私人聊天等敏感信息訓(xùn)練集和測試問題不要完全重復(fù)??焖贆z查 JSONLpython-cimport json; pdata/train.jsonl; rows[json.loads(x) for x in open(p, encodingutf-8) if x.strip()]; print(有效行數(shù):, len(rows)); print(rows[0])ms-swift 也能自動識別常見的query/response、Alpaca、ShareGPT 格式但初學(xué)階段建議統(tǒng)一使用官方標(biāo)準(zhǔn)messages格式。6. 第 3 關(guān)第一次 LoRA 微調(diào)先做“冒煙測試”目標(biāo)只是驗證整個流程能跑通不追求模型立刻變強(qiáng)。6.1 NVIDIA GPU 入門命令CUDA_VISIBLE_DEVICES0swift sft\--modelQwen/Qwen3-0.6B\--tuner_typelora\--datasetdata/train.jsonl\--split_dataset_ratio0.1\--torch_dtypebfloat16\--num_train_epochs1\--per_device_train_batch_size1\--per_device_eval_batch_size1\--gradient_accumulation_steps8\--learning_rate1e-4\--lora_rank8\--lora_alpha32\--lora_dropout0.05\--target_modulesall-linear\--max_length512\--warmup_ratio0.05\--logging_steps1\--eval_steps10\--save_steps10\--save_total_limit2\--output_diroutput/qwen3-0_6b-math-lora如果顯卡不支持 BF16把--torch_dtypebfloat16換成--torch_dtypefloat166.2 極小數(shù)據(jù)的注意事項只有 3 條數(shù)據(jù)時--split_dataset_ratio 0.1可能無法得到有意義的驗證集。冒煙測試可以暫時改為--split_dataset_ratio0并刪除--per_device_eval_batch_size、--eval_steps。正式實驗建議準(zhǔn)備足夠數(shù)據(jù)或用獨立文件--datasetdata/train.jsonl\--val_datasetdata/val.jsonl驗證集用來檢查模型是否只會背訓(xùn)練題。它不參與參數(shù)更新。6.3 訓(xùn)練結(jié)束后去哪里找結(jié)果output/qwen3-0_6b-math-lora下通常會出現(xiàn)一次運行目錄和若干checkpoint-數(shù)字目錄。日志會打印實際路徑。LoRA checkpoint 主要保存“增量適配器”不是一份完整基礎(chǔ)模型。不要隨便移動其中的args.json等文件ms-swift 推理時會用它們恢復(fù)訓(xùn)練配置。7. 第 4 關(guān)加載訓(xùn)練結(jié)果并比較把下面路徑換成你的真實 checkpointswift infer\--adaptersoutput/qwen3-0_6b-math-lora/vx-xxx/checkpoint-xxx\--infer_backendtransformers\--streamtrue\--temperature0\--max_new_tokens256--adapters指向 LoRA checkpoint。因為目錄里有args.json通常不用重復(fù)寫--model。若不想自動加載保存的參數(shù)可顯式設(shè)置--load_args false但初學(xué)時不建議。請用完全相同的問題比較原始基礎(chǔ)模型微調(diào)后的模型訓(xùn)練集中沒出現(xiàn)過、但類型相似的問題。不要只憑“感覺不錯”判斷。準(zhǔn)備固定測試題并記錄正確性、格式、是否啰嗦、是否編造、響應(yīng)速度。8. 最常用參數(shù)意思、影響和建議8.1 模型與數(shù)據(jù)參數(shù)作用入門建議--modelHub 模型 ID 或本地模型目錄先選 0.5B1.5B 量級的小模型跑通--use_hf true改用 Hugging Face 下載默認(rèn) ModelScope 可用時不必加--dataset一個或多個訓(xùn)練數(shù)據(jù)集 ID/路徑自定義數(shù)據(jù)優(yōu)先用 JSONL--val_dataset獨立驗證集正式實驗推薦使用--split_dataset_ratio從訓(xùn)練集切出驗證集的比例官方當(dāng)前默認(rèn) 0可從0.05或0.1開始--dataset_num_proc數(shù)據(jù)預(yù)處理進(jìn)程數(shù)小數(shù)據(jù)用 1大文本數(shù)據(jù)可逐漸增加--columns把自定義列名映射到標(biāo)準(zhǔn)列名標(biāo)準(zhǔn)messages格式不需要--system命令行提供系統(tǒng)提示詞數(shù)據(jù)里的 system 優(yōu)先級更高Hub 數(shù)據(jù)集還支持--dataset數(shù)據(jù)集ID:子集#采樣數(shù)例如#500表示采樣 500 條適合冒煙測試。多個數(shù)據(jù)集可在--dataset后依次寫多個值。8.2 訓(xùn)練規(guī)模與顯存參數(shù)作用調(diào)大后通常怎樣--max_length單條樣本編碼后的最大 token 數(shù)能容納長文本但顯存和計算量明顯增加--per_device_train_batch_size每張卡一次放幾條樣本吞吐可能提高但更吃顯存--gradient_accumulation_steps累積多少次小批量再更新少占峰值顯存但每次更新等待更久--gradient_checkpointing用額外計算換顯存更省顯存但訓(xùn)練變慢實際默認(rèn)行為依模型/版本檢查--torch_dtype權(quán)重和計算精度BF16 通常更穩(wěn)定硬件必須支持SFT 中常用的有效總 batch size總 batch size 每卡 batch size × 梯度累積步數(shù) × GPU 數(shù)量例1 × 8 × 1 8。顯存不足時通常先保持每卡 batch 為 1再用梯度累積獲得更大的有效 batch。8.3 學(xué)習(xí)過程參數(shù)作用入門建議--num_train_epochs完整學(xué)習(xí)訓(xùn)練集幾遍先 1再比較 23防止過擬合--learning_rate每次更新參數(shù)的步幅LoRA 常從1e-4起全參官方默認(rèn)更低1e-5--warmup_ratio前多少比例逐漸升高學(xué)習(xí)率0.030.1示例用0.05--weight_decay對過大權(quán)重的懲罰不理解時先用默認(rèn)值--lr_scheduler_type學(xué)習(xí)率如何隨訓(xùn)練變化默認(rèn)cosine通??上缺A?-seed隨機(jī)種子固定后更方便復(fù)現(xiàn)實驗學(xué)習(xí)率過大loss 可能劇烈震蕩、出現(xiàn) NaN 或能力被破壞過小則幾乎學(xué)不到。一次只改變一個關(guān)鍵參數(shù)并記錄結(jié)果。8.4 LoRA 參數(shù)參數(shù)作用入門建議--tuner_type lora啟用 LoRA 微調(diào)初學(xué)首選--target_modules all-linear給模型中的線性層掛 LoRA官方常用通用設(shè)置--lora_rankLoRA 容量官方當(dāng)前默認(rèn) 8先用 8復(fù)雜任務(wù)可試 16/32但更吃顯存--lora_alphaLoRA 更新的縮放系數(shù)rank8 時先用 16 或 32官方示例用 32--lora_dropoutLoRA 分支隨機(jī)丟棄比例當(dāng)前默認(rèn) 0.05小數(shù)據(jù)可保留 0.05別隨意大改--lora_bias是否訓(xùn)練 bias先用默認(rèn)none不要把rank理解成“越大越好”。rank 太大意味著更多可訓(xùn)練參數(shù)、更多顯存也可能讓小數(shù)據(jù)更容易過擬合。8.5 日志、驗證與保存參數(shù)作用入門建議--logging_steps每隔多少 step 打印日志小實驗 15大實驗可更大--eval_steps每隔多少 step 驗證應(yīng)與總 step 數(shù)匹配--save_steps每隔多少 step 保存小實驗 1050--save_total_limit最多保留幾個 checkpoint23避免磁盤被占滿--output_dir輸出目錄每個實驗使用不同名字--report_to記錄到 TensorBoard/WB 等當(dāng)前官方默認(rèn) TensorBoard如果總訓(xùn)練只有 8 step卻設(shè)置save_steps100中途當(dāng)然不會出現(xiàn)第 100 步存檔。先觀察日志中的總 step 數(shù)。8.6 推理生成參數(shù)參數(shù)作用常見選擇--temperature隨機(jī)程度事實/數(shù)學(xué)用 00.2創(chuàng)作用 0.7 左右再觀察--top_p只在累計概率較高的候選中采樣常與 temperature 配合不必同時亂調(diào)--max_new_tokens最多生成多少新 token128、256、512 起步--stream true流式顯示聊天時推薦--infer_backend推理后端初學(xué)用transformersmax_length多用于限制輸入/訓(xùn)練樣本長度max_new_tokens限制新生成內(nèi)容長度。兩者不要混淆。9. 顯存不足CUDA out of memory怎么處理按照這個順序每改一項就重試降低--max_length例如2048 → 1024 → 512把--per_device_train_batch_size設(shè)為 1適當(dāng)增加--gradient_accumulation_steps保持有效 batch換更小的模型使用 LoRA不要全參數(shù)訓(xùn)練確認(rèn)沒有其他程序占用 GPU用nvidia-smi查看在理解兼容性后再學(xué)習(xí) QLoRA、DeepSpeed、FlashAttention、序列打包。不要把幾十個優(yōu)化開關(guān)一次全打開否則失敗時很難知道是哪一個造成的。10. 用 YAML 管理參數(shù)比超長命令更清楚創(chuàng)建configs/sft_lora.yamlmodel:Qwen/Qwen3-0.6Btuner_type:loradataset:-data/train.jsonlsplit_dataset_ratio:0.1torch_dtype:bfloat16num_train_epochs:1per_device_train_batch_size:1per_device_eval_batch_size:1gradient_accumulation_steps:8learning_rate:0.0001warmup_ratio:0.05max_length:512lora_rank:8lora_alpha:32lora_dropout:0.05target_modules:-all-linearlogging_steps:1eval_steps:10save_steps:10save_total_limit:2output_dir:output/qwen3-0_6b-math-lora運行swift sft configs/sft_lora.yaml還可以臨時覆蓋一個值swift sft configs/sft_lora.yaml--num_train_epochs2好習(xí)慣每個實驗復(fù)制一份配置文件名寫清變化如sft_rank16.yaml并記錄結(jié)果。11. 部署成一個 API11.1 兼容性優(yōu)先的部署swift deploy\--adaptersoutput/qwen3-0_6b-math-lora/vx-xxx/checkpoint-xxx\--infer_backendtransformers\--served_model_namemath-helper\--host127.0.0.1\--port8000\--temperature0\--max_new_tokens256這里使用127.0.0.1只允許本機(jī)訪問比直接開放到局域網(wǎng)或公網(wǎng)更安全。若需要對外提供服務(wù)應(yīng)設(shè)置鑒權(quán)、防火墻、限流和日志脫敏。11.2 用 curl 調(diào)用另開一個終端curlhttp://127.0.0.1:8000/v1/chat/completions\-HContent-Type: application/json\-d{ model: math-helper, messages: [ {role: user, content: 請分步驟解方程 x2-7x120} ], max_tokens: 256, temperature: 0 }服務(wù)端參數(shù)--max_new_tokens和 OpenAI 兼容請求中的max_tokens都在限制生成長度具體請求值可以比服務(wù)端上限更小。11.3 vLLM 是什么時候?qū)W的vLLM 能提高吞吐適合 NVIDIA GPU 部署但要額外安裝并且對 CUDA、PyTorch、模型和量化方式有兼容要求。初學(xué)先用transformers流程穩(wěn)定后再按官方版本表安裝 vLLM 并設(shè)置--infer_backendvllmQLoRA 適配器不能直接按所有 vLLM LoRA 場景處理請以當(dāng)前官方推理后端兼容表為準(zhǔn)。12. 合并、導(dǎo)出與發(fā)布LoRA 可在推理時單獨加載也可以與基礎(chǔ)模型合并。官方當(dāng)前支持在推理時用--merge_lora true或通過導(dǎo)出流程處理。合并會生成體積更大的完整權(quán)重需要額外磁盤和內(nèi)存。發(fā)布到 ModelScope 的官方命令形式swiftexport\--adaptersoutput/qwen3-0_6b-math-lora/vx-xxx/checkpoint-xxx\--push_to_hubtrue\--hub_model_id你的模型ID\--hub_token你的Token\--use_hffalse安全做法不要把真實 Token 保存進(jìn).md、腳本或 Git 歷史。先檢查基礎(chǔ)模型許可證、數(shù)據(jù)許可證和隱私要求再決定是否公開。13. 進(jìn)階地圖現(xiàn)在只需認(rèn)識名字全參數(shù) SFT訓(xùn)練所有參數(shù)資源和數(shù)據(jù)要求更高。QLoRA量化基礎(chǔ)模型后訓(xùn)練 LoRA進(jìn)一步省顯存但兼容性更復(fù)雜。DPO/KTO/GRPO 等偏好學(xué)習(xí)或強(qiáng)化學(xué)習(xí)不是零基礎(chǔ)第一課。DeepSpeed/FSDP/Megatron多卡或大規(guī)模訓(xùn)練技術(shù)。vLLM/SGLang/LMDeploy推理加速后端各自兼容性不同。AWQ/GPTQ/BNB/FP8不同量化方法。EvalScope模型評測工具。多模態(tài)微調(diào)數(shù)據(jù)還包含images、videos、audios等字段資源需求更大。推薦順序LoRA SFT → 可靠評測 → 部署 → QLoRA/量化 → 多卡訓(xùn)練 → 偏好或強(qiáng)化學(xué)習(xí)。14. 常見報錯排查swift: command not found可能沒激活正確環(huán)境或包裝到了另一個 Pythonwhichpythonwhichswift python-mpip show ms-swiftWindows 使用where python where swift模型或數(shù)據(jù)下載失敗檢查網(wǎng)絡(luò)和磁盤空間確認(rèn)模型 ID 拼寫ModelScope 不通時嘗試--use_hf true反之亦然私有/受限模型需要先在對應(yīng)平臺授權(quán)和登錄不要重復(fù)中斷大文件下載。CUDA out of memory按第 9 章的順序縮小訓(xùn)練配置并用nvidia-smi查看占用。BF16 不支持或出現(xiàn) NaN換成--torch_dtype float16或使用支持 BF16 的 GPU。若仍出現(xiàn) NaN再檢查學(xué)習(xí)率、數(shù)據(jù)異常和依賴版本。數(shù)據(jù)被丟棄或提示格式錯誤先用 23 條數(shù)據(jù)測試并增加--stricttrue它會讓錯誤樣本直接報錯便于找到壞行。檢查 JSON、角色順序、空答案和超長樣本。默認(rèn)truncation_strategydelete時超過max_length的訓(xùn)練樣本可能被刪除。訓(xùn)練沒有明顯效果數(shù)據(jù)太少或答案質(zhì)量低訓(xùn)練問題與測試問題差別太大學(xué)習(xí)率太低或訓(xùn)練步數(shù)太少模型太小任務(wù)超過其能力只測試了訓(xùn)練原題誤把背誦當(dāng)泛化生成參數(shù)不同比較不公平。訓(xùn)練后能力變差數(shù)據(jù)單一、錯誤或相互矛盾學(xué)習(xí)率過大epoch 太多導(dǎo)致過擬合訓(xùn)練模板或模型類型不匹配沒有保留通用能力相關(guān)的數(shù)據(jù)。15. 怎樣做一次像樣的小實驗準(zhǔn)備一張實驗記錄表實驗?zāi)P蛿?shù)據(jù)量max_lengthranklrepoch驗證結(jié)果備注baseline原始模型0----記錄 20 道題基線exp01Qwen 小模型10051281e-41待填寫首次 LoRAexp02同上10051285e-51待填寫只改 lr科學(xué)實驗的核心是固定一組測試題每次只改一個主要變量保存配置、日志和 checkpoint同時記錄成功與失敗不用訓(xùn)練集原題冒充測試集成績。15.1 loss 怎么看loss 是模型答案與標(biāo)準(zhǔn)答案差距的數(shù)學(xué)度量。通常訓(xùn)練 loss 下降說明正在擬合數(shù)據(jù)但它不是最終成績訓(xùn)練 loss 下降、驗證效果也提高通常是好現(xiàn)象訓(xùn)練 loss 繼續(xù)下降、驗證效果變差可能過擬合loss 不動檢查數(shù)據(jù)、可訓(xùn)練參數(shù)、學(xué)習(xí)率loss 突然 NaN檢查精度、學(xué)習(xí)率、異常數(shù)據(jù)和依賴。不要比較不同數(shù)據(jù)、不同模板下 loss 的絕對數(shù)值后直接下結(jié)論。16. 一周入門計劃第 1 天終端與環(huán)境學(xué)會cd、ls、pwd創(chuàng)建 Python 環(huán)境成功運行swift --help。第 2 天模型推理跑通一個小模型理解 model、token、temperature、max_new_tokens。第 3 天數(shù)據(jù)手寫 10 條 JSONL用 Python 檢查解析區(qū)分訓(xùn)練集與驗證集。第 4 天LoRA用 1050 條數(shù)據(jù)跑冒煙測試找到 checkpoint看懂 loss 和 step。第 5 天比較準(zhǔn)備 20 個固定問題比較原始模型和微調(diào)模型記錄失敗案例。第 6 天參數(shù)實驗只改變 epoch 或 learning_rate使用 YAML 保存配置比較實驗結(jié)果。第 7 天部署啟動本地 API用 curl 調(diào)用寫一頁學(xué)習(xí)總結(jié)。17. 最小速查表# 安裝python-mpipinstall-Ums-swift# 看幫助這是查當(dāng)前版本參數(shù)最可靠的方法之一swift--helpswift sft--helpswift infer--helpswift deploy--help# 原始模型推理swift infer--modelQwen/Qwen3-0.6B--infer_backendtransformers# LoRA 微調(diào)swift sft\--modelQwen/Qwen3-0.6B\--tuner_typelora\--datasetdata/train.jsonl\--max_length512\--per_device_train_batch_size1\--gradient_accumulation_steps8\--learning_rate1e-4\--lora_rank8\--lora_alpha32\--target_modulesall-linear\--num_train_epochs1\--output_diroutput/my-first-lora# LoRA 推理替換真實路徑swift infer--adaptersoutput/.../checkpoint-...--temperature0# 本地部署替換真實路徑swift deploy\--adaptersoutput/.../checkpoint-...\--infer_backendtransformers\--host127.0.0.1\--port800018. 官方資料與繼續(xù)學(xué)習(xí)優(yōu)先看官方資料因為命令和默認(rèn)值會變化ms-swift GitHub 與官方 READMEms-swift 中文文檔首頁安裝說明快速開始命令行參數(shù)自定義數(shù)據(jù)集預(yù)訓(xùn)練與微調(diào)推理與部署支持的模型與數(shù)據(jù)集官方 examples 目錄遇到問題時提問要附上操作系統(tǒng)、GPU 型號與顯存、python --version、pip show ms-swift torch transformers、完整命令、報錯最后 50 行、最小數(shù)據(jù)樣例。不要附 Token 或隱私數(shù)據(jù)。結(jié)語學(xué)習(xí) AI 不是智力競賽而是把大問題拆成小問題、不斷得到反饋的過程。你第一次的目標(biāo)只有四個swift --help能運行小模型能回答一句話3 條 JSONL 能被正確讀取LoRA 冒煙測試能生成 checkpoint。做到這四點你已經(jīng)完成了一個真實的大模型微調(diào)閉環(huán)。接下來不是“我會不會”而只是“我準(zhǔn)備把哪一步練得更熟”。