【Pytorch】【MacOS】14.m1芯片使用mps进行深度模型训练

读者要先自行安装python以及anaconda,并且配置pytorch环境

第一步 测试环境

import torch
# 判断macOS的版本是否支持
print(torch.backends.mps.is_available())
# 判断mps是否可用
print(torch.backends.mps.is_built())
  • 如果第一个语句为False,说明当前MacOS的版本不够,需要升级到12.3版本及以上,且安装了arm64原生Python
  • 如果第二个语句为Fasle,代表还没有安装nightly版本的Pytorch

第二步 安装nightly版本的Pytorch

conda install pytorch torchvision torchaudio -c pytorch-nightly

安装完成后使用

print(torch.backends.mps.is_built())

进行验证是否可以使用mps进行训练

当两项都为True的时候,在进行下面的步骤

第三步 使用GPU进行训练

代码演示为自定义的CIFAR10数据集的训练 可以参考【Pytorch】13.搭建完整的CIFAR10模型
首先我们先要引入设备

# 配置GPU为mps
device = torch.device("mps")

然后我们需要在三处添加为gpu训练

  • 神经网络对象
  • 损失函数
  • DataLoader中的数据
# 3.创建神经网络
model = CIFAR10Model().to(device)


# 4.设置损失函数与梯度下降算法
loss_fn = nn.CrossEntropyLoss().to(device)

    for data in train_loader:
        # 训练基本流程
        inputs, labels = data
        # 加入gpu训练
        inputs, labels = inputs.to(device), labels.to(device)


    with torch.no_grad():
        for data in test_loader:
            # 测试集流程
            inputs, labels = data
            inputs, labels = inputs.to(device), labels.to(device)

分别在上面四处进行修改
就可以实现m1芯片来进行gpu训练

性能对比

M1 mac CPU训练

在这里插入图片描述

batch_size=64的情况下每训练100次的时间

M1 mac GPU训练

在这里插入图片描述
batch_size=64的情况下每训练100次的时间

我们可以看到使用GPU的速度在本模型中还是比CPU快不少的

参考文章

炼丹速度×7!你的Mac电脑也能在PyTorch训练中用GPU加速了
【MacOS】MacBook使用本机m1芯片GPU训练的方法(mps替代cuda)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/643527.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自定义一个SpringBoot场景启动器

前言 一个刚刚看完SpringBoot自动装配原理的萌新依据自己的理解写下的文章,如有大神发现错误,敬请斧正,不胜感激。 分析SpringBoot自动配置原理 SpringBoot的启动从被SpringBootApplication修饰的启动类开始,SpringBootApplicaiotn注解中最…

浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想

整合第三方技术 不要单单学习指定技术与springboot整合的方式 学习目标的是整合整体的技术的思路 拿到任何一个第三方技术后我们在springboot中如何操作 这是真正我们应该学习的东西 以后能整合任意技术 整合JUnit JUnit 是一个流行的开源测试框架,用于 Java …

Redis优化笔记

Redis优化 一:Key: 1.1.Key的规范: 测试如下: 1.2.拒绝BigKey: 我们可以用: MEMORY USAGE name命令来看它的大小。 注意,这里的第二种之所以不使用Keys *,因为在实际生产时&#…

NDIS小端口驱动开发(一)

在四种NDIS相关的驱动中,微型端口驱动(也经常翻译为为小端口驱动)位于驱动栈的底部,一般将它理解为NIC设备的驱动程序: 有几种类型的微型端口驱动程序类型: 无连接微型端口驱动程序用于控制无连接网络媒体 ,如以太网的…

SpringBoot接入Knife4j接口文档

0.介绍 1) Knife4j是什么 Knife4j是Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,有着比Swagger更为美观的UI以及功能。 例如以下效果图: 2) 官方链接 官网:Knife4j …

FastSAM 部署 rknn

基于yolov8(ultralytics)工程导出的FastSAM的onnx模型,后处理和yolov8seg是一样的。      模型和完整测试代码。 1 FastSAM 导出 onnx 导出onnx的方式有两种,一种使用FastSAM工程,一种是使用yolov8(ultralytics)工程。本篇博客使用yolov…

2024年【N1叉车司机】免费试题及N1叉车司机模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 N1叉车司机免费试题考前必练!安全生产模拟考试一点通每个月更新N1叉车司机模拟试题题目及答案!多做几遍,其实通过N1叉车司机模拟考试题库很简单。 1、【多选题】《中华人民共和国特…

