MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

作者: Synced 2020-02-24 15:45:40

 通过这款名为 PlaidML 的工具,不论英伟达、AMD 还是英特尔显卡都可以轻松搞定深度学习训练了。

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

众所周知,深度学习是因为 2010 年代英伟达 GPU 算力提升而快速发展起来的,不过如今市面上还有多种品牌的显卡,它们同样拥有不错的性能,后者能不能成为 AI 模型算力的基础呢?

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

如果答案是肯定的,那我们的笔记本电脑岂不就可以用来跑深度学习模型了,尤其是让我们下了血本的 MacBookPro。

MacBookPro 在科技圈覆盖面颇广,质量也不错,不能拿来做深度学习实在可惜。在选购 MacBook 的过程中,有些人会为了独立显卡而多花点钱,但到了做深度学习的时候却发现这钱花得很冤枉,因为长期以来,多数机器学习模型只能通过通用 GPU 库 CUDA 使用英伟达的 GPU。

但我们真的别无选择吗?medium 的一位博主表示,事实并非如此。一款名为 PlaidML 的深度学习框架可以破解这个困境。

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

为什么要用 GPU 做并行计算?

以建房子为例:如果单独完成,你需要花费 400 个小时,但如果你雇一个建筑工人,工期就可能减半。雇佣的工人越多,你的房子建得也越快。这就是阿姆达尔定律所揭示的内容。它是一个计算机科学界的经验法则,代表了处理器并行运算之后效率提升的能力。

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

那么为什么要用 GPU 呢?最初 GPU 并不是为深度学习专门设计的,但并行计算的本质似乎与图形处理类似。单个 GPU 的核心虽然在性能上弱一些,但在处理大数据块的算法上比 CPU 更高效,因为它们具有高度并行的结构,而且核的数量也非常多。由于图形处理和深度学习在本质上的相似性,GPU 就成为了深度学习和并行计算的首选。

除了 CUDA 就没得选了吗?

不过要想用上 GPU 的并行能力,英伟达的 CUDA 就不可回避,这种通用并行计算库是做深度学习所必须的。目前,之所以高性能云计算、DL 服务器都采用英伟达 GPU,主要原因还是在 CUDA。

如果想要充分利用笔记本的并行能力,且 N 卡又配不起,那么这篇文章介绍的 PlaidML 就非常合适了。

项目地址:https://github.com/plaidml/plaidml

PlaidML 是 Vertex.AI 2017 年开源的一款深度学习工具包。2018 年,英特尔收购了 Vertex.AI。之后 PlaidML 0.3.3 发布,开发者可以借助 Keras 在自己的 AMD 和英特尔 GPU 上完成并行深度学习任务。上个月,Vertex.AI 又发布了 PlaidML 的 0.7.0 版本。

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

PlaidML 是一种可移植的张量编译器,可以在笔记本电脑、嵌入式设备或其他设备上进行深度学习。重要的是,它并不依赖于 CUDA,而是 OpenCL 这种开放标准。

OpenCL 通用并行计算开放标准并不是为 N 卡专门设计的,因此不论你的笔记本 GPU 是 AMD、 Intel,还是 NVIDIA,它都能支持。

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

很多读者可能认为,OpenCL 的生态没有 CUDA 成熟,可能在稳定性与开发速度上都没那么快。但是,我们可以把复杂的底层机制都交给 PlaidML,我们只需要用就行了。

甚至 PlaidML 我们都不需要接触,它已经集成到了常见的深度学习框架中,并允许用户在任何硬件中调用它。目前 PlaidML 已经支持 Keras、ONNX 和 nGraph 等工具,直接用 Keras 建个模,MacBook 轻轻松松调用 GPU。

下面我们开始进入正题:如何用自己笔记本电脑的 GPU 运行一个简单的 CNN。

用笔记本 GPU 运行一个神经网络

安装和设置 PlaidML 和相关组件

首先,我们要确保自己的笔记本电脑安装了 Python 3 工作环境。作者建议在虚拟环境下运行以下代码:

  1. # install python3 virtualenv if you haven’t done so:  
  2. pip3 install virtualenv  
  3.   
  4. # Now create and activate a virtual environment for the case  
  5. python3 -m venv plaidml-venv  
  6. source plaidml-venv/bin/activate  
  7.   
  8. # Install PlaidML with Keras  
  9. pip install -U plaidml-keras  

记住一点,标准 TensorFlow 框架下的 Keras 无法使用 PlaidML,需要安装 PlaidML 定制的 Keras。

  1. # Now setup PlaidML to use the right device 
  2. plaidml-setup 

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

设置 PlaidML 第二步。

现在得到了自己选择的设备列表。以作者的电脑 Macbook Pro 15’2018 为例,设备列表如下:

  • CPU
  • 英特尔 UHD Graphics 630 显卡
  • AMD Radeon pro 560x 显卡

最后,键入「y」或「nothing」,返回保存设置。这样以来,我们就已安装所有设备,并且可以使用 GPU 来运行深度学习项目了。

在 fashion mnist 上创建 CNN 分类器

首先,启动 Jupyter Notebook。

  1. Jupyter Notebook 

然后按顺序运行以下代码,将 PlaidML 用作 Keras 后端,否则会默认使用 TensorFlow。

  1. # Importing PlaidML. Make sure you follow this order 
  2. import plaidml.keras 
  3. plaidml.keras.install_backend() 
  4. import os 
  5. os.environ["KERAS_BACKEND"] = "plaidml.keras.backend" 

