从零跑通大模型全流程:基于Qwen3‑0.6B微调中医模型并Docker部署
文章目录前言1. 先给你们看看最终成品1.1 四个核心产物1.2 先把定位说清楚2. 我的本地环境家底2.1 硬件软件配置2.2 文件存放思路3. 整个流程就是一条流水线3.1 四个核心脚本3.2 完整数据流4. 数据清洗先定好模型该学啥4.1 原始数据啥成色4.2 我是怎么筛数据的4.3 两个不能省的细节5. LoRA微调花小钱办大事5.1 LoRA到底是啥逻辑5.2 我的参数配置6. 训练参数是怎么琢磨出来的6.1 核心配置拆解6.2 为啥要这么设6.3 为啥只训不到半个epoch7. 训练结果到底咋样7.1 耗时和指标7.2 实际效果啥水平8. 为啥要把LoRA合并进去8.1 LoRA文件不能单独跑8.2 合并就是一步到位9. 转成GGUF格式干啥用9.1 GGUF有啥好处9.2 转换过程很简单10. 怎么塞进Ollama里10.1 先写个Modelfile10.2 注册模型就完事11. Docker部署是怎么玩的11.1 卷映射是核心技巧11.2 端口和GPU配置12. Open WebUI怎么接上去12.1 配置有个小坑12.2 完整访问链路13. 踩过的那些坑说多了都是泪13.1 Docker路径格式坑13.2 上下文Token莫名暴涨13.3 上下文长度的隐形坑13.4 最容易踩的认知坑14. 折腾完这一圈我真正收获了啥14.1 值钱的不是模型是链路14.2 给新手的真心话建议15. 接下来打算咋迭代15.1 先把数据质量提上去15.2 扩充能力慢慢迭代P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看 传送门https://blog.csdn.net/qq_34419312前言最近手痒想完整走一遍大模型从训练到部署的全流程。不是调个API那种过家家也不是下个模型跑两下就完事是从数据清洗到Docker部署一条龙全给它跑通。选了中医领域试水拿Qwen3-0.6B搞了个试点模型。先把丑话说在前头这就是个纯学习用的模型不能看病开药方别回头有人拿着输出的方子去药店抓药再来找我报销医药费我这显卡钱还没赚回来呢。1. 先给你们看看最终成品1.1 四个核心产物折腾完一圈手里攥着四个东西各有各的用处。第一个是LoRA适配器就40.4兆相当于给原模型打了个中医补丁只存了参数差值不能脱离底座单独跑。第二个是合并后的完整Hugging Face模型1.2G左右把补丁和底座焊死在了一起。第三个是BF16格式的GGUF文件专门给本地推理工具用的单文件便携得很。最后一个是注册好的Ollama模型叫wo-x-tcm:pilot配个网页界面就能直接聊天。1.2 先把定位说清楚这不是从零训出来的基础大模型说准确点是基于Qwen3-0.6B的中医领域LoRA指令微调模型。说白了就是给通用模型补了点中医专业课不是从头培养个老中医。只能用来学习中医文献但凡涉及医疗决策一律靠边站别拿它当在线问诊用。2. 我的本地环境家底2.1 硬件软件配置操作系统是Windows靠Docker Desktop跑Linux容器。显卡是RTX 5070说不上顶配但折腾个0.6B的小模型完全够用。总不能为了个试点项目直接上旗舰卡吧钱包第一个不同意。Python单独开了个conda环境PyTorch 2.13.0配CUDA 13.0Transformers、PEFT、TRL这些常用库都拉到了对应版本避免版本不兼容踩坑。2.2 文件存放思路所有大体积文件全塞D盘C盘那点空间装个系统都够呛再塞模型分分钟红盘给你看。分了四个文件夹各司其职数据集放一起模型文件放一起项目代码放一起conda环境单独放。分门别类省得找文件找半小时训练还没开始先给自己整emo了。3. 整个流程就是一条流水线3.1 四个核心脚本整个项目核心就四个Python文件各司其职一点不乱。prepare_data.py管数据清洗整理train_lora.py负责微调训练evaluate.py做效果对比merge_lora.py用来合并权重。就像工厂流水线一个环节接一个环节哪个环节出问题直接定位到对应脚本不用到处瞎找。3.2 完整数据流整条链路顺下来特别清晰原始数据洗干净划分成训练验证测试集丢给底座模型加LoRA训练产出适配器合并成全量模型转成GGUF格式最后塞进Ollama用Docker部署配个网页交互界面。跟搭乐高似的一块一块往上拼拼完还能拆下来调整灵活得很。4. 数据清洗先定好模型该学啥4.1 原始数据啥成色原始数据用的是公开的Baize TCM V3一共十五万七千多条记录看着量挺大其实水分不小。就跟你买了一大包零食拆开一看一半都是包装袋真正能吃的没多少。4.2 我是怎么筛数据的第一步先卡长度太短太长的都直接pass。第二步筛领域明显不是中医内容的直接踢出去一下就干掉了七万多条。第三步最关键但凡涉及开药、处方、剂量、选穴位这种行动性医疗问题全给过滤掉。我可不想训出个上来就给人开药方的“江湖郎中”模型第一步先学理论别上来就想着行医。最后再去重十五万多条洗下来只剩三万九出头的合格数据。首轮实验我也没贪多就挑了两千条训练两百条验证五十条测试。先跑通流程比啥都强。4.3 两个不能省的细节所有合格数据统一转成聊天格式系统提示词加用户问题加助手回答模型就照着这个结构学知道看到问题该输出啥。随机种子必须固定死。不然每次训练数据集划分都不一样结果根本没法对比就跟考试每次换题库你根本不知道自己进步没进步一样。5. LoRA微调花小钱办大事5.1 LoRA到底是啥逻辑要是全量微调所有参数都要算梯度存状态大模型直接能把显存干冒烟。LoRA就聪明多了原模型参数全冻住不动只训练两组低秩小矩阵。相当于给模型打补丁改动小见效快显存占用还低典型的四两拨千斤。5.2 我的参数配置秩设了16lora_alpha设32dropout0.05注意力层和前馈网络的全量模块都加上了LoRA。算下来可训练参数才一千万出头只占总参数的1.6%左右这点参数对显卡来说完全没压力。这次用的是普通BF16精度没上QLoRA。毕竟模型小显卡扛得住没必要搞量化徒增麻烦。6. 训练参数是怎么琢磨出来的6.1 核心配置拆解核心训练参数我给你们列一下都是踩坑踩出来的经验。最大训练步数120步单卡批次大小1梯度累积步数8算下来有效批次大小是8。学习率1e-4用余弦调度最大序列长度512。打开了assistant_only_loss也开了梯度检查点BF16混合精度也安排上。6.2 为啥要这么设批次大小设1纯粹是为了省显存靠梯度累积凑有效批次属于是显存不够步数来凑。只算助手回答的损失更合理总不能让模型学着复述用户的问题吧那不成复读机了。梯度检查点就是用计算换显存反正显卡闲着也是闲着多算点总比显存溢出强。整套配置下来峰值显存才2.3G离谱的省。6.3 为啥只训不到半个epoch两千条训练数据有效批次8完整跑一遍要250步。我就训了120步算下来才0.48个epoch连半圈都没跑完。没办法这就是个试点版本先验证整条流程能不能跑通。总不能第一次就训个几天几夜最后发现部署环节出问题那可真是竹篮打水一场空。7. 训练结果到底咋样7.1 耗时和指标整个训练跑下来花了不到7分钟喝杯茶的功夫就完事了速度比我预想的快多了。训练损失从最开始的2.38降到了1.96验证损失也稳步往下走没出现发散的情况。说明训练没崩模型确实在学东西。7.2 实际效果啥水平拿同一批问题分别测了原始模型和微调后的模型差别还是挺明显的。微调后的模型说话确实更有中医那味儿专业术语用得也到位风格一下就对齐了。但冷门知识点还是会胡说八道也就是大家常说的幻觉。说白了就是你问它基础理论它能跟你头头是道唠半天你要是问个偏门的草药学名它可能当场就给你现编一个跟酒桌上吹牛皮的人似的不懂也能给你说的跟真的一样。所以说少量SFT只能改个说话风格真要知识靠谱还得靠可靠知识库和专家审核。别以为损失降了就是模型学会了它可能只是学会了怎么装得像学会了。8. 为啥要把LoRA合并进去8.1 LoRA文件不能单独跑训出来的LoRA适配器就40兆看着小巧便携但它不能脱离底座模型自己运行。就像游戏补丁不能脱离游戏本体玩一样你总不能拿着个补丁文件到处跑到哪都得先装个底座模型太麻烦。8.2 合并就是一步到位把LoRA学到的参数变化合并到底座模型里就生成了一个完整的独立模型。后续转换格式、部署都方便不用每次都额外加载适配器。代码也简单几行调用就搞定合并完直接保存成标准的Hugging Face格式。9. 转成GGUF格式干啥用9.1 GGUF有啥好处Hugging Face格式是一堆零散文件权重、配置、分词器分开装传起来、部署起来都麻烦。GGUF就不一样了一个文件把所有东西都装进去了模型张量、结构元数据、词表、聊天模板应有尽有。特别适合llama.cpp、Ollama这类本地推理工具拎包就能用。9.2 转换过程很简单用llama.cpp自带的转换脚本一行命令的事。指定好输入的模型目录和输出文件精度选BF16就行。这次没做量化压缩先保持完整精度等后续再慢慢对比不同量化级别的速度和效果差异。10. 怎么塞进Ollama里10.1 先写个ModelfileOllama靠Modelfile来定义模型。里面要写清楚GGUF文件的路径设置生成参数温度0.3top_p 0.8重复惩罚1.05上下文长度拉到8192。最后再写上系统提示词给模型定好规矩明确它只能用来学习文献不能做医疗建议。就跟给模型写个员工手册似的告诉它该怎么干活什么不能干。10.2 注册模型就完事写好Modelfile一条ollama create命令就搞定注册给模型起个名字绑定好配置。注意啊这一步不是重新训练模型就是给模型登个记上户口以后调用名字就能直接用。很多新手以为这步会训模型站那等半天纯纯浪费时间。11. Docker部署是怎么玩的11.1 卷映射是核心技巧很多人用Docker跑Ollama上来就想把模型拷进容器里那多傻啊。直接用卷映射把Windows本地的目录映射到容器内部容器直接读本地文件不用复制来复制去省时间还省空间。我一开始差点犯傻想把1个多G的模型拷进容器后来才反应过来白瞎我差点等半天传输进度。GGUF目录和Ollama模型目录分别映射只读权限给模型文件安全得很。11.2 端口和GPU配置GPU必须直通给容器不然纯CPU推理能急死人说句话等半分钟。端口也做了映射本地原生Ollama用11434Docker版用11435互不干扰想用哪个用哪个。12. Open WebUI怎么接上去12.1 配置有个小坑Open WebUI也直接跑在Docker里不用单独装特别省事。配置的时候要注意环境变量里的Ollama地址得写Docker内部的服务名不能写127.0.0.1。不然它找的是自己容器里的地址根本连不上Ollama。很多人第一次配都栽在这。12.2 完整访问链路浏览器访问本地3000端口就能打开界面。请求链路也很清晰浏览器发请求给Open WebUI它通过Docker内部网络转发给Ollama最后交给显卡推理结果再原路返回。用起来跟在线大模型没啥区别但是所有数据全在本地安全感直接拉满。13. 踩过的那些坑说多了都是泪13.1 Docker路径格式坑Windows的路径是反斜杠容器里是Linux的正斜杠同一个文件两边的路径写法完全不一样。我一开始图省事直接把Windows的路径写进Docker用的Modelfile里结果死活找不到文件排查了半天才反应过来。合着俩系统路径格式不一样白折腾半天。13.2 上下文Token莫名暴涨有次我就输了“咽喉痛吃什么”五个字结果界面显示输入快六千Token。我当时都懵了难道我输入的是无字天书后来才发现是Open WebUI偷偷给我塞了一堆内置工具的定义知识库、搜索、日历、笔记啥的全算进上下文里了。合着我聊个天后台还带了个工具人团队是吧我没叫它们啊自己就跑进来占位置了。解决办法也简单给模型建个专属预设把内置工具关了瞬间就清净了。13.3 上下文长度的隐形坑Qwen3-0.6B本身支持四万多Token的上下文但Ollama默认只给4096。一开始我输入长点的内容就报错还以为模型不行后来才发现是配置没改。把Modelfile里的num_ctx调到8192重新注册模型立马就好了。这个参数藏得深很多人容易忽略。13.4 最容易踩的认知坑很多人觉得训练损失一直降模型就越来越厉害。大错特错损失下降只能说明模型越来越会模仿训练数据里的回答不代表答案就是对的。训练数据里要是有错的模型学的比谁都快。就跟学生背题一样答案背得滚瓜烂熟你换个题型他就不会了甚至错题他也照背不误。所以别光看损失曲线好看就自我感动真要靠谱还得专家评测。14. 折腾完这一圈我真正收获了啥14.1 值钱的不是模型是链路说实话这个模型本身没啥大不了的就是个试点玩具能力有限。真正值钱的是我把从数据处理到模型训练再到格式转换、容器部署、问题排查的整条工程链路完完整整跑通了一遍。每个环节是干啥的会出啥问题怎么解决门儿清了。14.2 给新手的真心话建议要是你也想从零学本地大模型别上来就整7B、14B的大模型纯纯给自己找罪受。先整个0.5B到1B的小模型把全流程跑通再说。能跑通、能复现、能评测比一开始就追求大参数重要多了。不然上来就整个大模型显存不够报错部署也不会最后打击信心得不偿失。15. 接下来打算咋迭代15.1 先把数据质量提上去现在的数据都是公开的没经过人工审核质量参差不齐。下一步打算人工抽检修订样本再加一些安全相关的内容比如儿童、孕产妇用药禁忌这些。安全永远是第一位的尤其是和医疗沾边的东西马虎不得。15.2 扩充能力慢慢迭代打算建一个完全隔离的专家测试集再加个中医古籍RAG知识库弥补模型知识不准的问题。训练数据也打算扩到一万条以上再试试继续预训练的效果。后面也会对比下LoRA、QLoRA不同方式还有不同量化格式的差异慢慢优化。反正路已经走通了剩下的就是慢慢填内容了。最后给想动手的朋友提个醒整个项目的核心文件顺序就是数据准备脚本、训练脚本、评测脚本、合并脚本再加上Modelfile和compose配置文件。顺着这个顺序看就能把整个流程摸得明明白白。踩坑不可怕踩过一次下次就会了动手试试比看十篇教程都管用。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/qq_34419312