3款录屏录制软件,打造专业级视频内容

随着技术的不断发展,人们在日常工作和学习中经常会遇到记录电脑屏幕的需求,例如录制游戏过程、制作教程、保存会议记录等。为了解决这一需求,许多录屏录制软件应运而生。本文将介绍三款常见的录屏录制软件,通过分析它们的特点和使…

【C++】<知识点> 标准模板库STL(上)

文章目录 一、STL---string类 1. 常用构造函数 2. 常用操作 3. 字符串流处理 二、STL---容器 1. STL及基本概念 2. 顺序容器简介 3. 关联容器简介 4. 容器适配器简介 5. 常用成员函数 三、STL---迭代器 1. 普通迭代器 2. 双向、随机访问迭代器 3. 不同容器的迭代器…

SpringBoot2.0.x旧版集成Swagger UI报错Unable to infer base url...解决办法

一、问题描述 1.1项目背景 SpringBoot2.0.9的旧版项目维护开发,集成Swagger-ui2.9.2无法访问的问题。不用想啊,这种老项目是各种过滤器拦截器的配置,访问不到,肯定是它们在作妖。懂得都懂啊,这里交给大家一个排错的办…

医院挂号就诊系统的设计与实现

前端使用Vue.js 后端使用SpiringBoot MyBatis 数据使用MySQL 需要项目和论文加企鹅:2583550535 医院挂号就诊系统的设计与实现_哔哩哔哩_bilibili 随着社会的发展,医疗资源分布不均,患者就诊难、排队时间长等问题日益突出,传统的…

基于机器学习预测未来的二氧化碳排放量(随机森林和XGBoost)

基于机器学习预测未来的二氧化碳排放量(随机森林和XGBoost) 简介: CO2排放是当今全球关注的环境问题之一。本文将使用Python对OWID提供的CO2排放数据集进行分析,并尝试构建机器学习模型来预测未来的CO2排放趋势。我们将探索数据…

Xilinx(AMD) FPGA通过ICAP原语读取芯片IDCODE实现方法

1 概述 Xilinx每种型号的FPGA芯片都有一个唯一的IDCODE与之对应,同一型号不同封装的IDCODE是相同的。IDCODE的获取方法包括JTAG、ICAP原语、AXI_HWICAP IP核等。获取IDCODE常用于根据芯片型号改变代码的功能,或者对代码进行授权保护,只能在指…

【汽车之家注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

Android kotlin协程

说明 可代替线程整异步可控制,灵活 (控制优先级,内存占用等)速度快 效率高有数量上限 使用 runBlocking 一般用于测试 不建议使用GlobalScope.launch 全局的 生命周期跟随application 不建议使用CoroutineScope(job) 用 基本使…

《python编程从入门到实践》day38

# 昨日知识点回顾 定义、迁移模型Entry # 今日知识点学习 18.2.7 Django shell 每次修改模型后,看到重启后的效果需要重启shell,退出shell会话Windows系统按ctrlZ或者输入exit() 18.3 创建页面:学习笔记主页 创建页面三阶段&#xf…

Postgresql源码(133)优化器动态规划生成连接路径的实例分析

物理算子的生成分为两步,基表的扫描路径生成set_base_rel_pathlists;连接路径生成(make_rel_from_joinlist动态规划)。本篇简单分析实现。看过代码会发现,“基表的扫描路径生成”其实就是作为连接路径生成dp计算的第一…

【Redis】 关于 Redis 哈希类型

文章目录 🍃前言🎋命令介绍🚩hset🚩hget🚩hexists🚩hdel🚩hkeys🚩hvals🚩hgetall🚩hmget🚩hlen🚩hsetnx🚩hincrby&#x1…

快速分析变量间关系(Boruta+SHAP+RCS)的 APP(streamlit)

快速分析变量间关系(BorutaSHAPRCS)的 APP(streamlit) 以下情况下,你需要这个快速分析的APP: 正式分析之前的预分析,有助于确定分析的方向和重点变量;收集变量过程中,监测收集的变量…

如果突然失业,靠这个项目也能养活自己,6天收入3K

在前两天,我与两位好友相约外出就餐。当时正值雨天,我们便选择了一家大排档,边品尝美食边畅谈人生。聊得尽兴,直到凌晨一点多才回到家中。其中一位朋友最近刚刚遭遇裁员,为了寻找新的工作机会,他已经经历了…