现在招聘市场中大模型应用开发的岗位还是蛮多的不管是不是泡沫至少是现在的风口学习学习应该没有坏处哈哈之前学习过Agent、RAG之类的操作但是对于大模型微调没有涉及所以来学习学习。大模型微调主流的就是Llama-factory那就先跑通一个demo再说吧~核心概念常见分类监督微调含指令微调明确任务指令如翻译对话微调多轮对话数据如客服领域适配特定领域术语如医疗⽂本分类结构化标签如情感分析模型推理微调思维链标注如数学解题知识蒸馏将复杂模型知识迁移到轻量模型降低推理成本强化学习结合⼈类反馈优化⽣成质量提升安全性与⻛格⼀致性多模态微调处理⽂本、图像、语⾳等跨模态数据实现图⽂问答、视频分析等场景。主流格式Alpaca数据集{instruction:解释什么是机器学习并举例说明其在⽇常⽣活中的应⽤,input:,// 可选字段当指令本⾝⾜够明确时可省略output:机器学习是⼈⼯智能的⼀个分⽀指计算机通过算法从数据中学习规律⽆需explicit 编程即可完成特定任务。\n⽇常⽣活中的应⽤包括\n1. 推荐系统如电商平台根据浏览历史推荐商品\n2. 语⾳助⼿如 Siri 通过学习识别⽤⼾语⾳指令\n3. 垃圾邮件过滤⾃动识别并分类垃圾邮件。}ShareGPT数据集{conversations:[{from:human,value:你能帮我规划⼀个3天的北京旅⾏计划吗},{from:gpt,value:当然可以以下是3天北京旅⾏计划建议\nDay1上午游览天安⻔⼴场和故宫下午去景⼭公园俯瞰故宫全景晚上逛王府井步⾏街。\nDay2上午登⻓城推荐⼋达岭或慕⽥峪下午返回市区后参观南锣⿎巷胡同。\nDay3上午游览颐和园下午去798艺术区感受⽂艺氛围。\n需要调整节奏或增加特定景点吗},{from:human,value:⻓城想选⼈少⼀点的有其他推荐吗},{from:gpt,value:如果想避开⼈流推荐⻩花城⽔⻓城它兼具⻓城的雄伟和⽔乡的秀美游客相对较少。可以上午出发⻋程约1.5⼩时下午还能在附近体验农家菜傍晚返回市区。}]}核心参数训练轮数指遍历训练数据次数少则不熟、多则过拟合学习率决定参数调整幅度⼤则进步快易⾛偏⼩则稳定但慢批量大小是每次更新⽤的样本数⼤则快⽽粗、⼩则慢⽽细。实际需调参验证默认即可。LLaMA-Factory通⽤场景由于其⽀持多种模型和训练算法适⽤于各种通⽤的⼤语⾔模型训练和微调场景⽆论是⽂本⽣成、情感分析还是机器翻译等任务都可以使⽤LLaMaFactory进⾏模型的定制化训练。企业级应⽤提供了APIServer和⼀站式WebUIBoard⽅便企业进⾏模型的管理和部署。零代码适合不会写代码或代码基础⽐较弱的同学快速上⼿进⾏微调。快速开始1、环境配置首先肯定是安装环境我是在远程服务器中运行llama-factory程序然后在自己的电脑上打开窗口端进行操作的因此以下操作默认在这样的环境中进行。服务器默认安装conda没有安装的根据下面教程安装创建conda环境这里的python版本建议看一看llamafactory官网的要求现在官网推荐的版本是3.11conda create-nllama-factorypython3.11conda activate llama-factory然后在github拉源码安装gitclone--depth1https://github.com/hiyouga/LlamaFactory.gitcdLlamaFactory pipinstall-e.pipinstall-rrequirements/metrics.txt安装后建议进入python环境检查torch能否使用cuda我按照这个命令执行完之后显示找不到显卡原因是cuda驱动和torch版本不匹配解决方案是把报错送给豆包重新安装torch就好了不影响原环境使用importtorchprint(torch.__version__)print(torch.version.cuda)print(torch.cuda.is_available())#输出为True则安装无误2、打开可视化页面因为llama-factory服务在服务器上而希望在本地打开网页因此使用共享端口的方法本地执行ssh-L7860:localhost:7860 服务器用户名服务器ip-p服务器ssh的端口号执行该命令后应该会在本地提示输入密码然后就是正常连接远程服务了cd到llama factory源码的位置执行conda activate llama-factory llamafactory-cli webui按理说页面就可以打开了3、准备训练打开之后的页面应该就是下面的样子了左边语言选择中文模型我用的Qwen/Qwen2-1.5B-Instruct因为只是为了跑通就只用1.5B了最右边是模型路径如果本地有权重可以附上路径没有的话默认选择魔搭社区 程序会自动下载命令行可以看到下载进度微调方式选择lora下面选择train选项框选择SFT监督微调随后就是数据集准备为了便捷我是用弱智吧的QA作为语料。数据库语料具体在ruozhiba_qa.json这个文件中llama-factory要求数据放在./data/文件夹下所以自行copy过去或者软连接过去都可以这里不给命令了除了复制文件之外还需要修改dataset_info.json就是在json数据中加上自己的数据集名和文件名就好。两项配置完之后在网页数据集下拉框中就可以看到咱们自己注册的数据集了gitclone https://github.com/FunnySaltyFish/Better-Ruozhiba.git在数据集配置好之后如果显示数据集keyErrorinput之类的那就需要用下面的脚本处理一下也就是把脚本放到./data文件夹下运行一下就好了数据集格式的问题。importjsonimportosdeffix_llama_factory_dataset(input_path,output_pathNone): 为 LlamaFactory 数据集自动添加缺失的 input 字段 :param input_path: 原始数据集路径 :param output_path: 修复后保存路径不填则覆盖原文件 # 默认覆盖原文件ifoutput_pathisNone:output_pathinput_path# 读取原始数据withopen(input_path,r,encodingutf-8)asf:raw_datajson.load(f)fixed_data[]foriteminraw_data:# 复制原始数据new_itemitem.copy()# 自动补全 input 字段ifinputnotinnew_item:new_item[input]# 确保必须字段存在可选加固ifinstructionnotinnew_item:new_item[instruction]ifoutputnotinnew_item:new_item[output]fixed_data.append(new_item)# 保存修复后的数据withopen(output_path,w,encodingutf-8)asf:json.dump(fixed_data,f,ensure_asciiFalse,indent2)print(f✅ 数据集修复完成)print(f 原始文件{input_path})print(f 修复文件{output_path})print(f 处理条数{len(fixed_data)})print(f 修复内容自动添加了缺失的 input 字段空字符串)# 在这里修改你的文件路径 if__name____main__:# 替换成你的数据集路径相对路径/绝对路径都可以YOUR_DATASET_PATHruozhiba_qa.json# 运行修复fix_llama_factory_dataset(YOUR_DATASET_PATH)最后点击开始训练就好第一次可能会下载模型之类的如果卡住了可以看看命令行的日志。