• 国产芯片算子优化:Rejection Sampling

    在自研 AI 加速器上实现 Rejection Sampling 时,框架组已经提供了采用 Gumbel-Max 的 PyTorch 参考实现。算法具备逐 token 并行的结构,但直接翻译成 kernel 后,数据搬运、寄存器依赖和特殊函数延迟仍会让硬件等待。换用快速数学指令,又带来了参考实现中没有的数值问题。

    这个项目要解决的问题是:

    1. 如何把算法的并行空间转化为硬件吞吐
    2. 修复验证快速路径的采样质量
      我先选择适合硬件的数据流,修复验证 低精度log 异常,再通过软件流水隐藏依赖。固定全接受测试点的 kernel cycles 从 1,530,302 降至 128,453,约 11.9×。下面围绕这几个决策展开。

    实现还区分 Exact 与 Fast 两种路径:前者需要对齐框架的随机数序列要求;后者不要求同 seed 逐位复现,可以使用硬件 RNG,但仍需验证输出分布的质量。本文的性能与数值优化主要围绕 Fast 路径展开。