PyTorch团队重写「分割一切」模型,比原始实现快八倍( 三 )


剪枝的方法多种多样 , 从完全非结构化到高度结构化 。虽然非结构化剪枝理论上对精度的影响最小,但 GPU 在进行大型密集矩阵乘法方面尽管非常高效 , 然而在稀疏情况下可能还会遭受显着的性能下降 。PyTorch 最近支持的一种剪枝方法旨在寻求平衡,称为半结构化(或 2:4)稀疏性 。这种稀疏存储将原始张量减少了 50%,同时产生密集张量输出 。参见下图的说明 。

PyTorch团队重写「分割一切」模型,比原始实现快八倍

文章插图
为了使用这种稀疏存储格式和相关的快速内核,接下来要做的是剪枝权重 。本文在 2:4 的稀疏度下选择最小的两个权重进行剪枝,将权重从默认的 PyTorch(“strided”)布局更改为这种新的半结构化稀疏布局很容易 。要实现 Apply_sparse (model),只需要 32 行 Python 代码:
PyTorch团队重写「分割一切」模型,比原始实现快八倍

文章插图
在 2:4 的稀疏度下,本文观察到 vit_b 和批大小为 32 时的 SAM 峰值性能:
PyTorch团队重写「分割一切」模型,比原始实现快八倍

文章插图
最后,一句话总结这篇文章:本文介绍了迄今为止在 PyTorch 上最快的 Segment Anything 实现方式 , 借助官方发布的一系列新功能,本文在纯 PyTorch 中重写了原始 SAM,并且没有损失准确率 。
感兴趣的读者可以查看原博客了解更多内容 。
参考链接:https://pytorch.org/blog/accelerating-generative-ai




推荐阅读