目录
Ollama 本地大模型微调实战(二)手把手实操:环境部署 + 电力数据集制作 + QLoRA 训练产出 LoRA 权重
五、方式一:LLaMA-Factory 网页可视化训练(新手首选,不用手写代码)
六、方式二:原生 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 --version
2.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:8b
Ollama 模型本地存放路径:
- 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 全自动自我进化闭环搭建,实现模型自主生成电力数据、自我打分、迭代变强。
手把手实操:环境部署 + 电力数据集制作 + QLoRA 训练产出 LoRA 权重&spm=1001.2101.3001.5002&articleId=163412726&d=1&t=3&u=7637c078d93e42dd9209d6884e797f1a)
242

被折叠的 条评论
为什么被折叠?