相关新闻

零基础Milvus快速上手指南,手把手搭建RAG向量检索

零基础Milvus快速上手指南,手把手搭建RAG向量检索

文章目录前言1 环境准备1.1 Windows下用Docker部署Milvus1.2 安装Python依赖1.3 准备嵌入模型API2 连接Milvus并创建数据库2.1 建立客户端连接2.2 创建自定义数据库3 创建Collection集合3.1 检查并创建集合3.2 查看集合元数据4 准备嵌入模型4.1 初始化模型4.2 生成测试向量5 插…

2026/9/23 3:09:10 阅读更多 →
四端协同架构下的食堂数字化采购系统设计与实现——以好伙狮数字食堂为例

四端协同架构下的食堂数字化采购系统设计与实现——以好伙狮数字食堂为例

去年年底参与了一个中型连锁食堂的数字化改造项目,甲方信息科提了一个很明确的需求:采购验收环节要从纯人工模式升级为全流程数字化管理,覆盖下单、配送、称重验收入库一整条链路,而且数据的完整性和可追溯性必须经得起审计级别的…

2026/9/23 20:46:29 阅读更多 →
GTNH汉化终极指南:3步快速实现完美中文界面

GTNH汉化终极指南:3步快速实现完美中文界面

GTNH汉化终极指南:3步快速实现完美中文界面 【免费下载链接】Translation-of-GTNH GTNH整合包的汉化 项目地址: https://gitcode.com/gh_mirrors/tr/Translation-of-GTNH 还在为GTNH整合包的英文界面而烦恼吗?想要在复杂的格雷科技世界中畅游却因…

