Redian新闻
>
NeurIPS 2022 | 训练速度100倍提升!基于PyTorch实现的可微逻辑门网络开源

NeurIPS 2022 | 训练速度100倍提升!基于PyTorch实现的可微逻辑门网络开源

公众号新闻


©作者 | 袁铭怿

来源 | 机器之心



本文通过逻辑门组合学习来探索面向机器学习任务的逻辑门网络。这些网络由 AND 和 XOR 等逻辑门组成,为了实现有效训练,本文提出可微逻辑门网络,一种结合了实值逻辑和网络连续参数化松弛的架构。
随着神经网络的成功应用,各项研究和机构也一直在致力于实现快速且高效的计算,特别是在推理时。对此,各种技术应运而生,包括降低计算精度,二进制和稀疏神经网络。本文中,来自斯坦福大学、萨尔茨堡大学等机构的研究者希望训练出一种不同的、在计算机领域被广泛应用的体系架构:逻辑门网络(logic (gate) networks)。

训练像逻辑门这样的离散组件网络所面临的问题是,它们是不可微的,因此,一般而言,不能通过梯度下降等标准方法进行优化。研究者提出了一种方法是无梯度优化方法,如演化训练(evolutionary training),它适用于小型模型,但不适用于大型模型。

在这项工作中,该研究探索了用于机器学习任务的逻辑门网络。这些网络由「AND」和「XOR」等逻辑门电路组成,可以快速执行任务。逻辑门网络的难点在于它通常是不可微的,不允许用梯度下降进行训练。因此,可微逻辑门网络的出现是为了进行有效的训练。由此产生的离散逻辑门网络实现了快速的推理速度,例如,在单个 CPU 核上每秒处理超过一百万张 MNIST 图像。这篇论文入选 NeurIPS 2022。


论文标题:

Deep Differentiable Logic Gate Networks

论文链接:

https://arxiv.org/pdf/2210.08277.pdf

代码链接:

https://github.com/Felix-Petersen/difflogic


纽约大学计算机科学教授 Alfredo Canziani 表示:由逻辑门(如 AND 和 XOR)组成的可学习组合网络,允许非常快速的执行任务及硬件实现。



距离论文公开才过去三个月,论文作者 Felix Petersen 表示该研究的官方实现已经公布,他们发布了 difflogic 项目,这是一个基于 pytorch 实现的可微逻辑门网络库。不仅如此,经过优化现在的训练速度比最初的速度快 50-100 倍,因为该研究提供了高度优化的 CUDA 内核。





项目介绍




difflogic 是一个基于 Python 3.6 + 和 PyTorch 1.9.0 + 的库,基于逻辑门网络进行训练和推理。该库安装代码如下:

pip install difflogic
需要注意的是,使用 difflogic,还需要 CUDA、CUDA 工具包(用于编译)以及 torch>=1.9.0(匹配 CUDA 版本)。

下面给出了 MNIST 数据集的可微逻辑网络模型的定义示例:


from difflogic import LogicLayer, GroupSum
import torch

model = torch.nn.Sequential(
    torch.nn.Flatten(),
LogicLayer(78416_000),
LogicLayer(16_000, 16_000),
LogicLayer(16_000, 16_000),
LogicLayer(16_000, 16_000),
LogicLayer(16_000, 16_000),
GroupSum(k=10, tau=30)
)


该模型接收了 784 维的输入,并返回 k=10,对应于 MNIST 的 10 个类。该模型可以用 torch.nn.CrossEntropyLoss 进行训练,类似于在 PyTorch 中训练其他神经网络模型的方式。值得注意的是,Adam 优化器(torch. optimt .Adam)可用于训练,推荐的默认学习率是 0.01 而不是 0.001。最后,同样需要注意的是,与传统的 MLP 神经网络相比,逻辑门网络每层神经元的数量要高得多,因为后者非常稀疏。

为了深入了解这些模块的细节,下面是一些更详细的示例:


layer = LogicLayer(
    in_dim=784,             # number of inputs
    out_dim=16_000,         # number of outputs
    device='cuda',          # the device (cuda / cpu)
    implementation='cuda',  # the implementation to be used (native cuda / vanilla pytorch)
    connections='random',   # the method for the random initialization of the connections
    grad_factor=1.1,        # for deep models (>6 layers), the grad_factor should be increased (e.g., 2) to avoid vanishing gradients
)

模型推理

在训练期间,模型应该保持在 PyTorch 训练模式,即.train (),这种模式使得模型保持可微。现在有两种模式可以进行快速推理:

  • 第一种选择是使用 PackBitsTensor。PackBitsTensors 允许在 GPU 上高效动态的执行训练好的逻辑门网络。
  • 第二种选择是使用 CompiledLogicNet。CompiledLogicNet 允许在 CPU 上高效地执行固定训练的逻辑门网络。

下面给出一些实验示例,它们包含在 experiments 目录中。main.py 用于执行,main_baseline.py 是包含规则的神经网络基线。


