张量与框架指南
文档首页 · 计算库 · 编程指南 · English | 日本語 | Deutsch | Русский
1. 层级
| 层 | 组件 | 职责 |
|---|---|---|
| 公共数据与契约 | ruda-core | dtype、shape、设备及编译相关契约 |
| 设备张量 | ruda-kernel::tensor | 存储、元数据、分配与布局操作 |
| 设备 Backend | ruda-tensor-device | 张量操作到领域库的分发 |
| 张量 API | ruda-tensor | 面向 Backend 的张量接口 |
| 融合 | ruda-fusion | 运算融合层 |
| 自动微分 | ruda-autodiff | 自动微分层 |
| 模型与训练组件 | ruda-model、ruda-nn、ruda-optim、ruda-store、ruda-dataset | 模型、网络模块、优化器、存储与数据 |
2. 设备张量
RudaTensor<R> 包含 client、handle、meta、device、dtype、qparams。存储句柄与 shape/strides 分开,量化参数也单独保存。
低层算子应验证输入是否位于同一设备、dtype 是否符合计算路径、量化数据是否携带正确参数。连续布局、转置视图和物化复制不能混为一谈。
已有分配、连续化、reshape、permutation、transfer、readback 等模块见设备张量入口。
3. NVIDIA Backend
ruda-tensor-device/cuda 启用 ruda_tensor_device::cuda。
不启用 cuda-fusion 时,Cuda<F, I> 是 DeviceBackend<CudaRuntime, F, I, u8> 的别名;启用后使用融合包装层。默认 F 为 f32、I 为 i32。定义见 cuda.rs。
这是张量 Backend,不是 CUDA Driver API 句柄。选择后端还需分别确认所需算子的 dtype 与功能范围。
4. 领域库分发
矩阵运算进入 ruBLAS,神经网络算子进入 ruDNN,归约与索引进入 ruPRIM,FFT 和随机数分别进入 ruFFT、ruRAND。设备 Backend 的分发组织见 dispatch。
5. 稀疏、量化与批量回读
ruda_tensor::api::CsrTensor<B> 通过 SparseOps 组合稀疏结构和浮点值张量,提供稀疏/稠密乘法、转置、加法、gather、scatter-add 与 sampled 计算。它不同于领域库的 rusparse::tensor::CsrTensor<R>:前者泛型为 Backend,后者为 Runtime。公开方法和数据契约见稀疏手册。
量化链路已有多维 block scale、非末轴打包与尾包处理、量化布局变换、部分索引以及融合量化回读实现。不要将逻辑 shape 当作打包存储 shape,也不要将 FP8/FP4 编码当作整数值转换。相关入口见 Kernel 量化、量化张量布局和融合事务。不同 scheme 的操作覆盖并不相同。
批量回读按实际设备与 stream 组织描述符,见张量事务。
6. 训练与模型推理
- 训练与状态保存:配置自动微分 Backend、更新参数、累积梯度及保存恢复训练状态。
- 模型加载与推理:加载本地权重、构造对话提示、采样生成及图片输入。
- 原生 PyTorch:
ruda:0的一阶归一化、分页注意力及选中路由权重 autograd,显式 AdamW/GradScaler 与有序历史梯度选项;StaticGraph 仍仅支持推理。