)
在大模型微调工作流中,SFT(监督微调)能让模型学会“怎么回答”,而DPO(Direct Preference Optimization,直接偏好优化)则能进一步让模型学会“如何回答得更好”。DPO 的核心优势在于:直接使用人类偏好对数据进行优化,无需训练奖励模型,也无需复杂的强化学习流程。本文将基于 RTX 5070 8GB 显存环境,详解从数据准备、DPO 训练、模型合并导出到 Ollama 本地部署的完整闭环。一、 偏好数据准备DPO 训练依赖(prompt, chosen, rejected)三元组格式的数据。其中chosen为符合人类偏好的优质回答,rejected为劣质或错误回答。以淄博旅游领域为例,创建zibo_dpo.jsonl文件:{"prompt": "淄博有哪些著名景点?", "chosen": "淄博著名景点包括临淄的姜太公祠、管仲纪念馆、桓台马踏湖、周村古商城等。", "rejected": "淄博的景点有齐长城、钟书阁、文昌湖。"} {"prompt": "淄博烧烤有什么特色?", "chosen": "淄博烧烤以“小饼、小葱、小烤炉”为特色。", "rejected": "淄博烧烤和普通烧烤没有区别。"}💡提示:实际训练中建议准备数百至数千条高质量偏好对数据,以确保对齐效果。二、 DPO 训练脚本详解使用 Unsloth 框架可以显著降低显存占用并加速训练。以下为完整的dpo_train.py脚本:# -*- coding: utf-8 -*- import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" from unsloth impor