Ollama 本地大模型微调实战(三)LoRA 挂载部署 + Hermes 电力模型全自动自我进化闭环
目录Ollama 本地大模型微调实战三LoRA 挂载部署 Hermes 电力模型全自动自我进化闭环前言一、Modelfile 编写把 LoRA 接入 Ollama 运行1.1 文件说明1.2 电力专用 Modelfile 完整模板1.3 打包生成自定义 Ollama 模型1.4 模型调用与常用管理命令二、两种部署模式对比按需选择模式 1基座 外挂 LoRA推荐日常办公使用模式 2LoRA 权重合并进 GGUF适合分发、单机固定使用三、Hermes 电力模型全自动自我进化整套方案3.1 进化闭环四步逻辑3.2 电力专属自动生成 过滤完整 Python 脚本3.3 完整一轮进化操作流程四、高频问题汇总 解决方案整套三篇全系列终篇总结前言第二篇我们已经训练得到了电力专属 LoRA 权重文件本篇分为两大核心板块将 LoRA 适配器挂载进 Ollama编写 Modelfile 打包出可直接运行的国网电力私有模型讲解日常使用、权重合并两种部署方案搭建 Hermes 专属自我进化脚本实现「模型自产电力数据→自动校验打分过滤劣质样本→生成新训练集→再次微调迭代」闭环让你的本地电力模型越使用专业精度越高。一、Modelfile 编写把 LoRA 接入 Ollama 运行1.1 文件说明在 LoRA 文件夹同级目录新建文件文件名固定为Modelfile无后缀、大小写不能修改。 Hermes 模型使用|im_start|标准对话格式模板必须严格原样书写修改格式会造成回答乱码、输出截断。1.2 电力专用 Modelfile 完整模板# 绑定ollama本地原始基座模型 FROM hermes3:8b # 加载上一章训练好的电力LoRA适配器填写你的文件夹绝对/相对路径 ADAPTER ./power_hermes_lora # Hermes官方对话模板禁止改动 TEMPLATE |im_start|system {{ .System }} |im_end| |im_start|user {{ .Prompt }} |im_end| |im_start|assistant # 电力场景推理参数配置低温度保证回答严谨杜绝编造虚构规程 PARAMETER temperature 0.2 PARAMETER top_p 0.6 PARAMETER num_ctx 8192 PARAMETER repeat_penalty 1.1 PARAMETER stop |im_end| # 固化全局系统角色匹配电网工作场景 SYSTEM 你是国家电网配网专业在岗工程师所有回答严格依照电力安全工作规程、现场作业规范。故障分析、巡检要求、两票填写、设备试验内容必须写实准确禁止脑补编造不存在的标准与操作流程术语使用国网官方标准叫法。1.3 打包生成自定义 Ollama 模型打开终端进入 Modelfile 所在文件夹执行打包命令# 格式ollama create 自定义模型名称:标签 -f Modelfile ollama create hermes-power:8b -f Modelfile1.4 模型调用与常用管理命令# 交互式对话使用电力模型 ollama run hermes-power:8b # 单次提问快速查询 ollama run hermes-power:8b 配网线路接地故障处理步骤 # 查看本机所有ollama模型 ollama list # 关闭模型进程释放显卡显存 ollama stop hermes-power:8b # 不需要时删除自定义模型 ollama rm hermes-power:8b二、两种部署模式对比按需选择模式 1基座 外挂 LoRA推荐日常办公使用优点一份 Hermes 基座可以挂载电力 LoRA、代码 LoRA、办公 LoRA 多个适配器自由切换原始模型文件不会被修改占用磁盘体积小调试修改 LoRA 不用重新打包基座。缺点迁移给其他人使用时需要同时提供基座文件 LoRA 文件夹两份资料。模式 2LoRA 权重合并进 GGUF适合分发、单机固定使用把 LoRA 权重永久融合进基座模型导出独立 GGUF 文件Modelfile 直接读取本地 GGUF 即可加载不需要额外适配器文件发给他人只需要单个模型文件。 适用场景U 盘携带模型、内网多台电脑部署、交付同事使用。三、Hermes 电力模型全自动自我进化整套方案3.1 进化闭环四步逻辑自生成数据当前版本电力 Hermes 自动批量生成配网、变电、安规类问答数据自校验打分模型以电力专家视角给自己生成的内容评分剔除错误、表述不规范、逻辑混乱的数据数据集落地过滤后的优质数据自动保存为标准 train.json 训练文件迭代升级使用新数据集重新训练新版 LoRA替换 Ollama 模型完成一轮进化迭代。3.2 电力专属自动生成 过滤完整 Python 脚本新建power_self_evolve.py直接运行即可产出进化数据集import torch import random import json from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline # 基础配置 MODEL_ID NousResearch/Hermes-3-8B OUTPUT_TRAIN_JSON ./train_evolve_power.json GENERATE_NUM 20 # 单次自动生成20条原始问答数据 SCORE_THRESHOLD 7 # 保留7分以上的合格电力数据 # 电力题库提问池模型基于这些问题自动作答 power_question_pool [ 配网线路树障清理作业安全措施, 配电变压器异常声响故障排查方法, 电力事故抢修工作票使用要求, 雷雨天气户外线路巡检禁止行为清单, 台区三相负荷不平衡的危害与调整方案, 跌落式熔断器熔断故障判断与更换操作规范, 配电线路污秽区巡检重点检查内容, 工作票办理、许可、终结全流程要求, 电缆线路泡水后的检测试验项目, 配网重合闸动作跳闸处置流程 ] # 加载模型 device cuda if torch.cuda.is_available() else cpu tokenizer AutoTokenizer.from_pretrained(MODEL_ID) tokenizer.pad_token tokenizer.eos_token model AutoModelForCausalLM.from_pretrained( MODEL_ID, device_mapauto, torch_dtypetorch.bfloat16 ) llm_pipe pipeline( text-generation, modelmodel, tokenizertokenizer, max_new_tokens500, temperature0.6, devicedevice ) # 步骤1自动批量生成原始问答数据 def generate_raw_power_data(): raw_list [] for _ in range(GENERATE_NUM): question random.choice(power_question_pool) prompt f|im_start|user\n{question}|im_end|\n|im_start|assistant\n res llm_pipe(prompt)[0][generated_text] answer res.split(|im_start|assistant\n)[-1].replace(|im_end|, ).strip() raw_list.append({question: question, answer: answer}) print(f已生成{len(raw_list)}条原始电力问答数据) return raw_list # 步骤2模型自评打分筛选合格样本 def filter_qualified_data(raw_data): qualified [] score_prompt_template 你是资深国网配电工程师按照0~10分给下面这条问答打分。 打分标准严格符合电力规程、操作流程准确、术语规范、无错误虚构内容为高分。 只允许输出纯数字分数不要任何多余文字。 问题{q} 回答{a} 分数 for item in raw_data: score_prompt score_prompt_template.format(qitem[question], aitem[answer]) score_text llm_pipe(score_prompt, max_new_tokens5)[0][generated_text] try: score int(.join([c for c in score_text if c.isdigit()])) except: score 0 if score SCORE_THRESHOLD: qualified.append({ instruction: item[question], input: , output: item[answer] }) print(f过滤后合格高质量数据{len(qualified)}条) return qualified # 执行一轮进化流程 if __name__ __main__: raw_data generate_raw_power_data() good_data filter_qualified_data(raw_data) with open(OUTPUT_TRAIN_JSON, w, encodingutf-8) as f: json.dump(good_data, f, ensure_asciiFalse, indent2) print(f进化数据集已保存至{OUTPUT_TRAIN_JSON})python power_self_evolve.py运行结束目录会生成train_evolve_power.json可直接代入第二篇的训练代码训练新版 LoRA。3.3 完整一轮进化操作流程执行进化脚本自动生成清洗完毕的新增电力训练数据把新增数据合并进原有数据集使用 QLoRA 训练出新一版 LoRA修改 Modelfile 内 ADAPTER 路径执行ollama create覆盖更新hermes-power:8b模型重复循环运行模型的电力知识、故障处理、规程熟悉度会持续迭代优化。四、高频问题汇总 解决方案挂载 LoRA 后模型回答错乱、乱码 Hermes 对话模板格式被修改严格复制本文 Modelfile 内 TEMPLATE 内容不要自行增删符号。ADAPTER 路径读取失败 使用文件绝对路径文件夹名称、路径不要包含中文适配器目录必须存在 adapter_config.json 文件。自我打分数值不准 降低打分 Prompt 的随机性将打分阶段 temperature 调低至 0.1打分标准描述更加细化。迭代训练后效果没有提升 每次进化累积足够多优质样本单次不要只用几条数据训练Epoch 控制在 3~5避免过拟合。Ollama 调用模型占用显存过高 推理时调低 num_ctx关闭系统内其他占用显卡的程序Arc 显卡可正常适配整套流程。整套三篇全系列终篇总结第一篇厘清底层认知分清表层参数配置与真实权重微调的本质区别弄懂 LoRA 轻量化微调原理避开新手基础误区第二篇落地训练实操完成环境部署、电力数据集规范编写、可视化 / 代码两种方式训练 LoRA 权重文件第三篇完成部署上线 长效进化LoRA 对接 Ollama 打造可用的电力私有大模型搭建自动化迭代闭环实现模型自主学习优化。整套方案基于 Hermes 模型 Ollama 本地运行适配 Arc A770、RTX4060 等普通家用显卡完全适配电网日常工作作业查询、故障分析、安规学习、两票资料查阅等真实工作场景使用。