【PyTorch】使用 Mac GPUs (Apple silicon GPUs) 训练模型

这篇具有很好参考价值的文章主要介绍了【PyTorch】使用 Mac GPUs (Apple silicon GPUs) 训练模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

根据 PyTorch 官网的文章 Introducing Accelerated PyTorch Training on Mac1 ,从 PyTorch v1.12 release 开始支持使用 Apple silicon GPUs 加速训练模型。所以要在 Mac 上加速需要1.12或更新的版本。

文章中还给出了 M1 Ultra 在模型训练/推理时相比仅使用 CPU 训练的速度差距:

【PyTorch】使用 Mac GPUs (Apple silicon GPUs) 训练模型

我的 Mac 芯片是 Apple M2 Pro,GPU 性能比 M1 Ultra 差一大截,但可能还是要比 CPU 快一些的。

【PyTorch】使用 Mac GPUs (Apple silicon GPUs) 训练模型

M1 Ultra 的浮点运算速度大约是 M2 Pro 的 3 倍。

作为对比(数据来源:www.techpowerup.com):

  • RTX 3060 12GB FP16/FP32: 12.74 TFLOPS FP64: 199.0 GFLOPS
  • RTX 3090 24GB FP16/FP32: 35.58 TFLOPS FP64: 556.0 GFLOPS
  • RTX 4080 16GB FP16/FP32: 48.74 TFLOPS FP64: 761.5 GFLOPS
  • RTX 4090 24GB FP16/FP32: 82.58 TFLOPS FP64: 1,290 GFLOPS

芯片:Apple M2 Pro
软件:conda 22.11.1, Python 3.9.6, PyTorch Version: 2.1.0.dev20230328

先查看一下 torch 能不能调用到 Apple silicon GPUs:

>>> import torch
>>> torch.backends.mps.is_available()
True
>>> torch.backends.mps.is_built()
True

可以在创建 tensor 时使用 device 参数来设置数据保存到 mps 中:

>>> import torch
>>> device = torch.device("mps")
>>> a = torch.randn((), device=device, dtype=torch.float)
>>> a
tensor(0.2838, device='mps:0')

也可以使用 .to(device) 把 CPU 上运算的 tensor 移动到 GPU 上:

>>> a = torch.tensor([1,2])
>>> a
tensor([1, 2])
>>> a.to(device)
tensor([1, 2], device='mps:0')

运行一个完整的示例2,如果没有遇到错误,就说明可以正常使用了:

import torch
import math

dtype = torch.float
device = torch.device("mps")

# Create random input and output data
x = torch.linspace(-math.pi, math.pi, 2000, device=device, dtype=dtype)
y = torch.sin(x)

# Randomly initialize weights
a = torch.randn((), device=device, dtype=dtype)
b = torch.randn((), device=device, dtype=dtype)
c = torch.randn((), device=device, dtype=dtype)
d = torch.randn((), device=device, dtype=dtype)

learning_rate = 1e-6
for t in range(2000):
    # Forward pass: compute predicted y
    y_pred = a + b * x + c * x ** 2 + d * x ** 3

    # Compute and print loss
    loss = (y_pred - y).pow(2).sum().item()
    if t % 100 == 99:
        print(t, loss)

    # Backprop to compute gradients of a, b, c, d with respect to loss
    grad_y_pred = 2.0 * (y_pred - y)
    grad_a = grad_y_pred.sum()
    grad_b = (grad_y_pred * x).sum()
    grad_c = (grad_y_pred * x ** 2).sum()
    grad_d = (grad_y_pred * x ** 3).sum()

    # Update weights using gradient descent
    a -= learning_rate * grad_a
    b -= learning_rate * grad_b
    c -= learning_rate * grad_c
    d -= learning_rate * grad_d


print(f'Result: y = {a.item()} + {b.item()} x + {c.item()} x^2 + {d.item()} x^3')

  1. https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/ ↩︎

  2. https://towardsdatascience.com/installing-pytorch-on-apple-m1-chip-with-gpu-acceleration-3351dc44d67c ↩︎文章来源地址https://www.toymoban.com/news/detail-406641.html

