Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >炼丹速度×7!你的Mac电脑也能在PyTorch训练中用GPU加速了

炼丹速度×7!你的Mac电脑也能在PyTorch训练中用GPU加速了

作者头像
量子位
发布于 2022-05-19 05:41:02
发布于 2022-05-19 05:41:02
1.8K0
举报
文章被收录于专栏:量子位量子位
丰色 发自 凹非寺 量子位 | 公众号 QbitAI

一直以来,Pytorch在Mac上仅支持使用CPU进行训练。

就在刚刚,Pytorch官方宣布,其最新版v1.12可以支持GPU加速了。

只要是搭载了M1系列芯片的Mac都行。

这也就意味着在Mac本机用Pytorch“炼丹”会更方便了!

训练速度可提升约7倍

此功能由Pytorch与Apple的Metal工程团队合作推出。

它使用Apple的Metal Performance Shaders(MPS) 作为PyTorch的后端来启用GPU加速训练。

为了优化计算性能,MPS还针对Metal GPU系列的独特特性对每个内核进行了微调。

Metal是一个类似OpenGL的框架,只不过OpenGL适用于各平台的移动端GPU渲染和计算,Metal专用于iOS/MacOS平台,不过也兼顾了性能和易用性。 MPS就是一套基于Metal框架的库,直接调用即可使用GPU的高性能进行图形处理、构建卷积神经网络等工作。

苹果官方在搭载了M1 Ultra、20核CPU、64核GPU、128GB RAM和2TB SSD的Mac Studio上进行了测试。

(这阵容差不多能算是豪华配置了)。

他们分别训练了batch size为128的ResNet50、batch size为64的HuggingFace BERT,以及batch size=64的VGG16

从下图中我们可以发现,相比使用CPU加速,使用GPU可将模型训练速度提高约7倍,评估(evaluation)速度则最高能提约20倍。

看到这儿,有网友开始好奇它与搭载了Nvidia GPU的laptop相比性能如何。

有人表示,虽说目前M1的原始计算性能比不上英伟达的产品,但功耗方面还不错。未来苹果很有可能慢慢追上性能。

总的来说,Mac Studio现在看起来实在太香了

他进一步解释道:

“毕竟它是你花4800美元就能买到的最便宜、包含128GB GPU内存的机器。现在有了基于GPU加速的PyTorch支持,完全可以用来训练大模型、配置大的batch size。

对于我所做的那种DL工作,数据加载比实际的原始计算能力更容易成为瓶颈。”

你心动了吗?

现在就试试?

只需保证你的macOS操作系统在12.3版本及以上,且安装了arm64原生Python,然后去官网下载最新的Pytorch预览版就可以了。

地址: https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/

人工智能」、「智能汽车」微信社群邀你加入!

欢迎关注人工智能、智能汽车的小伙伴们加入我们,与AI从业者交流、切磋,不错过最新行业发展&技术进展。

ps.加好友请务必备注您的姓名-公司-职位哦~

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子位 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
高并发之——两种异步模型与深度解析Future接口
本文有点长,但是满满的干货,以实际案例的形式分析了两种异步模型,并从源码角度深度解析Future接口和FutureTask类,希望大家踏下心来,打开你的IDE,跟着文章看源码,相信你一定收获不小!
冰河
2020/10/29
5330
Android Handler机制12之Callable、Future和FutureTask
说到Callable就不能不说下java.lang.Runnable,它是一个接口,它只声明了一个run()方法,由于这个run()方法的返回值是void的,所以在执行完任务之后无法返回任何结果。
隔壁老李头
2018/08/30
7590
Android Handler机制12之Callable、Future和FutureTask
Future FutrueTask Callable类源码说明以及原理使用
  JDK内置的Future主要使用到了Callable接口和FutureTask类。
