Ollama 本地大模型微调实战(二)手把手实操:环境部署 + 电力数据集制作 + QLoRA 训练产出 LoRA 权重
目录
Ollama 本地大模型微调实战(二)手把手实操:环境部署 + 电力数据集制作 + QLoRA 训练产出 LoRA 权重
前言
一、硬件最低适配标准
二、全套环境一键安装命令
2.1 先装好 Ollama 客户端
2.2 深度学习运行依赖
三、拉取训练所用基座模型
四、电力专业数据集规范编写(决定微调最终效果的核心)
4.1 存储格式
4.2 电力数据集示范样本(可直接扩充使用)
4.3 数据集制作硬性要求
五、方式一:LLaMA-Factory 网页可视化训练(新手首选,不用手写代码)
1、启动网页服务
2、页面关键参数配置(固定最优参数,7B/8B 通用)
3、训练产物
六、方式二:原生 Python 训练代码(适合自动化、对接第三章自我进化)
七、本章常见报错解决
本篇总结
前言
上一篇我们厘清了底层原理:依靠外部代码 / LLaMA-Factory 训练 LoRA 权重,Ollama 只负责加载运行。本篇全程落地操作,适配 Arc A770 16G、RTX4060 这类普通消费显卡,目标训练出适配国网工作场景的 Hermes 电力专属 LoRA 文件。 整套流程分为四块:依赖环境安装 → 基座模型拉取 → 电力标准数据集编写 → 两种训练方式(可视化网页、原生 Python 代码)。
一、硬件最低适配标准
| 模型尺寸 | QLoRA 4bit 最低显存 | 推荐硬件 |
|---|---|---|
| Hermes 8B | 8GB 显存(容易爆显存) | 16G 显存(你的 Arc A770 完美运行) |
| Hermes 13B | 12GB 显存起步 | 4070Ti、3090 等高显存显卡 |
全文全部采用 4bit 量化训练,最大限度压缩显存占用,普通家用电脑无需专业算力卡。
二、全套环境一键安装命令
2.1 先装好 Ollama 客户端
Windows/macOS 直接官网下载安装包;Linux 执行这条命令
curl -fsSL https://ollama.com/install.sh | sh # 校验是否安装成功 ollama --version2.2 深度学习运行依赖
打开 CMD / 终端逐条执行安装
# 安装Pytorch CUDA版本 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 大模型训练全套依赖包 pip install transformers datasets peft accelerate bitsandbytes sentencepiece protobuf scipy trl # 拉取可视化训练框架 LLaMA-Factory git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -r requirements.txt三、拉取训练所用基座模型
选用 Hermes3:8b 作为基础模型,上下文理解强、对话格式统一,适配后续自我进化闭环
# Ollama拉取基座模型 ollama pull hermes3:8bOllama 模型本地存放路径:
- Windows:
C:\Users\你的用户名\.ollama\models - Linux:
~/.ollama/models训练读取权重时可以直接引用该路径文件。
四、电力专业数据集规范编写(决定微调最终效果的核心)
4.1 存储格式
新建train.json文件,放置在训练同级目录,使用 Alpaca 标准格式。 字段说明:
- instruction:用户提问(电力问题、工作需求)
- input:补充输入内容,无额外信息填空字符串
- output:标准标准答案,必须严格贴合国网规程、作业规范,禁止编造内容
4.2 电力数据集示范样本(可直接扩充使用)
[ { "instruction": "简述雨天配网户外巡检硬性安全规定", "input": "", "output": "1、雷雨天气立刻终止所有室外巡检作业,人员撤离至坚固建筑物内;2、小雨巡检必须穿戴绝缘雨披、绝缘靴、绝缘手套全套防护用品;3、禁止触碰潮湿杆塔、避雷器、户外端子箱;4、雨后优先排查杆塔基础冲刷、线路树障放电、设备进水受潮缺陷。" }, { "instruction": "解释电力两票三制具体内容", "input": "", "output": "两票:工作票、操作票;三制:交接班制度、设备巡回检查制度、设备定期试验轮换制度,是配网现场作业最基础的安全管理制度。" }, { "instruction": "配网线路频繁跳闸常见故障原因汇总", "input": "", "output": "雷击闪络、树木碰触导线、外力施工破坏线缆、小动物搭接短路、线路覆冰断线、设备绝缘老化击穿、台区负荷过载、避雷器故障击穿。" }, { "instruction": "变压器日常巡视必查项目有哪些", "input": "", "output": "油位与油色是否正常、有无渗漏油现象、套管有无破损放电痕迹、本体有无异响异味、散热风扇运转状态、接地装置完好性、箱体有无锈蚀破损。" }, { "instruction": "工作票终结需要满足哪些条件", "input": "", "output": "现场所有工作人员撤离作业区域、检修临时安全措施全部拆除、现场物料工具清点完毕、设备恢复原有运行状态、双方工作负责人现场确认签字。" } ]4.3 数据集制作硬性要求
- 数量:最低 50 条可用,想要效果稳定建议 200~1000 条高质量问答;
- 内容:覆盖安规、巡检、故障处置、两票管理、变电设备、负荷分析六大方向;
- 质量优先:劣质、错误的回答数据,只会让模型回答更加混乱。
五、方式一:LLaMA-Factory 网页可视化训练(新手首选,不用手写代码)
1、启动网页服务
进入克隆的 LLaMA-Factory 文件夹执行
cd LLaMA-Factory python src/webui.py浏览器自动打开地址:http://127.0.0.1:7860
2、页面关键参数配置(固定最优参数,7B/8B 通用)
- 模型名称:填写本地 hermes3 模型物理路径
- 微调方式:QLoRA(4bit 量化)
- 数据集:上传刚刚编写的 train.json 文件
- 训练超参
- Batch size:2
- 梯度累积步数:2
- 学习率:2e-4
- 训练轮数 epoch:3~5(epoch 过高极易出现过拟合)
- LoRA 秩 r=8,lora_alpha=16
- 其余参数保持默认,点击【开始训练】
3、训练产物
训练结束后输出 adapter 文件夹,内部包含adapter_config.json与safetensors权重文件,这就是我们需要挂载到 Ollama 的电力 LoRA 适配器。
六、方式二:原生 Python 训练代码(适合自动化、对接第三章自我进化)
新建train_power_lora.py,复制下方全部代码,修改文件路径即可直接运行
import torch from datasets import load_dataset from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from peft import LoraConfig, get_peft_model from trl import SFTTrainer # ===================== 自定义配置区 ===================== BASE_MODEL_PATH = "NousResearch/Hermes-3-8B" DATA_JSON_PATH = "./train.json" OUTPUT_LORA_FOLDER = "./power_hermes_lora" # 4bit量化配置,降低显存占用 bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16 ) # LoRA标准配置 lora_config = LoraConfig( r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM" ) # ====================================================== # 加载分词器与模型 tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_PATH) tokenizer.pad_token = tokenizer.eos_token model = AutoModelForCausalLM.from_pretrained( BASE_MODEL_PATH, quantization_config=bnb_config, device_map="auto", trust_remote_code=True ) model = get_peft_model(model, lora_config) # 加载电力训练数据集 train_dataset = load_dataset("json", data_files=DATA_JSON_PATH, split="train") # 组装训练器 trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=train_dataset, dataset_text_field="instruction", max_seq_length=1024, args={ "per_device_train_batch_size": 2, "gradient_accumulation_steps": 2, "learning_rate": 2e-4, "num_train_epochs": 3, "output_dir": OUTPUT_LORA_FOLDER, "fp16": True, "optim": "paged_adamw_8bit" } ) # 执行训练 & 保存LoRA权重 if __name__ == "__main__": print("开始训练电力专属LoRA权重") trainer.train() trainer.save_model(OUTPUT_LORA_FOLDER) print(f"训练完成,LoRA文件存放目录:{OUTPUT_LORA_FOLDER}")运行命令
python train_power_lora.py运行完毕后,当前目录生成power_hermes_lora文件夹,即为可用适配器文件。
七、本章常见报错解决
- 显存溢出:调小 batch_size、缩短 max_seq_length,务必开启 4bit 量化;
- bitsandbytes 报错:更新 CUDA 环境,重新安装对应版本 torch;
- 训练后模型没有专业效果:检查数据集答案是否标准、epoch 数量是否充足;
- 数据集读取失败:json 文件格式严格合法,不要存在多余逗号。
本篇总结
1、完成全套运行环境部署,适配本地独显训练; 2、掌握电力行业数据集标准写法,这是微调效果的根本; 3、提供两套训练方案:可视化界面适合新手,原生代码适合自动化迭代; 4、本章最终产出物:可用的电力 LoRA 适配器文件。
下一篇(第三篇)讲解:Modelfile 挂载 LoRA 打包 Ollama 私有模型 + Hermes 全自动自我进化闭环搭建,实现模型自主生成电力数据、自我打分、迭代变强。
