Files
calculet-npu-research-archive/reports/Calculet-NPU-分层打包与下载优先级建议-20260801.md

162 lines
9.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Calculet NPU 分层打包与下载优先级建议
日期:2026-08-01
执行状态更新:第 1-8 步现已全部完成,包括关键上下文、基线、无权重运行时、完整源码、容器 `/home`、OCI 镜像、完整 `/home/user2` 和完整模型归档。下文保留当时的资源判断与调度依据,用于解释取数顺序和性能调优资料的完整范围。
## 结论
建议继续保留“最终全部取回”的目标,但改变下载顺序:先取得高信息密度、不可替代且能立即支持源码与算子分析的资料,再取得完整运行环境,最后取得模型参数和重复性较高的取证数据。
当前链路的主要问题是 VPN 丢包导致 SSH TCP 拥塞窗口频繁降到 1。仅增加压缩或改用 scp 无法解决;分层打包的价值在于让关键资料在 1-3 小时内可用,而不是等待全部资料 3-4 天。
## 资源价值判断
### 第一类:立即开展分析所必需
这些资源决定我们能否分析接口、编译关系、调用链、算子布局和新模型接入方式。
| 资源 | 当前大小 | 价值 | 建议 |
| --- | ---: | --- | --- |
| 基线分析归档 | 436,398,080 B | 包含 SDK、驱动/硬件环境、模型元数据、工具、历史源码包和构建复现包 | 当前已完成 57.15%,优先完成 |
| 完整 `llama.cpp` 仓库 | 264,921,801 B | 完整 `.git`、工作树、build、对象文件、测试和生成产物 | 基线完成后立即下载 |
| CalRT SDK | 310,976 B | 头文件、CMake 配置和 CalRT 0.7.6 动态库 | 可单独快速取回;基线中已有副本 |
| 环境清单 | 364,368 B | PCIe、驱动、内核参数、CPU、包版本、Podman 和源码状态 | 必须保留 |
| 模型元数据 | 7,146,468 B | YAML、profparts、I/O buffer layout、词表和内存布局 | 必须保留 |
| 远端工具 | 3,358,991 B | 原始运行脚本和容器启动脚本 | 必须保留 |
| 服务支持文件 | 5,768,962 B | server/CLI/bench 脚本、测试脚本和测试用例 | 必须保留 |
| `/home/user2/llm` | 3,493,888 B | 客户端、提示词、性能 CSV、测试用例和启动脚本 | 必须优先取回 |
SDK、环境、元数据、工具、支持文件和用户测试目录合计不足约 21 MB。建议组成独立的 `00-critical-context-20260801.tar.zst`,使关键上下文不依赖 436 MB 基线包完成后才能使用。
### 第二类:模型算子分析所必需,但不含权重
完整模型原始文件共 18,749,687,350 B,其中两个参数块占 18,186,784,768 B,约为 97%。其余约 562,902,582 B 才是当前算子和编译产物分析的重点:
| 内容 | 原始大小 | 用途 |
| --- | ---: | --- |
| runtime command 文本 | 423,772,059 B | 分析 prefill/decode 调度、命令序列和双芯片行为 |
| 非参数 `.bin` | 约 85.5 MB | ping/pong、PLD CPU 等运行二进制 |
| CCU ELF | 24,353,680 B | 指令与 kernel 静态分析 |
| Tokenizer JSON/GGUF 等 | 约 27.8 MB | 新模型接入、词表和服务行为复现 |
| YAML、profparts、I/O layout | 约 1.2 MB | shape、buffer、芯片映射和编译配置 |
| CPU 运行库 | 261,688 B | Host/RISC-V 辅助执行路径 |
建议在远端生成 `01-model-runtime-no-weights-20260801.tar.zst`,明确排除:
- `param_blk0.bin`9,404,557,312 B
- `param_blk1.bin`8,782,227,456 B
命令表是文本,压缩率预计较高。该包生成后需要实测大小,但应远小于 563 MB。它对算子优化的价值远高于两个参数块,应排在 OCI 镜像和完整用户目录之前。
### 第三类:精确重建运行环境
| 资源 | 大小 | 重复关系 | 建议 |
| --- | ---: | --- | --- |
| OCI 镜像 | 1,646,166,016 B | 最完整的 OS、依赖、二进制和镜像层 | 精确重建首选,第二阶段优先 |
| 容器完整 `/home` | 740,994,223 B | 与 OCI 镜像部分重复,但更容易直接检查工具链和源码 | OCI 之后取得 |
| 构建复现包 | 10,408,099 B | 基线与完整仓库中有重叠 | 基线中保留即可 |
如果只能在 OCI 和容器 `/home` 中二选一,应优先 OCI;它能还原完整镜像。容器 `/home` 适合快速静态分析,但不能单独重建基础系统和镜像层。
### 第四类:用户侧测试历史与取证数据
完整 `/home/user2` 压缩归档为 1,684,911,580 B。其原始空间主要由 `/home/user2/.local` 占用:
- `.local`:约 1.457 GB,主要是 rootless Podman 存储,与 OCI 镜像高度重复。
- `llm`:约 3.49 MB,包含高价值测试脚本、提示词和性能日志。
- Shell 配置和历史:不足 10 KB,但对环境还原和审计有价值。
- 两个早期源码抽取包:约 32.65 MB,本地已有副本且与完整仓库重复。
建议先生成 `02-user-workspace-no-container-store-20260801.tar.zst`,包含:
- `/home/user2/llm`
- `.bash_history``.bashrc``.profile``.bash_logout`
- `/home/user2/calbin_inspect.cpp`
排除:
- `/home/user2/calculet-analysis-export`
- `/home/user2/.local/share/containers`
- 缓存目录
- 已在本地保存、且会由完整归档再次覆盖的两个顶层源码 tar
完整 `user2-live-home` 仍保留在最终取回清单,但放到取证阶段,不再与关键资料抢带宽。
### 第五类:模型参数
| 文件 | 原始大小 | 作用 |
| --- | ---: | --- |
| `param_blk0.bin` | 9,404,557,312 B | 双芯片模型参数块 0 |
| `param_blk1.bin` | 8,782,227,456 B | 双芯片模型参数块 1 |
两个参数块对运行完整 Qwen3-30B-A3B 必不可少,但对当前源码调用链、API、buffer layout、命令表和算子静态分析的增量价值最低。建议最后下载,优先考虑:
1. 对方提供阿里云 OSS 预签名上传地址。
2. 备用 VPN 节点或 SSH 白名单直连。
3. 国内云主机中转。
4. 只能继续当前 VPN 时,再恢复现有模型分片下载。
模型参数不能永久舍弃。它们只是后置,最终仍需按 SHA-256 完整取回,用于端到端性能、精度和回归验证。
## 推荐打包清单
| 顺序 | 建议包 | 主要内容 | 预计规模 | 目标 |
| ---: | --- | --- | ---: | --- |
| 0 | `00-critical-context` | SDK、环境、模型元数据、工具、支持文件、用户测试目录、清单 | 约 21 MB 原始 | 立即可分析 |
| 1 | 现有 baseline | 历史源码包、构建复现、全部基础资料 | 还剩约 187 MB | 保留历史调优路径 |
| 2 | `01-model-runtime-no-weights` | command、ELF、非参数 bin、Tokenizer、YAML、profparts、SO | 563 MB 原始,压缩后待测 | 算子与编译产物分析 |
| 3 | 现有完整 `llama.cpp` | 完整 Git、build、测试和生成产物 | 还剩约 256.5 MB | 源码和版本分析 |
| 4 | `02-user-workspace-no-container-store` | 用户测试脚本、提示词、CSV、Shell 配置 | 约 4 MB,不含已有源码包 | 测试复现 |
| 5 | OCI 镜像 | 完整镜像 | 1.646 GB | 精确重建环境 |
| 6 | 容器 `/home` | 工具链、依赖和源码副本 | 741 MB | 静态检查和补充 |
| 7 | 完整 `/home/user2` | 包含 rootless Podman 存储的完整取证包 | 1.685 GB | 最终完整性 |
| 8 | 模型参数/完整模型 | 两个参数块及完整模型目录 | 16.285 GB 压缩包 | 端到端运行与回归 |
## 当前下载任务应如何调整
建议执行以下调度策略:
1. 不丢弃任何已下载 `.incoming` 前缀。
2. 暂停完整 `user2-live-home`,其高价值 `llm` 目录改由小包优先取得。
3. 生成并优先下载约 21 MB 的 `00-critical-context`
4. 随后完成已到 57.15% 的 baseline,避免继续积累半成品。
5. 生成并下载 `01-model-runtime-no-weights`
6. 完成完整 `llama.cpp`
7. 再依次取得 OCI、容器 `/home` 和完整用户目录。
8. 模型权重继续保持暂停,直到获得更快通道或前述资料全部完成。
## 分片与传输建议
- 新包采用 64 MiB 分片,不再使用 8 MiB 分片,减少 SSH 建连和校验调度次数。
- 每个分片和整包均生成 SHA-256。
- 本地下载器改为固定 worker pool,完成一个分片立即补下一个,不按三文件成批等待。
- SSH 无数据超时从 180 秒提高到 600 秒,降低高丢包时的无效重连。
-`4/8/12` 并发做十分钟 A/B,按有效文件增长而不是 VPN 字节数选择并发。
- 已压缩的 `.tar.gz`、OCI 和参数块不启用 SSH 压缩。
- 远端原始归档和旧分片在本地整包验证完成前全部保留。
## 最小可工作集
如果目标是尽快开始算子、新模型和接口优化,最小可工作集为:
1. `00-critical-context`
2. `01-model-runtime-no-weights`
3. 完整 `llama.cpp`
4. 现有 API 测试报告与环境源码分析报告
该集合不包含模型参数,不能离线运行完整 Qwen3,但足以完成:
- CalRT API 与 ABI 分析
- llama.cpp 调用链和 buffer 生命周期优化
- prefill/decode 命令、ELF 和 I/O layout 分析
- MoE、Attention、KV、DMA 和调度优化设计
- 新模型接入 schema 与工具链需求分析
- 指标、错误处理和服务接口设计
要执行真实精度和性能回归,再补 OCI 镜像和模型参数。
## 最终建议
继续“全部取回”,但不要继续让 18 GB 参数和 1.46 GB Podman 存储阻塞高价值资料。先在约 1-3 小时内形成可工作的分析集,再逐步补齐可复现环境和完整取证数据;模型参数通过 OSS、直连或中转解决,才是整体时间从数天降到数小时的关键。