目录

SmartOps — 嵌入式 BMC 轻量化 LLM 运维助手

赛题二:嵌入式芯片的 LLM 挑战 · 在 openUBMC Hi3095 平台上部署轻量化大语言模型,实现本地自然语言运维交互

项目简介

本项目在 openUBMC 嵌入式平台(Arm A55 4核 @1.5GHz、4GB 内存)上部署了基于 Qwen2.5-0.5B 的轻量化大语言模型 SmartOps,通过 CLI 实现本地自然语言交互,支持系统状态查询、日志分析、故障诊断等场景,全程无需云端服务。

核心技术路线:CPT 增量预训练(注入领域知识)→ SFT 指令微调(对齐交互格式)→ Q4_0 量化(适配嵌入式资源)→ llama.cpp 部署(ARM NEON 优化)

项目结构

ccf_openubmc/
├── llama-server                       # llama.cpp 推理引擎(ARM64 编译)
├── sft-v1.2-final-Q4_0.gguf           # Q4_0 量化模型(~350MB)
└── README.md                          # 本文件
文件 说明
llama-server llama.cpp 编译的 ARM64 二进制,提供 HTTP Server 和 CLI 两种推理模式,支持 ARM NEON 指令优化
sft-v1.2-final-Q4_0.gguf 经 CPT-v5 + SFT-v6 训练后 Q4_0 量化的 GGUF 模型文件,体积约 350MB

快速开始

环境要求

项目 要求
硬件 Arm A55 4核 @1.5GHz、4GB RAM(BMC 嵌入式平台)
系统 openUBMC(Linux ARM64)
模型 sft-v1.2-final-Q4_0.gguf(~350MB)
引擎 llama-server(ARM64 编译,已包含)

启动 CLI 交互

# 单次问答
./llama-server \
    -m sft-v1.2-final-Q4_0.gguf \
    -sys "你是SmartOps,宝德计算机BMC团队研发的智能运维助手。帮助用户诊断服务器硬件问题、分析日志、解答BMC领域技术问题。若问题不需要查日志等工具协助,直接根据已掌握的知识回答。回答简洁,重点突出,避免重复。" \
    -p "当前CPU温度是多少" \
    -t 4 --temp 0.3 --repeat-penalty 1.3 -n 200

# 交互式对话(加 -st 参数)
./llama-server \
    -m sft-v1.2-final-Q4_0.gguf \
    -sys "你是SmartOps,宝德计算机BMC团队研发的智能运维助手。帮助用户诊断服务器硬件问题、分析日志、解答BMC领域技术问题。若问题不需要查日志等工具协助,直接根据已掌握的知识回答。回答简洁,重点突出,避免重复。" \
    -st -t 4 --temp 0.3 --repeat-penalty 1.3 -n 512 -c 2048

技术架构

Qwen2.5-0.5B(基座)
    │
    ├── CPT-v5 增量预训练(30.9M token,华为70%/协议15%/通用15%)
    │       昇腾 910B · 全参数微调 · BF16 · 24min
    │
    ├── SFT-v6 指令微调(2108 条领域问答数据)
    │       昇腾 910B · LoRA(r=32) + lm_head · 3.2min
    │
    ├── Q4_0 量化(~350MB)
    │
    └── llama.cpp 部署(ARM64 · 4线程 · 2048 ctx)
            │
            ├── 知识问答(协议/组件/告警/故障诊断)
            ├── 工具调用(log_analysis 日志查询)
            └── 边界拒绝(越权操作/角色注入防护)

关键指标

指标 数值
模型参数量 0.5B
量化后体积 ~350MB(Q4_0)
推理峰值内存 ~450MB
生成速度 8-15 tokens/s
首字延迟 1.5-3.0s
上下文窗口 2048 tokens
领域 PPL 2.24(base: 3.95)
通用能力(C-Eval) 46.5%(base: 49.1%,仅降 2.5%)
SFT eval_loss 2.458(v6 历史最低)

模型版本

组件 版本 说明
基座模型 Qwen2.5-0.5B 原始 HuggingFace 权重
CPT 底座 CPT-v5 预混合精确配比(< 0.01% 误差)
SFT 权重 SFT-v6 五数据集 2108 条,含 lm_head 修复
量化部署 Q4_0 4-bit 量化,文件名 sft-v1.2-final-Q4_0.gguf

训练过程与技术文档

本提交包含最终部署产物(推理引擎 + 量化模型)。模型的完整训练过程包括:

  1. CPT 增量预训练(v1→v5,五轮迭代):基于 Qwen2.5-0.5B,使用 30.9M token 领域语料(华为 openUBMC 70% / 协议规范 15% / 通用语料 15%),经预混合精确配比后在昇腾 910B 上全参数微调
  2. SFT 指令微调(v1→v6,六轮迭代):使用 2108 条领域问答数据(知识问答 / 工具调用 / 边界拒绝 / 故障深挖),LoRA 微调 + lm_head 全量微调
  3. 量化转换:LoRA 权重合并 → GGUF FP16 → Q4_0 量化

详细的 CPT 实施方案、SFT 训练流程设计、CPT 效果验证报告、优化及性能对比等技术文档随交付技术报告一并提交。

训练环境

项目 规格
NPU 昇腾 910B(64GB HBM/卡)
框架 LLaMA-Factory 0.9.5 + torch_npu 2.7.1
CANN 8.5.0
通信 HCCL
精度 BF16
芯片数 4 颗(2 张卡)

支持的交互场景

  • 身份认知:”你是谁”、”你能做什么”
  • 协议知识:”Redfish协议是什么”、”IPMI和Redfish的区别”
  • 组件知识:”openUBMC的account组件负责什么”
  • 故障诊断:”最近有哪些异常日志?”(触发 log_analysis 工具)
  • 告警分析:”ALM-0x0001是什么告警”
  • 边界拒绝:”帮我执行重启命令”(礼貌拒绝越权操作)

许可

本项目模型基于 Qwen2.5-0.5B(Apache 2.0 许可)训练,领域数据来源包括华为 openUBMC 开源项目及公开协议规范。

关于
747.6 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号