# AI持续学习_OPG **Repository Path**: hiczz/ai-continuous-learning-opg ## Basic Information - **Project Name**: AI持续学习_OPG - **Description**: AI持续学习 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-05 - **Last Updated**: 2026-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OPG² —— 正交测地线原型生长(持续学习系统) OPG²(Orthogonal Geodesic Prototype Growth)是一个**在线流式持续学习**引擎: 模型边活边学、边用边学、越老越聪明,而非每次全量重训(对应梁文锋投资人会议中 提到的持续学习目标)。核心机制按 [idea.md](idea.md) 理论方案实现,本仓库是小参数 **验证版 demo**(`d=32~1024`),架构面向未来超大参数量(千亿~万亿级)商业应用设计。 > **重要声明**:本仓库是**研究验证原型**,不是生产级产品。 > 能力边界与未完全验证项见 [§5 能力边界](#5-能力边界与未完全验证项)——请务必阅读。 --- ## 1. 核心机制 | 机制 | 对应 idea.md | 一句话说明 | | --- | --- | --- | | 分块正交基字典 | §1 | 知识存为互相正交的子空间块 `B={U_i}`,旧块永不被修改 | | 绝对能量门控 | §2.3 | 噪声/离群点投影能量低于阈值 → 丢弃,字典零膨胀 | | 测地线吸收 | §3 | 熟悉样本沿正交补 QR 扩展块内维数,投影算子不变 | | 拓扑生长 | §4 | 新方向样本在全局正交补上锚定,秩-1 生长新块 | | 睡眠压缩 | §5 | 后台 SVD 剪枝合并块,保留奇异值幅度(信息守恒) | | 原型能量分类 | §7 | 免训练分类:Logit_c = 样本在类 c 块上的投影能量 | --- ## 2. 快速开始 ```bash pip install -r requirements.txt python -m pytest -q # 57 tests 全绿(含 VR-1~VR-5、CLI、API、LLM 适配器) python experiments/run_death_test.py # VR-1 零遗忘死亡测试 python experiments/run_gating_ablation.py # VR-2 门控消融 python experiments/run_compression.py # VR-3 压缩守恒 python experiments/run_mnist.py # VR-5 MNIST 逐类增量(约数分钟) python demo/demo.py # 三张核心图 → demo/figs/ python experiments/run_llm_continual.py # O4 大模型文本持续学习(学 A→B 零遗忘) ``` 核心用法: ```python from opg2 import OPG2, OPG2Config m = OPG2(OPG2Config(dim=64, beta=0.05, sleep_freq=0, seed=0)) for x, label in data_stream: # 在线流式,无重训、无回放 m.learn(x, label) m.predict(x_new) # 原型能量分类 m.save("ckpt.pt") # checkpoint / 热恢复 ``` **工具链(统一 CLI 入口)**: ```bash python -m opg2.cli train --data mnist --sppc 200 --out ckpt.pt # 训练 python -m opg2.cli inspect --model ckpt.pt # 字典状态 python -m opg2.cli predict --model ckpt.pt --image digit.png # 推理 python -m opg2.cli learn --model ckpt.pt --csv new.csv --out ckpt2.pt # 在线增量 python -m opg2.cli serve --model ckpt.pt --port 8000 --api-key sk-xxx # API 服务 # ---- 大模型文本持续学习(OPG2LM,基模 Qwen2.5 冻结 + 知识块字典)---- python -m opg2.cli llm-learn --model data/qwen2.5-0.5b-instruct \ --knowledge experiments/knowledge_llm.json --out llm_dict.pt # 新知识固化到权重 python -m opg2.cli llm-chat --model data/qwen2.5-0.5b-instruct \ --load llm_dict.pt --question "Zorp 是什么?" # 对话(激活路由注入) ``` **HermesAgent(OpenAI 兼容推理 API)**:`serve` 命令把模型包装成 `/v1` 风格 REST 接口(`GET /v1/models`、`POST /v1/predict`、`POST /v1/learn` 在线学习、 `POST /v1/chat/completions`,Bearer 鉴权,OpenAI SDK 可直接通过 `base_url=http://host:port/v1` 接入)。详见 [QUICKSTART.md §4](QUICKSTART.md#4-把模型发布成-api-服务hermesagent)。 --- ## 2.5 完整工序链(一条龙工作流) 从环境准备到模型上线、再到 LLM 文本持续学习,全项目串成一条可逐道工序执行的 流水线。每道工序的**详细教程(命令 / 预期输出 / 原理)见 [TUTORIAL.md](TUTORIAL.md)**: ``` ① 环境准备 → ② 数据准备 → ③ 训练 → ④ 检查 → ⑤ 评估 → ⑥ 推理 ↓ ⑪ 回归验证 ← ⑩ LLM 文本持续学习 ← ⑨ 服务部署 ← ⑧ 导出 ← ⑦ 在线增量学习 ``` | 工序 | 命令 | 产出 | | --- | --- | --- | | ① 环境 | `venv` + `pip install -r requirements.txt` + `pytest` | 57 tests 全绿 | | ② 数据 | 合成流 / MNIST 自动下载 / 自定义 CSV | 数据就绪 | | ③ 训练 | `cli train --data {synthetic\|mnist}` | checkpoint bundle (.pt) | | ④ 检查 | `cli inspect --model x.pt` | 块数 / 正交性 / 内存 | | ⑤ 评估 | `cli eval --model x.pt --data {synthetic\|mnist}` | 准确率 + repE | | ⑥ 推理 | `cli predict --model x.pt {--vector \| --image}` | 类别 + 能量 | | ⑦ 在线学习 | `cli learn --model x.pt --csv new.csv --out v2.pt` | 新 checkpoint(边用边学) | | ⑧ 导出 | `cli export --model x.pt --out manifest.json` | 分发前审计清单 | | ⑨ 服务 | `cli serve --model x.pt --port 8000 --api-key K` | OpenAI 兼容 /v1 API | | ⑩ LLM 持续学习 | `cli llm-learn` → `cli llm-chat` | 知识固化到权重(基模冻结) | | ⑪ 回归 | `pytest` + `experiments/run_*.py` | 能力回归验证 | --- ## 3. 已完全验证的能力(实测数据) 以下能力全部有**可复现的实验证据**(固定种子,见 [experiments/report.md](experiments/report.md)): | # | 能力 | 实测结果 | | --- | --- | --- | | ✅ VR-1 | **零遗忘**(A→B→A 交替 200 轮) | 投影算子漂移 **0.0**,Logit_A 恒 = 1,异类干扰 1.4e-33 | | ✅ VR-2 | **抗噪声膨胀**(1000 白噪声) | **100% 拒绝**,字典零膨胀(关门控则膨胀 61 块) | | ✅ VR-3 | **压缩信息守恒**(9 块→6 块) | 投影误差 **7.96e-16**,总秩守恒 | | ✅ VR-4 | **长期正交性**(连续 1e5 步) | 块间正交性 **7.70e-17**(< 1e-10 阈值) | | ✅ VR-5 | **MNIST 表示层零遗忘**(0→9 逐类增量) | 类投影能量跨阶段漂移 **0.00e+00**(严格逐位恒定) | | ✅ E1~E4 | **可扩展性验收** | 序列化 round-trip 位精确、组件可替换、批量/流式一致、异步睡眠不阻塞 | | ✅ O4 | **LLM 文本持续学习零遗忘**(学 A→B 虚构知识) | A 生成逐 token 一致 + B 可回答;路由稳定(A 入口块 A 能量 88897 > 块 B) | 核心工程性质(有单测与报告支撑): - **零遗忘是数学性质而非调参结果**:旧类块一旦建成永不被修改,吸收只扩展正交补, 旧知识投影算子绝对静止; - **噪声不膨胀是门控+双重生长底限共同保证**:绝对底限 `δ·RMS` ∪ 相对底限 `√grow_ratio·‖x‖`(缺一不可,纯噪声会从另一条通道触发误生长); - **压缩不损失信息**:合并块保留奇异值幅度(`U_merged = V_keep·S_keep`), QR 单位化会把能量塌缩到秩数(投影误差 O(m)),已被实测排除。 --- ## 4. 已验证配置与复现参数 | 实验 | 数据 | 关键参数 | 种子 | | --- | --- | --- | --- | | VR-1 | 合成 A→B→A(angle=60°) | dim=64, β=0.05 | 0/1/2 | | VR-2 | 合成信号 200 + 白噪声 1000 | dim=64, β∈{0.4, 0} | 0/1/2 | | VR-3 | 3 类 × rank=3 × 300 样本 | dim=64, compress_fraction=0.4 | 0/1 | | VR-4 | 4 类 × rank=2 正交子空间交替 | dim=32, β=0(禁用门控) | 0/4 | | VR-5 | MNIST 800 训练/200 测试每类 | RFF(1024, γ=1.0), β=1e-4, gr=0.25, classifier=mean | 0 | --- ## 5. 能力边界与未完全验证项 > 本仓库的核心价值已用实验证明(§3),但**以下内容必须诚实声明**: ### 5.1 分类能力(已验证但不强) - **MNIST 平均分类准确率 44.20%**(10 类全有表达,质心上界 78.65%)。这是一个 **免训练、零遗忘换取分类能力的代价**,不是可与监督模型(CNN 99%+)竞争的指标。 - 准确率跨阶段下降(如类 4 从 69.5% → 52%)是**分类器层竞争干扰**,表示层零遗忘 依然严格成立(repE 漂移 0.00e+00)——两者已严格区分度量。 ### 5.2 未完全验证项(已知局限,未根治) | 局限 | 现状 | 说明 | | --- | --- | --- | | 覆盖式生长的判别性偏差 | **已知、实测** | 先学类抢占子空间,后学类残差低于底限时可能"类饥饿"(零块/零准确率)。MNIST 下经 RFF γ 调参缓解,但类 2 仍弱(3.5%)。根治方向(判别式生长目标 / 预训练 CNN 编码器)**未验证**。 | | 线性子空间局限 | **已知** | 基于线性张成,非线性强弯曲流形生长频率偏高。仅用固定 RFF 缓解,更复杂数据**未验证**。 | | β 与维度相关 | **已知** | 门控阈值 β 需按特征维度缩放(d=64 用 0.4,RFF 1024 维用 1e-4)。自动标定**未实现**。 | | 存储复杂度 O(C·d) | **已知** | 百万级类别需 Product Quantization 压缩,会牺牲理论绝对正交性。大规模压缩**未验证**。 | ### 5.3 明确未验证项(从未测试) - **超大参数量(千亿~万亿级)**:架构层(依赖注入/异步睡眠/序列化)面向扩展设计, 但**从未在分布式、多卡、超大规模上运行过**; - **真实业务数据流**:仅验证合成数据与 MNIST 灰度手写数字;图像/文本/语音等 真实业务数据**未验证**; - **长时间连续运行(天/周级)**:1e5 步 ≈ 小时级验证,天级漂移/内存泄漏**未验证**; - **类别数 > 10**:合成实验最多 4 类、MNIST 10 类;百/千/万级类别**未验证**; - **与主流持续学习基线对比**(EWC、iCaRL、GEM 等):**未做对比实验**; - **β/grow_ratio 自动调参**:当前靠人工选择,自动化**未实现**; - **LLM 同模板知识**(两个"是什么?"问题):路由裕度不足,后学知识受限—— 类饥饿的文本版(与 M3 同源),输出侧正交/分层注入**未验证**; - **LLM 长生成(>10 token)**:0.5B 基模生成后期出现乱码;更大基模(1.5B+) 或分层注入**未验证**; - **LLM 多知识块路由**(3+ 块):Top-1 激活路由的误路由率**未验证**。 ### 5.4 对"零遗忘"的正确理解 本项目"零遗忘"指**表示层投影算子绝对静止**(数学性质,严格成立)。它不承诺: - 分类准确率不下降(准确率受分类器竞争影响,见 §5.1); - 特征判别性(先学类占空间是固有偏差,见 §5.2)。 --- ## 6. 项目结构 ``` ├── idea.md # 理论方案(只读基准) ├── PRD.md # 产品需求文档(FR-1~FR-8 / VR-1~VR-5) ├── implementation-plan.md # 实现计划(M0-M6 全部完成) ├── QUICKSTART.md # 零基础快速入门手册 ├── TUTORIAL.md # 完整工序链教程(11 道工序端到端) ├── ARCHITECTURE.md # 架构说明 ├── RESEARCH_LOG.md # 研究过程记录单(模板 + 已记录实验) ├── experiments/report.md # 论文复现报告(10 章节,全部指标实测) ├── opg2/ # 核心算法包(Protocol 依赖注入,可替换实现) │ ├── interfaces.py # 抽象接口 + OPG2Config 配置 │ ├── dictionary.py # FR-1 分块正交基字典 │ ├── router.py # FR-2 能量路由 + 绝对门控 │ ├── update.py # FR-3 测地线吸收(QR) │ ├── growth.py # FR-4 秩-1 生长 + 正交锚定 │ ├── sleep.py # FR-5 SVD 睡眠压缩 │ ├── classifier.py # FR-6 原型能量分类器(sum/mean/max) │ ├── serialization.py # P5 checkpoint / bundle(引擎+管线+meta) │ ├── opg2.py # FR-8 主类 OPG2 │ ├── cli.py # 统一命令行工具链(train/learn/eval/.../llm-learn/llm-chat) │ └── serve.py # HermesAgent:OpenAI 兼容推理 API ├── opg2/llm/ # OPG2LM:大模型参数级持续学习(Qwen2.5 + 正交适配器字典) │ ├── adapters.py # 正交低秩适配器块 + 字典(纯矩阵域) │ ├── learner.py # 在线学习器(闭式解/SGD、门控、睡眠压缩) │ └── engine.py # OPG2LM 主类(基模冻结 + learn/generate + Top-1 激活路由) ├── data/ # 合成数据 + MNIST 适配(RFFEncoder/FeaturePipeline)+ Qwen 基模 ├── tests/ # 57 tests(VR-1~5、E1~E4、CLI、API、LLM 适配器) ├── experiments/ # 实验脚本 + 指标落盘 + 曲线图(含 run_llm_continual.py) └── demo/ # 三张核心可视化图 ``` --- ## 7. 里程碑状态 | 里程碑 | 内容 | 状态 | | --- | --- | --- | | M0 | 工程脚手架 | ✅ | | M1 | 核心算法实现 + 单测 | ✅ 35 tests | | M2 | 合成数据验证(VR-1/2/3) | ✅ | | M3 | MNIST 逐类增量(VR-5) | ✅ avg 44.20%,零遗忘严格成立 | | M4 | 完整测试收口 | ✅ 37 tests 全绿,VR-4 1e5 步 | | M5 | 演示与可视化 | ✅ demo/figs/ 三张图 | | M6 | 论文复现报告 | ✅ report.md 终稿 | | O0-O5 | **大模型参数级持续学习**(OPG2LM:Qwen2.5-0.5B 冻结 + 知识块字典) | ✅ 学 A→B 零遗忘 + 新知识可答,CLI `llm-learn`/`llm-chat`,57 tests | --- ## 8. 文档索引 - [idea.md](idea.md) —— 理论方案 v2.0(数学依据,只读基准) - [PRD.md](PRD.md) —— 产品需求(FR/VR 验收标准、§8 风险清单) - [implementation-plan.md](implementation-plan.md) —— 实现计划与工程决策记录 - [QUICKSTART.md](QUICKSTART.md) —— **零基础快速入门手册**(装环境→训练→推理→API) - [TUTORIAL.md](TUTORIAL.md) —— **完整工序链教程**(11 道工序端到端:数据→训练→部署→LLM 持续学习) - [ARCHITECTURE.md](ARCHITECTURE.md) —— **架构说明**(分层/数据流/扩展指南) - [RESEARCH_LOG.md](RESEARCH_LOG.md) —— **研究过程记录单**(实验模板 + 已记录实验) - [experiments/report.md](experiments/report.md) —— 论文复现报告(实测数据、理论对照、复现命令)