# CogLang Drug Distill：端侧大模型蒸馏与语法约束的安全查询系统

> 该项目演示了如何将大模型知识蒸馏到1.5B参数的小模型，通过QLoRA微调、GGUF量化和GBNF语法约束，在1GB内存设备上实现药物安全图的CogLang查询生成。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-06-01T08:44:44.000Z
- 最近活动: 2026-06-01T08:54:27.940Z
- 热度: 163.8
- 关键词: 模型蒸馏, 端侧推理, QLoRA, GGUF, GBNF, CogLang, 知识图谱, 语法约束, 量化, 边缘AI
- 页面链接: https://www.zingnex.cn/forum/thread/coglang-drug-distill
- Canonical: https://www.zingnex.cn/forum/thread/coglang-drug-distill
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者**: zhpy2004
- **来源平台**: GitHub
- **原始标题**: coglang-drug-distill
- **原始链接**: <https://github.com/zhpy2004/coglang-drug-distill>
- **发布时间**: 2026-05-31
- **更新时间**: 2026-06-01

## 项目背景：端侧AI的崛起

随着大语言模型（LLM）能力的不断提升，如何将它们部署到资源受限的边缘设备（手机、IoT设备、嵌入式系统）成为业界关注的热点。云端推理虽然强大，但存在延迟高、隐私风险、离线不可用等问题。端侧AI（On-Device AI）正在成为新的技术战场。

然而，直接在端侧运行大模型面临严峻挑战：

- **内存限制**: 手机通常只有4-8GB RAM，留给AI模型的空间可能只有1-2GB
- **算力限制**: 移动端CPU/GPU无法与数据中心GPU相提并论
- **功耗限制**: 持续推理会快速消耗电池
- **安全限制**: 医疗等敏感领域要求零幻觉、可审计的输出

CogLang Drug Distill项目正是针对这些挑战的一个完整技术演示，展示了如何将大模型知识"蒸馏"到足够小、足够快、足够安全的端侧模型。

## 核心架构：教师-学生蒸馏流水线

项目的核心是一个端到端的蒸馏流水线，完整链路如下：

```
大模型教师 → 合成数据生成 → QLoRA微调 → 模型合并 → GGUF量化 → 端侧推理（GBNF语法约束）→ 图查询执行
```

这条流水线涵盖了当前LLM工程的所有关键环节，每个环节都经过精心设计：

### 1. 教师模型生成合成数据

项目使用DeepSeek等大模型作为"教师"，通过`gen_questions_drug.py`自动生成药物领域的问答对。关键设计是"自验证"机制——教师不仅生成问题，还会验证答案的正确性，确保训练数据质量。

### 2. QLoRA高效微调

QLoRA（Quantized Low-Rank Adaptation）是一种参数高效微调技术，冻结原模型权重，只训练少量低秩适配器（Adapter）。这使得在8GB显存上微调1.5B参数模型成为可能，训练时间仅需约8分钟。

### 3. GGUF量化压缩

使用llama.cpp工具链将模型转换为GGUF格式，并进行Q4_K_M量化（4-bit量化）。最终模型大小仅为935 MiB，约1GB内存即可运行。

### 4. GBNF语法约束解码

这是项目最具创新性的设计。CogLang定义了一套图查询中间语言的GBNF（GLLM BNF）语法，llama.cpp在解码时强制模型输出符合语法的CogLang查询。这意味着：

- **语法正确性100%保证**: 模型不可能生成语法错误的查询
- **语义学习简化**: 小模型只需学习"选哪个操作符"和"用什么关系"，无需学习语法结构
- **安全审计**: 所有输出都是可解析、可执行的正式语言

## 领域应用：药物安全知识图谱

项目选择药物安全作为垂直领域，构建了一个小型的药物相互作用知识图谱（约20个节点、21条边）。这个选择很有代表性：

- **高风险领域**: 药物错误可能导致严重后果，对准确性和安全性要求极高
- **结构化数据**: 药物关系天然适合图表示（药物A与药物B有相互作用）
- **查询复杂性**: 需要处理"查询"、"推理"、"断言"等多种操作类型

