| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs: 明确"一切自适应"为第一原则(README 反复强调)+ 目标自适应入口 regionify_auto + 口径防混用 用户要求:文档里要**反复强调自适应**(参数自适应、函数选择自适应等等)。本轮把"自适应"写成 第一原则并落到代码与文档两处: 代码 - 新增 regionify_auto(rows, calib_inputs=None, K=None, r=None, order=1, objective='auto', ...) —— **目标自适应**入口:order=1+标定输入 → 功能口径(regionify_act);order=0+标定输入 → 功能分区(F,响应矩阵由输入换算 (X Wᵀ)ᵀ);无标定输入 → 权重口径并**如实标注**; 显式 objective='func' 却无标定 → **抛错**(禁止静默降级)。返回值带 objective_used。 - 口径防混用:regionify_act 的参数改名 calib_inputs((m,D) **输入样本**), 与既有 regionify(signal='F', activations=...) 的 (n,T) **每单元响应**明确区分并报错拦下。 (本轮测试正是靠这条例外抓出了这个同名不同义的隐患。) 文档(反复强调"自适应") - README 顶部新增"★ 第一原则:一切自适应"总表:参数(auto_alloc 逐层搜 K/r/阶数/跳过)、 函数形式(hetero 逐叶子区不同函数类型 / multilevel / kernel_surf)、分区方式(auto_signal 竞优)、 **目标函数(regionify_auto)**、量化(per-region / 位宽 / int8_auto)、设备(balance/int8 开关); 并写明自适应的边界:全部由客观量(EV/字节/掉点预算/标定可得性)驱动且**如实回报所走路径**。 - §1.1 增补 regionify_auto 决策表 + 两个 activations 口径的警示框。 - §全局注意事项新增第 0 条"自适应优先(第一原则)"与第 6 条"选型看功能口径(ev_func)"。 - §分区信号分型、§自适应分配器 auto_alloc 两处开头各加一次"自适应提示(重申第一原则)"。 - auto_alloc 一节如实标注 **P0.1 未实现**:搜索目标仍是权重 EV,尚未换成 ev_func。 验证(这次用退出码门拦住):pytest 全绿(199 passed)/ mypy 21 文件无问题; 新增 tests/test_act.py 覆盖:功能口径优于权重口径、逼近理论上界、权重 EV 更低(防改回)、 两载体往返不变、目标自适应三态 + 禁止静默降级、calib_inputs 口径防混用。 | 12 天前 | |
feat: 统一口径修复(v3 写入器位宽对齐 + 打包实现单一化)+ 格式口径矩阵自证 + Pipeline/基线对比(版本 2.1.0) 口径修复(跨语言一致性的前提:nrfunc 是口径基准,先把自己修到自洽) - **v3 写入器位宽白名单对齐**: to_bytes_v3 此前只认 4/8/32,而它**自己的读取器** from_bytes_v3 与 v1/v2 写入器 to_bytes 都认 4/8/10/12/16/32 → 写入比读取还窄。 已统一为 4/8/10/12/16/32(10/12 走小端位流、16 走 u16 小端直存,与读取器同一套解包)。 - **打包实现单一化**:quantize_weights / dequantize_weights 原先自带一套只支持 4/8 的 打包代码,与容器(io/binary)的实现并行存在——这正是"两套代码各自演化出不同字节布局" 的根因。现改为复用 io.binary._pack/_unpack,位宽白名单与容器完全一致(含 32=直存 f32)。 默认位宽保持 4(不改既有行为);4/8 的字节布局逐字节不变。 新增 - tests/test_format_matrix.py:**格式口径矩阵自证**(43 例)——载体版本(v1v2/v3) × order(-1/0/1) × 位宽(4/8/10/12/16/32) 笛卡尔覆盖,逐格验证往返、header_info、以及数值误差落在该位宽的 理论量化界内;另含"三处位宽白名单必须一致""底层 per-row 打包与容器同位宽"两条钉子。 - Pipeline(src/nrfunc/pipeline.py):一站式「选型 → 打包 → 分片」。 - compare_baselines(src/nrfunc/utils/baselines.py):函数化 vs SVD / K-means / INT8 / 剪枝 同口径对比。 - quantize_per_region(io/serialize):按区共享 scale 的量化(0/1 阶;QAT 风格前哨)。 - header_info(io/binary):O(1) 只读头部巡检(版本/order/bits/K/r/n/D,异构层带 fn_types)。 - 异构层还原/前向(core/functionalize):order='mixed' 逐叶子区按各自函数类型处理。 - examples/code/make_life_policy.py(7→2 生命策略产物生成)、examples/python/baselines_demo.py。 改进 - auto_alloc:低秩候选剔除改为 1 <= c < n(r≥n 无意义、必不净省);regionify 调用容忍 MemoryError 并跳过该候选,避免整轮搜索被打断。 - io/binary:NRFN v3 解析健壮性校验(n_fn_types / assign 越界)。 验证 - pytest:**186 passed / 0 failed**(143 既有 + 43 新矩阵) - mypy src:Success: no issues found in 20 source files - 构建:nrfunc-2.1.0.tar.gz + nrfunc-2.1.0-py3-none-any.whl | 12 天前 | |
feat: 异构函数化 + 核空间曲面 + auto_alloc 升级 + NRFN v3 序列化(版本 2.0.0) - regionify_hetero:逐叶子区竞优 order(0/1/-1),散状区保留原权重走纯量化,空叶子区登记独立 (0,0) 类型 - kernel_surf:3x3 卷积核图形区固定基曲面编码(P6/P8,coef_bits 4/6/8/16/32)+ 设计文档 - auto_alloc 升级:auto_alloc_model / boundary_probe / signal_recommend / compete_signals / geodesic / multilevel / adapters - NRFN v3 尾结构体序列化:异构叶子区 + kernel_surf;order=-1 编码为 255,from_bytes_v3 同步解码 - 往返测试:异构层含散状区 v3 序列化/反序列化 | 1 个月前 | |
feat(core): auto_alloc 三段式重构——谱探测 + K=1 全局低秩 + distortion 保真约束 - 谱探测 _spectral_probe:compute_uv=False 只算奇异值 + 超大规模均匀抽样,克制资源 - 默认 K 网格加入 K=1(全局低秩=等价 PCA,成熟精炼权重的正解) - r 候选由谱探测自适应生成(spectral_r_grid),替换固定 [1,2,4,8] - 移除 tol_ev/fidelity_margin,改用 distortion 参数(explained >= 1-distortion 硬约束) - 目标函数改省/保真加权几何平均 sqrt(saving*explained) - decision 返回值从 'ok' 改为 'order1'/'order0'/'skip' - functionalize 增加 _svd_cache:同 K 跨 r 复用完整 SVD(数值逐位等价,提速约 2.3x) - 版本号 1.0.0 -> 1.1.0 | 1 个月前 | |
feat: 统一口径修复(v3 写入器位宽对齐 + 打包实现单一化)+ 格式口径矩阵自证 + Pipeline/基线对比(版本 2.1.0) 口径修复(跨语言一致性的前提:nrfunc 是口径基准,先把自己修到自洽) - **v3 写入器位宽白名单对齐**: to_bytes_v3 此前只认 4/8/32,而它**自己的读取器** from_bytes_v3 与 v1/v2 写入器 to_bytes 都认 4/8/10/12/16/32 → 写入比读取还窄。 已统一为 4/8/10/12/16/32(10/12 走小端位流、16 走 u16 小端直存,与读取器同一套解包)。 - **打包实现单一化**:quantize_weights / dequantize_weights 原先自带一套只支持 4/8 的 打包代码,与容器(io/binary)的实现并行存在——这正是"两套代码各自演化出不同字节布局" 的根因。现改为复用 io.binary._pack/_unpack,位宽白名单与容器完全一致(含 32=直存 f32)。 默认位宽保持 4(不改既有行为);4/8 的字节布局逐字节不变。 新增 - tests/test_format_matrix.py:**格式口径矩阵自证**(43 例)——载体版本(v1v2/v3) × order(-1/0/1) × 位宽(4/8/10/12/16/32) 笛卡尔覆盖,逐格验证往返、header_info、以及数值误差落在该位宽的 理论量化界内;另含"三处位宽白名单必须一致""底层 per-row 打包与容器同位宽"两条钉子。 - Pipeline(src/nrfunc/pipeline.py):一站式「选型 → 打包 → 分片」。 - compare_baselines(src/nrfunc/utils/baselines.py):函数化 vs SVD / K-means / INT8 / 剪枝 同口径对比。 - quantize_per_region(io/serialize):按区共享 scale 的量化(0/1 阶;QAT 风格前哨)。 - header_info(io/binary):O(1) 只读头部巡检(版本/order/bits/K/r/n/D,异构层带 fn_types)。 - 异构层还原/前向(core/functionalize):order='mixed' 逐叶子区按各自函数类型处理。 - examples/code/make_life_policy.py(7→2 生命策略产物生成)、examples/python/baselines_demo.py。 改进 - auto_alloc:低秩候选剔除改为 1 <= c < n(r≥n 无意义、必不净省);regionify 调用容忍 MemoryError 并跳过该候选,避免整轮搜索被打断。 - io/binary:NRFN v3 解析健壮性校验(n_fn_types / assign 越界)。 验证 - pytest:**186 passed / 0 failed**(143 既有 + 43 新矩阵) - mypy src:Success: no issues found in 20 source files - 构建:nrfunc-2.1.0.tar.gz + nrfunc-2.1.0-py3-none-any.whl | 12 天前 | |
feat: 统一口径修复(v3 写入器位宽对齐 + 打包实现单一化)+ 格式口径矩阵自证 + Pipeline/基线对比(版本 2.1.0) 口径修复(跨语言一致性的前提:nrfunc 是口径基准,先把自己修到自洽) - **v3 写入器位宽白名单对齐**: to_bytes_v3 此前只认 4/8/32,而它**自己的读取器** from_bytes_v3 与 v1/v2 写入器 to_bytes 都认 4/8/10/12/16/32 → 写入比读取还窄。 已统一为 4/8/10/12/16/32(10/12 走小端位流、16 走 u16 小端直存,与读取器同一套解包)。 - **打包实现单一化**:quantize_weights / dequantize_weights 原先自带一套只支持 4/8 的 打包代码,与容器(io/binary)的实现并行存在——这正是"两套代码各自演化出不同字节布局" 的根因。现改为复用 io.binary._pack/_unpack,位宽白名单与容器完全一致(含 32=直存 f32)。 默认位宽保持 4(不改既有行为);4/8 的字节布局逐字节不变。 新增 - tests/test_format_matrix.py:**格式口径矩阵自证**(43 例)——载体版本(v1v2/v3) × order(-1/0/1) × 位宽(4/8/10/12/16/32) 笛卡尔覆盖,逐格验证往返、header_info、以及数值误差落在该位宽的 理论量化界内;另含"三处位宽白名单必须一致""底层 per-row 打包与容器同位宽"两条钉子。 - Pipeline(src/nrfunc/pipeline.py):一站式「选型 → 打包 → 分片」。 - compare_baselines(src/nrfunc/utils/baselines.py):函数化 vs SVD / K-means / INT8 / 剪枝 同口径对比。 - quantize_per_region(io/serialize):按区共享 scale 的量化(0/1 阶;QAT 风格前哨)。 - header_info(io/binary):O(1) 只读头部巡检(版本/order/bits/K/r/n/D,异构层带 fn_types)。 - 异构层还原/前向(core/functionalize):order='mixed' 逐叶子区按各自函数类型处理。 - examples/code/make_life_policy.py(7→2 生命策略产物生成)、examples/python/baselines_demo.py。 改进 - auto_alloc:低秩候选剔除改为 1 <= c < n(r≥n 无意义、必不净省);regionify 调用容忍 MemoryError 并跳过该候选,避免整轮搜索被打断。 - io/binary:NRFN v3 解析健壮性校验(n_fn_types / assign 越界)。 验证 - pytest:**186 passed / 0 failed**(143 既有 + 43 新矩阵) - mypy src:Success: no issues found in 20 source files - 构建:nrfunc-2.1.0.tar.gz + nrfunc-2.1.0-py3-none-any.whl | 12 天前 | |
init | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 12 天前 | ||
| 12 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 1 个月前 |