现在就可以导入包,并下载 fashion 数据集。

  1. import keras 
  2. from keras.models import Sequential 
  3. from keras.layers import Dense, Dropout, Flatten 
  4. from keras.layers import Conv2D, MaxPooling2D 
  5. from keras import backend as K 
  6.  
  7. # Download fashion dataset from Keras 
  8. fashion_mnist = keras.datasets.fashion_mnist 
  9. (x_train, y_train), (x_test, y_test) = keras.datasets.fashion_mnist.load_data() 
  10.  
  11. # Reshape and normalize the data 
  12. x_train = x_train.astype('float32').reshape(60000,28,28,1) / 255 
  13. x_test = x_test.astype('float32').reshape(10000,28,28,1) / 255 

接下来使用 Keras 的序贯模块来创建一个简单的 CNN,并编译它。

  1. # Build a CNN model. You should see "INFO:plaidml:Opening device xxx" after you run this chunk 
  2. model = keras.Sequential() 
  3. model.add(keras.layers.Conv2D(filters=64, kernel_size=2, padding='same', activation='relu', input_shape=(28,28,1)))  
  4. model.add(keras.layers.MaxPooling2D(pool_size=2)) 
  5. model.add(keras.layers.Dropout(0.3)) 
  6. model.add(keras.layers.Conv2D(filters=32, kernel_size=2, padding='same', activation='relu')) 
  7. model.add(keras.layers.MaxPooling2D(pool_size=2)) 
  8. model.add(keras.layers.Dropout(0.3)) 
  9. model.add(keras.layers.Flatten()) 
  10. model.add(keras.layers.Dense(256, activation='relu')) 
  11. model.add(keras.layers.Dropout(0.5)) 
  12. model.add(keras.layers.Dense(10, activation='softmax')) 
  13.  
  14. # Compile the model 
  15. model.compile(optimizer='adam'
  16. loss=keras.losses.sparse_categorical_crossentropy, 
  17. metrics=['accuracy']) 

现在我们拟合模型,测试一下它的准确率。

  1. # Fit the model on training set 
  2. model.fit(x_train, y_train, 
  3. batch_size=64
  4. epochs=10
  5.  
  6. # Evaluate the model on test set 
  7. score = model.evaluate(x_test, y_test, verbose=0
  8. # Print test accuracy 
  9. print('\n''Test accuracy:', score[1]) 

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

更多结果。

我们训练的卷积神经网络模型在时尚分类任务上达到了 91% 的准确率,训练只用了 2 分钟!这个数字可能看起来并不惊艳,但想想 CPU 训练要多久吧:

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

用 CPU 完成相同的任务要用 2219 秒(约 37 分钟),MAC 风扇期间还会疯狂输出。

MacBook显卡不跑AI模型太浪费:这个深度学习工具支持所有品牌GPU

从以上结论中我们可以看到,借助 Macbook Pro 搭载的 GPU 进行深度学习计算要比简单地用 CPU 快 15 倍。通过 PlaidML,使用自己的笔记本电脑训练深度学习模型将变得更加简单。

截至目前(2020 年 2 月),PlaidML 可以和各种品牌的 GPU 兼容,在使用英伟达显卡时也无需 CUDA/cuDNN,也能达到类似的性能。

在 PlaidML 的 GitHub 页面上你能看到更多的 demo 和相关项目,相信随着这一工具的不断发展,它可以支持的算法也会越来越多。我们在自己的笔记本上,也能快速试验个小模型。

AI 数据 人工智能
上一篇:过度防范?莫斯科公交司机接令人工识别中国乘客,人脸识别系统也被授权启用 下一篇:百度开源业内首个口罩人脸检测及分类模型
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

自我监督学习:AI技术的未来发展方向

尽管深度学习已经在人工智能领域做出重大贡献,但这项技术本身仍存在一项致命缺陷:需要大量数据的加持。

佚名 ·  9h前
李飞飞团队研发家用AI系统 可监测独居老人新冠症状

日前,在斯坦福大学以人为本人工智能学院(HAI)的一场直播上,斯坦福大学计算机学教授李飞飞向外界介绍了人工智能家用系统,它可以跟踪居民的健康状况,包括新冠肺炎的症状,同时还能确保隐私。

王心馨 ·  13h前
AI技术在医药行业中的作用越来越大

AI可以帮助科学家和生物技术专家简化药物发现和开发的过程,协助诊断,并使通常会浪费时间和人力资源的重复性工作任务自动化……

佚名 ·  17h前
2025年智慧城市AI软件市场将增长700%

分析师机构Omdia的最新分析显示,全球智能城市人工智能(AI)软件市场将从2019年的6.738亿美元增长到2025年的49亿美元,这意味着七倍的增长。

佚名 ·  17h前
实现人工智能价值的5个障碍以及克服它们的方法

正如媒体所报道的,在实施人工智能的过程中确实存在着技术障碍,因而BCG和Gartner的专家们讨论了在企业中部署人工智能的五个陷阱,以及成功的解决方案。

Clint Boulton ·  19h前
谷歌前董事长:人工智能无法自己开创市场

人工智能对于商务运作方式正在产生越来越大的影响,而且人工智能也正在开辟各种想象不到的商机。未来不是由机器支配,未来由拥有无限想象力的人支配。

佚名 ·  1天前
谷歌的一项新研究,让机器狗小跑起来成为可能

有观点认为,尽管机器人很能干,能代替人类实现很多事情,但自然形成的原始动物还是比他们好很多。之所以这样说是因为,他们很难直接从狗身上学会像狗一样去走路。

郭仁贤 ·  1天前
「新基建」下大火的工业智能,问题依旧很多

「新基建」火了。连同 5G、人工智能、物联网等信息数字化基础设施,都成为国家新的发展方向,不仅在这些新领域内的从业者们明确了目标,传统行业对数字化转型的需求也蓄势待发。

赵子潇 ·  4天前
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载