MNIST


python experiments/main.py  -bs 100 -t  10 --dataset mnist20x20 -ni 200_000 -ef 1_000 -k  8_000 -l 6 --compile_model
python experiments/main.py  -bs 100 -t  30 --dataset mnist      -ni 200_000 -ef 1_000 -k 64_000 -l 6 --compile_model# Baselines:
python experiments/main_baseline.py  -bs 100 --dataset mnist    -ni 200_000 -ef 1_000 -k  128 -l 3
python experiments/main_baseline.py  -bs 100 --dataset mnist    -ni 200_000 -ef 1_000 -k 2048 -l 7

CIFAR-10


python experiments/main.py  -bs 100 -t 100 --dataset cifar-10-3-thresholds  -ni 200_000 -ef 1_000 -k    12_000 -l 4 --compile_model
python experiments/main.py  -bs 100 -t 100 --dataset cifar-10-3-thresholds  -ni 200_000 -ef 1_000 -k   128_000 -l 4 --compile_model
python experiments/main.py  -bs 100 -t 100 --dataset cifar-10-31-thresholds -ni 200_000 -ef 1_000 -k   256_000 -l 5
python experiments/main.py  -bs 100 -t 100 --dataset cifar-10-31-thresholds -ni 200_000 -ef 1_000 -k   512_000 -l 5
python experiments/main.py  -bs 100 -t 100 --dataset cifar-10-31-thresholds -ni 200_000 -ef 1_000 -k 1_024_000 -

想要了解更多内容,请参考原项目。


更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:[email protected] 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧
·
·
·


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
NeurIPS 2022 | 文本图片编辑新范式:单个模型实现多文本引导图像编辑邓小平垂帘听政胜过于慈禧太后【回顾与展望】2022 后疫情时代的旅游,2023 回家NeurIPS 2022 | 利用多光照信息的单视角NeRF算法S^3-NeRF,可恢复场景几何与材质信息让PyTorch创始人直呼「Amazing」的视频「脑补」,动态场景NeRF合成速度提升百倍今天随意浏览了一下CMU 2019为什么适用于Python的TensorFlow正在缓慢消亡NeurIPS 2022 | 用离散对抗训练提高视觉模型的鲁棒性和泛化能力西电 NeurIPS 2022 | 基于结构聚类的异质图自监督学习改变几行代码,PyTorch炼丹速度狂飙、模型优化时间大减【Church Park 2023排位+现房】【NEU/NEC/Berklee】【Summer和9月入住的同学要抓紧了】巴黎,巴黎(3)2022 湾区公立/私立高中 UCB 录取率排名NeurIPS 2022 | 基于激活值稀疏化的内存高效迁移学习GPT-4 Copilot X震撼来袭!AI写代码效率10倍提升,码农遭降维打击英特尔发布第四代至强可扩展处理器:PyTorch 训练性能提升 10 倍,安装量超 1 亿颗!​NeurIPS 2022 | 仅需3分钟!开源Transformer快速训练后剪枝框架来了麻省理工Python增强编译器Codon 让Python像C\\C++一样高效人老珠黄,树冻林红NeurIPS 2022 | ​NAS-Bench-Graph: 图神经网络架构搜索Benchmark​NeurIPS 2022 | DIST: 少学点反而更好!商汤开源松弛知识蒸馏方法​NeurIPS 2022 | 外包训练:无需终端上传源数据,无需联邦学习,也能得到好模型?你猜,今天我和谁一起看世界杯的决赛!NeurIPS 2022 | 基于结构聚类的异质图自监督学习NeurIPS 2022 | PointTAD: 基于稀疏点表示的多类别时序动作检测框架NeurIPS 2022 | 文本图片编辑新范式,单个模型实现多文本引导图像编辑送新书!《Python深度学习基于Torch/TF(第2版)》,有ChatGPT拓展【回顾与展望】 2022,非洲收宮之旅,阿尔及利亚,埃塞俄比亚,突尼斯用BT下载的方式在家跑千亿大模型,推理/微调速度10倍提升NeurIPS 2022 | 知识蒸馏中如何让“大教师网络”也教得好?2023招聘季 | Barclays (US)已开放Equity Research实习CVPR 2023 | 基于CLIP的微调新范式!训练速度和性能均创新高!​NeurIPS 2022 | 最优脑压缩,训练后剪枝又一力作!NeurIPS 2022 | 重振PointNet++雄风!PointNeXt:改进模型训练和缩放策略审视PointNet++老 爸 阳 了!深入理解Pytorch中的分布式训练人人PyTorch,上A100能夺冠:分析完去年200场数据竞赛,我悟了2022 USNEWS发布美国薪酬最高行业TOP25【伯克利小舍】【Church Park 2023排位+现房】【NEU/NEC/Berklee】【Fenway最美顶楼】轻量版ChatGPT训练方法开源!仅用3天围绕LLaMA打造,号称训练速度比OpenAI快15倍
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。