Cooperative Vectors Introduction
7 days ago
- #Rendering Engine
- #Neural Networks
- #Cooperative Vector
- 神经网络在渲染引擎中的应用始于2021年,最初用于神经材质(NM),采用离线训练和通过早期Vulkan扩展的硬件加速推理。
- 框架随后扩展以支持神经辐射缓存(NRC)的运行时训练,尽管面临平台特定的硬件加速挑战,但仍能处理宽度为16、32或64等特征的小型神经网络。
- 协作矩阵扩展(SPV_NV_cooperative_matrix,现为KHR)抽象了矩阵运算以启用硬件加速,而DirectX的WaveMatrix(Shader Model 6.8)虽已引入但尚未完全发布。
- 协作向量(VK_NV_cooperative_vector)解决了神经材质和神经纹理压缩(NTC)中数据分歧的挑战,实现了针对每像素不同权重的向量-矩阵操作。
- HLSL中的长向量是存储在VGPRs中的透明数据结构,可在着色器阶段间访问,每个线程拥有其向量以高效处理像NRC中的分歧输入。
- 矩阵分为普通布局(行主序/列主序)和优化布局(用于推理的MulOptimal和用于训练的OuterProductOptimal),优化布局为不透明,需转换才能访问。
- 推理使用MulOptimal布局通过矩阵转换和操作如MatMul或MatMulAdd进行,而训练则涉及使用协作向量计算梯度以更新输入、权重和偏置。
- 未来发展包括DirectX转向结合协作向量与矩阵的线性代数特性,以及Vulkan将协作矩阵提升为KHR标准,而协作向量仍保持NVIDIA专有。