Repository navigation
Release v1.7.0: Dataset类
neuralnet.cpp v1.7.0 Release Notes
发布范围:
v1.6.1(384c58b,2026-10-04)→v1.7.0;内容提交截至f7b6bf7(2026-10-06),其后仅含本发布文档与版本同步提交。
提交量:6 content commits,114 files changed,+6090 / −3150(含测试、文档与 Python 侧同步)。
主题:统一数据集——.nndataset/.nnvocab/ KVRecord v2 格式统一 + 只读类nn::Dataset+ 生成/转换工具dataset_gen/dataset_convert,text_train只吃数据集、模型格式 v6 内嵌词表 kvrec;同批交付错误处理宏族(NN_TRY/NN_CHECK/NN_EXIT/NN_FAIL);ctest 24 → 27。设计与逐条裁决见19-unified-dataset.md。
兼容性:有破坏性变更(CLI 参数、词表文件格式、.tokcache移除,见 §6 迁移指南);模型文件 v1–v5 零破坏(v5 及以下仍读其内嵌 JSON 词表);引擎 / Layer / Tensor 接口无变更(ComputeEnginevirtual 仍 49)。另含load_tokenizer_from_file签名变更(API 级,见 §6.3)。
亮点速览(TL;DR)
| 方向 | 变化 | 收益 |
|---|---|---|
| 数据格式 | 六条互不相通的读取路径(MNIST CSV×2 / txt 直读 / .tokcache / JSON 词表 / .nnpkg)收敛为 .nndataset(数据)+ .nnvocab(词表),底层统一 KVRecord v2 |
新接数据集 = 跑一次 dataset_gen,零新代码;词表/语料/掩码/缓存四个概念合一 |
| KVRecord v2 | 字段只记 key / 类型 / 文件绝对地址,值走数据块;Type::Record 层层嵌套;哨兵自举 v1/v2 分派 |
大值(词表 blob、doc 块)零拷贝寻址;数据块地址连续性校验 = 整体搬迁硬报错;模型 spec 头仍 v1 字节零变化 |
| 生成期语义 | tokenize、loss 掩码(all/assistant)、test 子集、来源 sha256、license 全部在生成期定好并嵌入数据集 |
text_train 删 4 个选项与全部数据加载代码;"数据集自带语义",不再训练期重扫 |
| 统一类 | 新 nn::Dataset(只读:嗅探标签分派 .nndataset/.nnvocab);load_text() 输出与旧 tokcache 产物逐位同构 |
下游"拼流 → 滑窗 → 训练"一行不改;§8 逐位一致有回归锁 |
| 模型格式 v6 | 内嵌词表改 .nnvocab kvrec(v5 及以下仍读内嵌 JSON,按版本分派) |
词表二进制自描述;旧模型零破坏、无需转换工具 |
| 错误处理 | 手写 auto r = f(); if (!r) … 三形态收敛为宏族 NN_TRY/NN_CHECK/NN_EXIT + NN_FAIL;全仓迁移 + 门禁基线 0 |
L2 层 −约 500 处样板;错误风格一处可查(core_errors.hpp) |
| 测试 | ctest 24 → 27:kvrec_test / nnvocab_test / dataset_test |
KVRecord v2、词表往返、数据集逐位一致全部进常驻口径 |