2026/9/23 19:26:04 阅读更多 →

最新新闻

传送带异物检测数据集实战:从COCO JSON到YOLO训练

传送带异物检测数据集实战:从COCO JSON到YOLO训练

简介:这是一套面向工业传送带异物检测任务的目标检测数据集,适合计算机视觉算法工程师、科研人员及高校相关专业学生用于模型训练与效果验证。数据集标注了铁棍、垃圾两类异物,全部采用COCO JSON格式,能直接接入主流检测框架。zip…

2026/9/23 20:46:04 阅读更多 →
异步电动机工作原理新手避坑指南

异步电动机工作原理新手避坑指南

异步电动机工作原理新手避坑指南 刚接触电机控制时,你是不是也被那些旋转磁场公式绕晕了?配置环境就卡半天,连个简单的启停都搞不定,这种挫败感我太懂了。很多新手在学异步电动机工作原理时,容易陷入“只看公式不看物理过程”的误区,结果代码写了一堆,…

2026/9/23 20:46:04 阅读更多 →
SSM书城项目实战:从环境搭建到功能扩展的完整指南

SSM书城项目实战:从环境搭建到功能扩展的完整指南

简介:本资源为基于SSM框架的雅博书城在线系统完整项目包,面向计算机相关专业正在做毕业设计的学生,以及需要Java Web项目实战练习的学习者,也可直接用作课程设计或期末大作业。项目已通过导师指导并高分通过,涵盖管理员…

