ConceptForge 是一个「Next Concept Prediction(下一概念预测)」语言模型训练与推理平台, 受上海人工智能实验室与上海交通大学 LUMIA Lab 开源的 NCP-ArchPreview(arXiv 2609.10715) 启发而构建。
传统语言模型只预测「下一个 token」。NCP-ArchPreview 的洞见是:在预测下一个 token 之前, 先在潜空间预测下一个「概念」(一个跨 4 个 token 的语义单元)。这个看似简单的改动带来三个 硬指标收益:
| 指标 | 数值 | 含义 |
|---|---|---|
| Token 效率 | 只需 51.3% 训练 token | 达到 OLMo-3-7B 的最终预训练 loss |
| 下游均分 | +2.45 点 | 全量预训练后领先 7B 基线 |
| GSM8K 数学 | +5.99 点 | 概念级目标显著提升推理 |
| 投机解码 | 接受长度 +4.17% | 概念注入 DFlash2 drafter |
| 领域自适应 | 只更新 ~17M 参数 | 轻量 VQ 模块即可换领域 |
本仓库提供一套纯 numpy + 标准库、可直接运行的同构实现,覆盖从数据、训练、推理到 服务化的完整链路,让你可以离线验证 NCP 的核心机制。
┌─────────────────────────────────────────┐
token ids ───► │ Encoder (16 层因果 Transformer) │
│ token ──► 隐状态序列 (hidden 4096) │
└──────────────┬──────────────────────────┘
│ 抽取概念(每 4 token 聚合)
▼
┌─────────────────────────────────────────┐
│ Concept Module (8 层) │
│ 预测「下一个概念」 ──► 反馈给 Decoder │
│ Product Quantization (32 x 128 码本) │
└──────────────┬──────────────────────────┘
│ 概念反馈
▼
┌─────────────────────────────────────────┐
│ Decoder (16 层因果 Transformer) │
│ 概念条件 ──► token logits ──► 文本 │
└─────────────────────────────────────────┘
联合损失 = token 交叉熵 + λ · concept 交叉熵
- Encoder / Concept / Decoder = 16 / 8 / 16 层,隐层 4096,32 头,与论文一致
- Product Quantization:概念向量切 32 段,每段 128 码字,K-Means 构建码本
- 两阶段课程:Stage 1 长程预训练(token 目标)→ Stage 2 概念引导精调(引入概念目标)
- 投机解码:概念向量注入 drafter,提升平均接受长度
git clone https://github.com/huzjie/conceptforge.git
cd conceptforge
pip install -e . # 或 pip install -r requirements.txt核心逻辑(concept / model / train / data)零外部依赖即可运行;
numpy可选,未安装时自动降级为纯 Python 回退(部分功能受限)。
python -m conceptforge doctor输出环境检查、架构常量、模型前向、量化器、tokenizer、NCP 效率指标全链路报告。
python -m conceptforge train --steps 50 --num-sentences 128 --max-len 64python -m conceptforge generate --prompt "The latent space model" --max-new-tokens 64python -m conceptforge serve # http://localhost:8000
curl http://localhost:8000/health
curl -X POST http://localhost:8000/generate -H "Content-Type: application/json" \
-d '{"prompt":"The latent space model","max_new_tokens":32}'docker build -t conceptforge .
docker run -p 8000:8000 conceptforge| 命令 | 说明 |
|---|---|
python -m conceptforge doctor |
全链路自检 |
python -m conceptforge train |
两阶段课程训练 |
python -m conceptforge generate |
概念条件文本生成 |
python -m conceptforge predict |
下一 token 概率预测 |
python -m conceptforge eval |
损失 + 效率评测 |
python -m conceptforge serve |
启动 FastAPI 服务 |
所有命令支持 --config config.yaml 指定配置。
conceptforge/
├── concept/ # 概念表示 + PQ 量化 + 概念模块
├── model/ # 注意力 / Transformer / NCP 主模型 / drafter
├── train/ # 联合损失 / 优化器 / 课程 / 训练循环 / checkpoint
├── data/ # 语料合成 / 数据集 / 加载器 / 课程采样
├── serve/ # 推理引擎 / 投机解码 / FastAPI
├── eval/ # 损失 / 困惑度 / 效率评测
├── adapt/ # 轻量 VQ 领域自适应
├── cli/ # 命令行入口
├── models/ # 模型卡(model cards)
├── config.py # 配置加载
├── tokenizer.py # BPE 分词器
└── constants.py # NCP 架构常量
| 文档 | 内容 |
|---|---|
| docs/architecture.md | 系统架构设计 |
| docs/concepts.md | 概念表示与 Next Concept Prediction |
| docs/pq.md | Product Quantization 详解 |
| docs/training.md | 两阶段课程与联合损失 |
| docs/draft.md | 概念注入投机解码 |
| docs/adapt.md | 轻量领域自适应 |
| docs/eval.md | 评测体系与效率指标 |
| docs/api.md | REST API 说明 |
| docs/getting-started.md | 快速上手指南 |
| docs/model-cards.md | 模型卡索引 |
Apache License 2.0。本仓库是 NCP-ArchPreview(arXiv 2609.10715)的独立同构实现, 不包含原论文的模型权重;论文与权重请见原始出处。
感谢上海人工智能实验室与上海交通大学 LUMIA Lab 开源 NCP-ArchPreview 及其技术报告。