关键安全设计：**小模型只负责生成查询，从不直接从记忆中回答药物问题**。所有事实都存储在图谱中，模型只是将自然语言翻译为CogLang查询，然后由查询引擎检索答案。这种"神经符号混合"架构从根本上消除了幻觉风险。

## 实验结果与关键发现

项目提供了详细的评估数据，展示了不同配置下的性能：

| 评估场景 | 配置 | 通过率 |
|---------|------|--------|
| 精心设计的OOD测试集 | Q4 + GBNF + SYSTEM_v6d | **80%** (8/10) |
| 真实用户提示（fewshot_v0） | + 少样本示例 | ~47% (9/19) |
| 真实用户提示（fewshot_v1） | + 优化少样本示例 | **~68%** (13/19) |
| 危险写入（读问题上的写操作） | 防护+少样本 | **0** |

这些数据揭示了几个重要洞察：

1. **模型能力 vs 用户获得的能力**: 精心设计的测试集（80%）与真实用户提示（47-68%）之间存在差距，说明提示工程（Prompt Engineering）的重要性。

2. **少样本学习的威力**: 仅通过优化少样本示例（v0→v1），真实场景通过率从47%提升到68%，提升成本几乎为零。

3. **安全护栏有效**: 危险写入测试通过率为0，说明系统的安全机制有效阻止了潜在的破坏性操作。

## 技术细节：训练日志中的宝贵经验

项目的`TRAINING_LOG.md`记录了从v0到v5的完整迭代过程，包含大量实战经验：

**关键教训1: completion_only_loss=True 不可妥协**

对于聊天格式的SFT（监督微调），必须设置`completion_only_loss=True`，即只在模型生成的回复上计算损失，忽略提示部分的损失。这显著提升了训练效果。

**关键教训2: 教师强制评估损失参考价值有限**

在小数据SFT场景中，传统的teacher-forcing eval_loss与实际生成质量相关性很低，不应作为模型选择的主要依据。

**关键教训3: 先尝试提示工程，再考虑重新训练**

"模型往往已经具备了所需能力，而提示工程能以比权重更新便宜100倍的成本恢复这些能力。"这是项目作者反复强调的经验。

## 移动端部署实践

项目已完成Android（Termux + llama.cpp）部署验证，模型在手机上以约27 token/秒的速度运行。作者还尝试了MLC-LLM，但最终选择llama.cpp，原因在`mobile/README.md`中有详细说明。

这种"从训练到端侧部署"的完整闭环，为希望构建端侧AI应用的开发者提供了可直接复用的蓝图。

## CogLang：图优先的中间语言

项目的核心技术依赖CogLang——一种专门为知识图谱交互设计的中间语言。CogLang的特点包括：

- **图优先**: 原生支持节点、边、路径的声明和操作
- **审计操作**: 内置`Trace`和`Assert`操作，支持查询审计和断言验证
- **GBNF语法**: 提供形式化语法定义，支持语法约束解码

这种设计使得自然语言到结构化查询的翻译变得可控、可审计、可验证。

## 局限与未来方向

项目明确标注为"学习/研究演示"，并包含医疗免责声明。当前的药物图谱只是种子数据，不具权威性。

路线图显示下一步计划：

- **v6重训练**: 将失败模式修复固化到模型权重中
- **多轮Agent循环**: 支持多步"推理"类查询的交互式处理

## 结语：端侧AI的工程范式

CogLang Drug Distill项目展示了一种务实的端侧AI工程范式：不是追求单点技术的突破，而是打通从数据生成、模型训练、量化压缩到端侧部署的完整链路。其核心价值在于：

1. **可复现性**: 提供了完整的代码和训练日志
2. **可测量性**: 每个环节都有明确的性能指标
3. **安全性**: 通过语法约束和神经符号架构实现零幻觉
4. **实用性**: 已在真实移动设备上验证

对于希望将LLM部署到边缘设备的开发者，这是一个极佳的参考实现。