2026/9/23 20:46:03 阅读更多 →
安装gcc别踩坑,从入门到精通只需3步

安装gcc别踩坑,从入门到精通只需3步

安装gcc别踩坑,从入门到精通只需3步 看了一堆教程还是不会写项目?别急,问题往往出在环境配置上。很多初学者卡在 gcc 安装这一步,明明照着视频敲了命令,结果编译时满屏报错,心态直接崩盘。其实, 安装gcc 只是 C/C++ 开发…

2026/9/23 20:46:03 阅读更多 →
穿越古剑之我是剑灵实战项目避坑指南

穿越古剑之我是剑灵实战项目避坑指南

穿越古剑之我是剑灵实战项目避坑指南 版本升级后 API 全变了,是不是让你瞬间懵圈?别慌,这就是很多新人接手【穿越古剑之我是剑灵】相关模块时的第一道坎。在真实的【实战项目】里,这种“断崖式”的接口变更,往往直接导致线上服务抖动,甚至引发数据…

2026/9/23 20:46:03 阅读更多 →
斑马ZT210打印机标签偏移与ZPL校准实战指南

斑马ZT210打印机标签偏移与ZPL校准实战指南

简介:斑马打印机ZT210配置指南,面向物流、零售、医疗等行业的IT运维人员及打印机使用者,解决驱动安装、端口映射、打印参数调整与字体库导入等日常设置问题。这份文档以图文步骤形式详解了驱动下载安装、Windows 7系统添加本地打印机、选择US…

2026/9/23 20:45:03 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →