当前位置: 首页 > news >正文

【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 = datainputs, 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)

相关文章:

【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,说明当前…...

go学习笔记-从圣经中抄录的接口值的思考

接口值 接口值,由两个部分组成,一个具体的类型和那个类型的值 下面4个语句中,变量w得到了3个不同的值。( 开始和最后的值是相同的) var w io.Writer w os.Stdout w new(bytes.Buffer) w nil var w io.Writer var…...

ICML 2024 时空数据(Spatial-Temporal)论文总结

2024ICML(International Conference on Machine Learning,国际机器学习会议)在2024年7月21日-27日在奥地利维也纳举行 (好像ICLR24现在正在维也纳开)。 本文总结了ICML 24有关时空数据(Spatial-temporal) 的相关论文…...

多线程(C++11)

多线程(C) 文章目录 多线程(C)前言一、std::thread类1.线程的创建1.1构造函数1.2代码演示 2.公共成员函数2.1 get_id()2.2 join()2.3 detach()2.4 joinable()2.5 operator 3.静态函数4.类的成员函数作为子线程的任务函数 二、call…...

HLS入门

目录 一、 内容介绍二、 理解HLS2.1 HLS是什么?与VHDL/Verilog编程技术有什么关系?2.2 HLS有哪些关键技术问题?目前存在什么技术局限性? 三、 HLS在Quartus上的实现3.1 配置环境3.2 测试 四、 参考链接 一、 内容介绍 理解HLSHLS在Quartus上…...

电信光猫的USB存储对外网开放访问

前提条件当然是要有公网IP地址了,没有的话去找电信索要,然后可以使用动态域名正常访问。 我的电信光猫发现共享访问速度还可以,会有31M/s左右的写入速度 但是有一个不方便的是,无法从外网提供访问,SMB协议所用的445端…...

世界上首位AI程序员诞生,AI将成为人类的对手吗?

3月13日,世界上第一位AI程序员Devin诞生,不仅能自主学习新技术,自己改Bug,甚至还能训练和微调自己的AI模型,表现已然远超GPT-4等“顶流选手”。 AI的学习速度如此之快,人类的教育能否跟上“机器学习”的速…...

什么是创造力?如何判断自己的创造力?

创造力,主要表现为创新思想、发现和创造新事物的能力,是知识,智力和能力的综合能力,尤其是在职业发展方面,创造力具有重要的意义,企业的核心竞争力就来源于创造力,这就需要具有创造力的员工来推…...

Elasticsearch集群搭建学习

Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器?如何自定义分词器?拼音分词器注意事项? 自动补全数据同步集群搭建ES集群结构创…...

数据库(vb.net+OleDB+Access)简易学生信息管理系统

在我们日常生活当中,数据库一词往往离不开我们的编程界,在学校、仓库等方面起着存储数据及数据关系作用的文件。相较于Excel,Access可以存储无限多的记录,内容也十分丰富,例如文本、数字、日期、T&F等。而且不需要…...

Android 自定义图片进度条

用系统的Progressbar,设置图片drawable作为进度条会出现图片长度不好控制,容易被截断,或者变形的问题。而我有个需求,使用图片背景,和图片进度,而且在进度条头部有个闪光点效果。 如下图: 找了…...

对话:用言语构建深刻的思想碰撞

对话:用言语构建深刻的思想碰撞 在写书中,对话是一种有力的工具,能与读者进行有效的沟通和交流,引发深思和反思。它不仅是信息传递的方式,更是加深情感、探讨主题和吸引读者参与的桥梁。你应从读者的角度思考&#xf…...

Linux完整版命令大全(九)

4. linux压缩备份命令 ar 功能说明&#xff1a;建立或修改备存文件&#xff0c;或是从备存文件中抽取文件。语  法&#xff1a;ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]补充说明&#xff1a;ar可让您集合许多…...

solidworks画螺栓学习笔记

螺栓 单位mm 六边形 直径16mm 水平约束 拉伸 选择厚度6mm 拉伸切除 画相切圆 切除厚度6mm&#xff0c;反向切除 &#xff0c;拔模角度45 螺栓 直径9mm&#xff0c;长度30mm 倒角 直径1mm&#xff0c;角度45 异形孔向导 螺纹线 偏移打勾&#xff0c;距离为2mm&#…...

【Spark】加大hive表在HDFS存的每个文件的大小

配置参数&#xff1a; spark.hadoop.hive.exec.orc.default.stripe.size78643200 spark.hadoop.orc.stripe.size78643200 spark.hadoopRDD.targetBytesInPartition78643200 spark.hadoop.hive.exec.dynamic.partition.modenonstrict spark.sql.sources.partitionOverwriteMode…...

2024 年 5 个 GO REST API 框架

什么是API&#xff1f; API是一个软件解决方案&#xff0c;作为中介&#xff0c;使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值&#xff1a; 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。API不仅仅是几行代码&#xff1b;这些是为移动开…...

socket地址理解

socket介绍 套接字的基本概念 1. 套接字的定义&#xff1a; 套接字&#xff08;socket&#xff09;是计算机网络中用于通信的端点&#xff0c;它抽象了不同主机上应用进程之间双向通信的机制。 2. 套接字的作用&#xff1a; 套接字连接应用进程与网络协议栈&#xff0c;使…...

Gopeed的高级用法

Gopeed是一个开源全平台下载器&#xff0c;具体简介请参考&#xff1a; “狗屁下载器”&#xff1f;Gopeed - 开源全平台下载器 (免费轻量 / 比 Aria2 好用 / 远程下载) - 异次元软件世界 (iplaysoft.com) 这里主要介绍下自己摸索出来的 Gopeed 的高级做法。 有的网站添加的…...

OpenHarmony系统使用gdb调试init

前言 OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;适配新的开发板时&#xff0c;启动流程init大概率会出现问题&#xff0c;其为内核直接拉起的第一个用户态进程&#xff0c;问题定位手段只能依赖代码走读和增加调试打印&#xff0c;初始化过程中系统崩溃…...

【SpringCloud】Spring Cloud基本介绍

目录 回顾架构分类单体架构分布式架构微服务架构什么是微服务优点缺点微服务的架构特征&#xff1a;微服务架构面临的挑战技术挑战微服架构的设计原则微服务概念提供者(Provider)消费者(Consumer)RPC和Restful集群分布式 总结 服务拆分和远程调用服务拆分原则服务拆分示例 思考…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...