HyperAI超神经
Back to Headlines

将神经网络编译为C语言,实现1744倍推理加速

a day ago

Isaac Clayton在2025年5月27日发布了一篇长达25分钟的文章,详细描述了他如何通过将神经网络(Neural Network,简称NN)转换为C语言,实现了对康威生命游戏的3×3核函数学习的1744倍加速。这篇文章不仅介绍了实验的过程,还分享了他在开发过程中的笔记和心得。 主要信息及过程 Clayton受到Google自我组织系统研究组关于“可微逻辑细胞自动机”的研究启发,决定使用神经网络来模拟康威生命游戏中的3×3核函数。传统上,康威生命游戏是一个简单的二维网格,每个细胞根据其周围8个邻居的状态,遵循两条规则决定生死:如果一个细胞有3个活邻居,它会复活;如果一个细胞本身活着并且有2个活邻居,它将继续存活。其他情况下,细胞将死亡。 为了用神经网络实现这个功能,Clayton引入了一个新的概念:“可微逻辑门网络”(Deep Differentiable Logic Gate Networks,简称DLGNs)。在这种网络中,每个神经元有固定的权重0或1,而不是常见的连续权重。这些权重被称为“导线”,而激活函数则由16种基本逻辑门的加权组合来实现。Clayton通过将输入值从0和1之间的离散值放松到0.0到1.0之间的连续值,成功地使网络能够通过梯度下降进行训练。 技术挑战与解决方案 在实验初期,Clayton遇到了几个主要的技术障碍。首先是关于如何初始化导线的问题。最初,他尝试了均匀分布的初始化方法,但模型无法收敛。后来,他发现如果将导线权重初始化为0到1之间的随机值,并应用softmax操作来确定每层的连接方式,可以显著提高模型的收敛速度。 另一个挑战是如何提取学得的逻辑电路。Clayton编写了一些代码,使用argmax操作来选择每层中贡献最大的逻辑门,从而得到一个优化后的离散逻辑电路。为了进一步简化电路,他还实现了两种优化方法:死代码消除和复制传播。这使得最终电路中只有170个基本逻辑门,大大减少了计算复杂度。 编译和优化 Clayton将学到的逻辑电路编译为位并行C程序。在C程序中,每个细胞实际上是64个网格细胞的集合,通过位操作可以一次性处理64个细胞。这种位并行的方法显著提高了计算效率。最终,他通过对512×512的网格进行了10万次推理测定了C程序的性能,发现单线程C程序比JAX的Python实现快了1744倍。Clayton强调,这个加速是将GPU上的浮点运算转化为CPU上的位并行运算的结果。 业内评价与公司背景 这篇研究展示了神经网络和传统计算方法结合的潜力,尤其是在优化特定问题的推理速度方面。业内专家认为,这种将复杂的机器学习模型转化为高效的硬件代码的方法,未来可能会在更多领域得到应用。Clayton目前是MIT的一名学生,即将在旧金山的一个Rust实习项目中继续他的技术探索。 总的来说,这项实验不仅验证了可微逻辑门网络的有效性,还为未来的优化研究打开了新的思路。Clayton的工作在技术社区引起了广泛关注,被视为机器学习与低级编程融合的一个有趣案例。

Related Links