如何用真实业务场景和数据训练领域模型?打造可视化界面,让老板直观见证效果提升!

如何用真实业务场景和数据训练领域模型?打造可视化界面,让老板直观见证效果提升!
能用真实业务场景和数据训练领域模型弄个界面让老板看得见效果本篇一条龙跑通六科室中文医疗数据清洗约 79 万→ ChatML 格式化 → Unsloth 4-bit QLoRA 训练 → 合并 LoRA → 挂上 FastAPI再用一个 ChatGPT 风格的 Web同一题一键切换「微调前 / 微调后」流式输出带计时和 token 计数。训后医疗 LoRA 输出文中只贴关键代码片段。需要配套源码、数据集的同学点❤️ 点赞 关注我私发完整工程。通用模型为什么不够会说话 ≠ 像领域助手。差的是口径和表达习惯不是「多搜几篇百科」。RAG微调参数不变会变LoRA擅长新知识、可追溯说话方式、任务格式顺序先试RAG 不够再上本篇有六科室问答对目标是学「医生怎么答」→SFT LoRA。案例说明项目选择模型Qwen2.5-7B-Instruct 4-bit QLoRAUnsloth数据六科室中文医疗 CSV → ChatML messages训练TRLSFTTrainerSFTConfigpacking / assistant_only_loss交付LoRA~154 MiB或合并模型 FastAPI Web一键切微调前/后环境准备3.1 创建环境conda create -n medical-sft python3.11 -yconda activate medical-sft# PyTorch 建议 cu124pip install torch2.5.1 torchvision0.20.1 torchaudio2.5.1 \ --index-url https://download.pytorch.org/whl/cu124pip install -r requirements.txt3.2 项目配置用.env统一管理BASE_MODEL_PATH/root/autodl-tmp/models/models/Qwen--Qwen2.5-7B-Instruct/snapshots/masterMERGED_MODEL_PATH./outputs/merged_modelLORA_ADAPTER_PATH./outputs/lora_adapterRAW_DATA_DIR./datasetsPROCESSED_DATA_DIR./data/processedN_PER_DEPT20000 # 每科采样数调这个控制数据量MAX_CHAR_LEN600 # askanswer 总字符上限模型下载ModelScope 国内快from modelscope import snapshot_downloadmodel_dir snapshot_download(Qwen/Qwen2.5-7B-Instruct, cache_dir/root/autodl-tmp/models/)print(model_dir) # 记下这个路径填到 .env 的 BASE_MODEL_PATH数据六科室 CSV → ChatML JSONL原始是六科室 CSV内科 / 外科 / 儿科 / 肿瘤 / 妇产 / 男科合计约79 万条。注意两点编码很多文件是 GBK / GB18030配套脚本里做了编码回退。别一上来全量训长度过滤 → 去重 →每科抽 2 万→ 约12 万条再切 train/val。bash scripts/01_build_data.sh# 想加大N_PER_DEPT30000 bash scripts/01_build_data.sh# 输出data/processed/{train.jsonl, val.jsonl, stats.json}每行是 ChatMLmessagessystem / user / assistant质量上记住脏数据会原样进模型正式训可再混一点通用指令领域:通用 ≈ 1:1并留几十条固定题当金标准。{ messages: [ {role: system, content: 你是一名专业的中文医疗助手请基于医学知识为患者提供准确、严谨的回答并在必要时建议就医。}, {role: user, content: 我最近总是胃疼可能是什么原因}, {role: assistant, content: 胃疼的原因较多常见包括饮食不当、情绪紧张、慢性胃炎、胃溃疡等…} ]}训练格式ChatML本篇走 Qwen 原生ChatMLmessages交给apply_chat_template训练和推理同一套格式EOS / 特殊 token 不用手拼。def formatting_func(examples): msgs examples[messages] if msgs and isinstance(msgs[0], dict): return [tokenizer.apply_chat_template(msgs, tokenizeFalse, add_generation_promptFalse)] return [tokenizer.apply_chat_template(m, tokenizeFalse, add_generation_promptFalse) for m in msgs]加载模型 挂上 LoRAfrom unsloth import FastLanguageModelmodel, tokenizer FastLanguageModel.from_pretrained( model_name args.base_model, # 从 .env 读取 max_seq_length 2048, dtype None, # 自动选 bf16 / fp16 load_in_4bit True, # 7B 模型 24GB 卡宽裕)model FastLanguageModel.get_peft_model( model, r 16, lora_alpha 16, lora_dropout 0, target_modules [q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj], # 7 个Attention MLP 都调 bias none, use_gradient_checkpointing unsloth, # ← 注意是字符串不是 True random_state 3407,)SFTConfig 训练7.1 三个让我查了两小时的坑这三个问题每个都浪费了我两小时以上希望你不要重蹈坑 ①use_gradient_checkpointingunsloth是字符串不是布尔值# ❌ 不报错但不会启用显存直接爆use_gradient_checkpointing True# ✅ Unsloth 要求字符串枚举use_gradient_checkpointing unsloth写True会被静默忽略——PyTorch 的标准 gradient checkpointing 不会触发 Unsloth 的优化路径显存直接多占 30%然后 OOM。不报错、没 warning就直接OOM。坑 ②TRL ≥ 0.12 必须用SFTConfig不能用旧TrainingArgumentspacking、assistant_only_loss、dataset_num_proc这三个参数是SFTConfig专属的。如果你把它写在TrainingArguments里# ❌ 不报错但参数完全不生效from transformers import TrainingArgumentsargs TrainingArguments(packingTrue, assistant_only_lossTrue, ...)模型照样跑loss 照样降——但你以为自己开了「只在 assistant 段算 loss」实际上 loss 覆盖了整个对话system prompt 和用户问题都在反向传播。效果打折扣还不自知这是最坑的。坑 ③全量数据 × 多 epoch 步数爆炸69.6 万去重候选如果全量 3 epochRTX 4090 要跑十几个小时。所以先 12 万 × 1 epoch 验证效果大了再扩。7.2 关键训练配置盯这几个就够packing、assistant_only_loss、用 epochs 时max_steps-1、save_steps方便断点续训。其余默认 / 见源码。from trl import SFTConfig, SFTTrainertraining_args SFTConfig( per_device_train_batch_size 2, gradient_accumulation_steps 4, num_train_epochs 1, max_steps -1, # 用 epochs 时设 -1 learning_rate 2e-4, optim adamw_8bit, save_steps 500, save_total_limit 2, output_dir ./outputs/lora_adapter, packing True, # 短问答加速 assistant_only_loss True, # 只在回答段算 loss max_length 2048,)trainer SFTTrainer( model model, processing_class tokenizer, train_dataset train_dataset, eval_dataset val_dataset, args training_args, formatting_func formatting_func,)trainer.train()7.3 执行节奏先 dry-run 再正式# Step 1: Dry-run200 条 × 10 steps~3 分钟验证全链路bash scripts/02_train.sh --dry-run# Step 2: 正式训练RTX 4090 约 2.1 小时bash scripts/02_train.sh# Step 3: 中断续训bash scripts/02_train.sh --resume-from outputs/lora_adapter/checkpoint-500正式开训后按这个顺序看日志就行① 训练起来了总步数、可训参数占比、预计约 2 小时② loss 在动盯整体趋势单步抖动正常③ 卡有没有吃满Util 拉满才说明没闲着微调时 GPU 使用情况④ 训完落盘LoRA 写到outputs/lora_adapter训练完成保存权重为什么要 dry-rundry-run 用 200 条数据 10 步跑完全链路数据加载 → ChatML 格式化 → 前向 → loss → 反向3 分钟把雷排完后续放心微调。效果验证同一个问题两个答案我们用同一道题、同一个 system prompt、同一套生成参数对比基座和医疗 LoRA 的输出。推理代码from transformers import TextStreamerFastLanguageModel.for_inference(model)def ask(question: str): messages [ {role: system, content: 你是一名专业的中文医疗助手请基于医学知识为患者提供准确、严谨的回答并在必要时建议就医。}, {role: user, content: question}, ] text tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) inputs tokenizer(text, return_tensorspt).to(cuda) _ model.generate(**inputs, streamerTextStreamer(tokenizer), max_new_tokens512, temperature0.7, top_p0.9, repetition_penalty1.1)ask(我最近总是感觉头晕应该怎么办)8.1 训前基座 Qwen2.5-7B-Instruct风格偏通用健康建议读起来像从百科搜出来的原因罗列 生活方式提醒 「不适就医」四平八稳缺少问诊口径。训前基座输出8.2 训后加载 lora_adapter口径更像中文医疗问答短句、分情形给建议不再是百科腔。说明学的是领域说话方式不只是换了个 system prompt。训后医疗 LoRA 输出怎么才算「证明更好了」别靠感觉。准备一份固定测试集30~50 条覆盖六科室 不同难度每次训完跑一遍专科术语是否正确有没有胡开药医疗红线该劝就医的有没有劝有没有幻觉编造不存在的药物 / 病因部署FastAPI Web简要把模型变成一个老板、同事、用户都能打开浏览器试的 Chatbot而且能一键对比微调前后的效果。bash scripts/03_merge.sh # 可选合并完整模型bash scripts/04_serve.sh # 启动后访问 http://localhost:8000Web 界面功能清单功能说明 模型切换顶栏微调前 / 微调后按钮一键切换 流式输出打字机效果逐字显示支持 Markdown⏱ 计时统计每条回答尾部显示耗时 token 数 停止生成流式中途可中断 多轮对话前端 localStorage 分模型独立存历史 清空对话一键清空当前模型历史 示例问题首页 4 个预设医疗问题点击即问⚠ 免责声明顶置橙色 banner全页面始终可见完整执行链路回顾整个流程 4 个脚本一条龙01_build_data.sh → 02_train.sh → 03_merge.sh → 04_serve.sh (~3 min) (~2.1 h) (~3 min) (启动 ~10s)最后对于正在迷茫择业、想转行提升或是刚入门的程序员、编程小白来说有一个问题几乎人人都在问未来10年什么领域的职业发展潜力最大答案只有一个人工智能尤其是大模型方向当下人工智能行业正处于爆发式增长期其中大模型相关岗位更是供不应求薪资待遇直接拉满——字节跳动作为AI领域的头部玩家给硕士毕业的优质AI人才含大模型相关方向开出的月基础工资高达5万—6万元即便是非“人才计划”的普通应聘者月基础工资也能稳定在4万元左右。再看阿里、腾讯两大互联网大厂非“人才计划”的AI相关岗位应聘者月基础工资也约有3万元远超其他行业同资历岗位的薪资水平对于程序员、小白来说无疑是绝佳的转型和提升赛道。如果你还不知道从何开始我自己整理一套全网最全最细的大模型零基础教程我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的大模型学习资源希望能帮到你。扫码免费领取全部内容最后1、大模型学习路线2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、 入门必看大模型学习书籍文档.pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里4、AI大模型最新行业报告2026最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5、面试试题/经验【大厂 AI 岗位面经分享107 道】【AI 大模型面试真题102 道】【LLMs 面试真题97 道】6、大模型项目实战配套源码适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容3、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】