小勇DW3
2018/08/30
5650
理解Future及FutureTask的实现
Future是一种异步计算的模式,本文带你理解一下什么是Future,以及基本的FutureTask的实现原理。
Erwin
2020/08/17
1.3K0
Future Java
Future是多线程开发中常见的一种设计模式。Future模式可以返回线程执行结果的契约,通过此契约程序可以选择在合适的时机取回执行的结果,如果取回结果时线程还没有执行完成,将会阻塞调用线程等待执行结果返回。
shysh95
2021/06/10
4320
Future Java
JUC并发—14.Future模式和异步编程分析一
Future/Callable实现了一个异步执行并带有返回结果的功能。Future表示获取一个异步执行的结果,Callable表示一个异步执行的任务,Callable会产生一个结果并给到Future。
东阳马生架构
2025/05/07
1400
Callable/Future 使用及原理分析,Future .get()为啥能等待呢?
Callable/Future 和 Thread 之类的线程构建最大的区别在于,能够很方便的获取线程执行完以后的结果。首先来看一个简单的例子
源码之路
2020/09/04
5K0
Callable/Future 使用及原理分析,Future .get()为啥能等待呢?
Java是如何实现Future模式的?万字详解!
https://github.com/yuanmabiji/jdk1.8-sourcecode-blogs
源码笔记
2020/06/26
5580
Java是如何实现Future模式的?万字详解!
Java并发编程之Future与FutureTask
我们都知道实现异步可以通过Runnable接口来实现,但是Runnable接口是无法获取任务的返回值的,如果需要获取到任务的返回值,那么就需要利用Future机制了。
Java进阶之路
2022/08/03
4110
探索 JUC 之美---Future 与 FutureTaskFuture介绍FutureTask数据结构及核心参数源码解析小结
Future Future 表示一个任务的生命周期,是一个可取消的异步运算。提供了相应的方法来判断任务状态(完成或取消),以及获取任务的结果和取消任务等。 适合具有可取消性和执行时间较长的异步任务
JavaEdge
2018/05/16
8720
异步编程 - 04 基于JDK中的Future实现异步编程(上)_Future & FutureTask 源码解析
在Java并发包(JUC包)中Future代表着异步计算结果,Future中提供了一系列方法用来
小小工匠
2023/09/07
2950
异步编程 - 04 基于JDK中的Future实现异步编程(上)_Future & FutureTask 源码解析
Java - Callable、Future、FutureTask说明及使用
Callable、Future、FutureTask组合使用可以阻塞获取多线程执行的返回值,是Runnable功能的拓展。
夹胡碰
2021/01/06
3350
Java - Callable、Future、FutureTask说明及使用
【小家java】一个例子让就能你彻底理解Java的Future模式,Future类的设计思想
Future模式有点类似于网上购物,在你购买商品,订单生效之后,你可以去做自己的事情,等待商家通过快递给你送货上门。Future模式就是,当某一程序提交请求,期望得到一个答复。但是可能服务器程序对这个请求的处理比较慢,因此不可能马上收到答复。但是,在传统的单线程环境下,调用函数是同步的,它必须等到服务程序返回结果,才能继续进行其他处理。而Future模式下,调用方法是异步的,原本等待返回的时间段,在主调函数中,则可以处理其他的任务。传统的串行程序调用如下图所示:
YourBatman
2019/09/03
2K0
【小家java】一个例子让就能你彻底理解Java的Future模式,Future类的设计思想
多线程基础(十三):java中的FutureTask
可以看到,FutrueTask实现了RunnableFuture接口,而RunnableFuture接口又继承了Future和Runnable。如下图:
冬天里的懒猫
2020/10/29
3190
多线程基础(十三):java中的FutureTask
不会用Java Future,我怀疑你泡茶没我快, 又是超长图文!!
现陆续将Demo代码和技术文章整理在一起 Github实践精选 ,方便大家阅读查看,本文同样收录在此,觉得不错,还请Star
用户4172423
2020/07/14
5760
Java 异步编程实战之基于 JDK 中的 Future 实现异步编程|送书
本节主要讲解如何使用JDK中的Future实现异步编程,这包含如何使用FutureTask实现异步编程以及其内部实现原理以及FutureTask的局限性。
江南一点雨
2020/01/13
1.8K1
Java 异步编程实战之基于 JDK 中的 Future 实现异步编程|送书
线程池续:你必须要知道的线程池submit()实现原理之FutureTask!
FutureTask思维导图.png 前言 上一篇内容写了Java中线程池的实现原理及源码分析,说好的是实实在在的大满足,想通过一篇文章让大家对线程池有个透彻的了解,但是文章写完总觉得还缺点什
一枝花算不算浪漫
2020/06/01
2.1K0
FutureTask 原理剖析
Future接口和实现Future接口的FutureTask,代表异步计算的结果,Future使用示例如下:
luoxn28
2020/11/05
1K0
FutureTask 原理剖析
Java并发编程之Future与FutureTask
我们都知道实现异步可以通过Runnable接口来实现,但是Runnable接口是无法获取任务的返回值的,如果需要获取到任务的返回值,那么就需要利用Future机制了。
科技新语
2025/06/05
860
Java并发编程之Future与FutureTask
【原创】Java并发编程系列36 | FutureTask
线程池源码中出现了很多Callable、Future、FutureTask等以前没介绍过的接口,尤其是线程池提交任务时总是把任务封装成FutureTask,今天就来为大家解惑:
java进阶架构师
2020/09/22
3640
【原创】Java并发编程系列36 | FutureTask
推荐阅读
相关推荐
高并发之——两种异步模型与深度解析Future接口
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档