到了这里,关于【PyTorch】使用 Mac GPUs (Apple silicon GPUs) 训练模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MacOS(Apple Silicon)安装配置C/C++教程

    本文介绍如何在MacOS系统上利用VScode编辑器安装C/C++ 案例MacOS系统: Venture13.5(其他版本同理) Visual Studio Code是一款非常优秀的代码编辑器,下面介绍如何在官网上下载VSCode: 打开VSCode官网网址https://code.visualstudio.com/, 点击Download Mac Universal ,将文件 下载储存 至电脑上,在

    2024年02月08日
    浏览(48)
  • 用 7 行代码在本地运行 Llama 2!(苹果silicon-mac m1 m2)项目源码含模型

    总而言之: 注意:7B 型号重量约为 4GB,请确保您的机器上有足够的空间。 这是使用 Georgi Gerganov 令人惊叹的llama.cpp项目来运行 Llama 2。它通过TheBloke的 Huggingface 存储库为 Llama 7B Chat 下载一组 4 位优化的权重,将其放入 llama.cpp 中的模型目录中,然后使用 Apple 的 Metal 优化构建

    2024年02月15日
    浏览(68)
  • torchvision pytorch预训练模型目标检测使用

    参考: https://pytorch.org/vision/0.13/models.html https://blog.csdn.net/weixin_42357472/article/details/131747022 有分类、检测、分割相关预训练模型 https://pytorch.org/vision/0.13/models.html#object-detection-instance-segmentation-and-person-keypoint-detection https://h-huang.github.io/tutorials/intermediate/torchvision_tutorial.html https

    2024年03月19日
    浏览(42)
  • 使用Pytorch加载预训练模型及修改网络结构

    可以看到, AlexNet 有三个层,分别是 features、avgpool、classifier 。用 model.features 查看 features层 (也就是卷积层)的网络结构。

    2024年02月13日
    浏览(38)
  • 使用PyTorch解决多分类问题:构建、训练和评估深度学习模型

    💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互

    2024年02月07日
    浏览(42)
  • pytorch或者TensorFlow训练得到的模型嵌入到设备当中使用

    导出模型 : 首先,将已训练的模型导出为一个文件,以便在其他设备上加载和使用。导出的方法和步骤可能因PyTorch或TensorFlow的版本和使用情况而有所不同。一般来说,您需要保存模型的权重参数和结构定义,以及任何必要的标识信息(如输入维度、类别标签等)。 将模型加

    2024年02月16日
    浏览(69)
  • Pytorch迁移学习使用Resnet50进行模型训练预测猫狗二分类

    目录   1.ResNet残差网络 1.1 ResNet定义  1.2 ResNet 几种网络配置  1.3 ResNet50网络结构 1.3.1 前几层卷积和池化 1.3.2 残差块:构建深度残差网络 1.3.3 ResNet主体:堆叠多个残差块 1.4 迁移学习猫狗二分类实战 1.4.1 迁移学习 1.4.2 模型训练 1.4.3 模型预测   深度学习在图像分类、目标检

    2024年02月16日
    浏览(86)
  • PyTorch多GPU训练模型——使用单GPU或CPU进行推理的方法

    PyTorch提供了非常便捷的多GPU网络训练方法: DataParallel 和 DistributedDataParallel 。在涉及到一些复杂模型时,基本都是采用多个GPU并行训练并保存模型。但在推理阶段往往只采用单个GPU或者CPU运行。这时怎么将多GPU环境下保存的模型权重加载到单GPU/CPU运行环境下的模型上成了一

    2024年02月09日
    浏览(50)
  • 【pytorch】使用训练好后的模型权重,在验证集上输出分类的混淆矩阵并保存错误图片

    在机器学习领域,混淆矩阵是一个非常有用的指标,它可以帮助我们更好地理解模型在验证集上的表现。本文介绍了如何使用pytorch框架,利用训练好后的模型权重,在验证集上输出分类的混淆矩阵,并保存错误图片的方法。 首先,我们需要准备一个pytorch框架的模型,并将模

    2024年02月13日
    浏览(40)
  • 【深入了解pytorch】PyTorch训练和评估模型

    在机器学习和深度学习领域,PyTorch是一个非常受欢迎的深度学习框架。它提供了灵活且强大的工具,使得训练和评估模型变得更加容易。本文将介绍如何使用PyTorch来准备数据集、定义训练循环、选择优化算法,并展示如何评估模型性能。 在开始训练模型之前,我们首先需要

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包