mac m1芯片 pytorch安装及gpu性能测试

pytorch 使用mac的m1芯片进行模型训练。

#小结:在数据量小模型参数少batch_size小时 ,cpu训练更快(原因:每次训练时数据需要放入GPU中,由于batch_size小。数据放入gpu比模型计算时间还长)

数据量大(或者batch size大)或者模型参数多 时,使用GPU训练优势明显

当模型参数大于100时,使用GPU比CPU开始有优势
注意mac gpu device是 mps ,不是cudn. device= torch.device("mps")

1 pytorch 安装及gpu验证

1.1 安装

mac需要安装 night 版本的pytorch
mac安装官网地址

conda install pytorch torchvision torchaudio -c pytorch-nightly
# 或者
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

1.2 gpu验证

主要是执行:torch.backends.mps.is_available()

以下代码输出: tensor([1.], device='mps:0')

import torch
if torch.backends.mps.is_available():
    mps_device = torch.device("mps")
    x = torch.ones(1, device=mps_device)
    print (x)
else:
    print ("MPS device not found.")

2 mac m1芯片验证

实验1 :batch_size=32, 模型参数 parameter_num=476,720

gpu 运行时长: 1min 36s

cpu 运行时长: 37.5s

实验2 :batch_size=512, 模型参数 parameter_num=476,720

gpu 运行时长: 16s

cpu 运行时长: 13.3s

实验3 :batch_size=1024, 模型参数 parameter_num=476,720

gpu 运行时长: 12.7s

cpu 运行时长: 12.4s

实验4 :batch_size=1024, 模型参数 parameter_num=6,904,128

gpu 运行时长: 13.9s

cpu 运行时长: 23.8s

实验5 :batch_size=1024, 模型参数 parameter_num=23,685,440

gpu 运行时长: 20.5s

cpu 运行时长: 53.5s

实验6 :batch_size=1024, 模型参数 parameter_num=203,618,624

gpu 运行时长: 4min 11s

cpu 运行时长: 6min 49s

附录

测试代码

import torch
from torch.utils.data import DataLoader
from torchvision import datasets,transforms
from  torch import nn,optim
batch_size=1024
mnist_train=datasets.MNIST("mnist",True,transform=transforms.Compose([
    transforms.ToTensor()    ]),download=True)
mnist_train=DataLoader(mnist_train,batch_size=batch_size,shuffle=True)
minst_test=datasets.MNIST("mnist",False,transform=transforms.Compose([
    transforms.ToTensor()  ]),download=True)
minst_test=DataLoader(minst_test,batch_size=batch_size,shuffle=True)
x,lable=next(iter(mnist_train))
print(lable)
x.shape

device=torch.device("mps")
autoencoder=AE().to(device)
critenon=nn.MSELoss()
optimizer=optim.Adam(autoencoder.parameters(),lr=1e-4)

autoencoder2=AE()
critenon2=nn.MSELoss()
optimizer2=optim.Adam(autoencoder2.parameters(),lr=1e-4)

# GPU 训练
#%%time
for epoch in range(5):
    for index,(x,_) in enumerate(mnist_train):
        x=x.to(device)
        x_hat=autoencoder(x)
        loss=critenon(x_hat,x)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    print(epoch,"loss: ",loss.item())
    
# CPU训练
# %%time
for epoch in range(5):
    for index,(x,_) in enumerate(mnist_train):
        x=x
        x_hat=autoencoder2(x)
        loss=critenon2(x_hat,x)
        optimizer2.zero_grad()
        loss.backward()
        optimizer2.step()
    print(epoch,"loss: ",loss.item())

total_params = sum(p.numel() for p in autoencoder2.parameters())
print("Total Parameters: {:,}".format(total_params))

实验1

实验3

实验4

相关推荐
SEU-WYL8 分钟前
基于深度学习的视频摘要生成
人工智能·深度学习·音视频
缘友一世22 分钟前
macOS .bash_profile配置文件优化记录
开发语言·macos·bash
tekin25 分钟前
macos 中使用macport安装,配置,切换多版本php,使用port 安装php扩展方法总结
开发语言·macos·php·port·mac多版本php安装管理·port-select
人工智能技术咨询.32 分钟前
张雪峰谈人工智能技术应用专业的就业前景!
人工智能·学习·计算机视觉·语言模型
一个很帅的帅哥1 小时前
独立显卡和集成显卡——以MAC电脑为例
macos·电脑
localbob1 小时前
uniapp超全user-agent判断 包括微信开发工具 hbuilder mac windows 安卓ios端及本地识别
windows·macos·uni-app·user-agent
追光天使1 小时前
【Mac】和【安卓手机】 通过有线方式实现投屏
android·macos·智能手机·投屏·有线
徒步僧1 小时前
mac中文件夹怎么显示.git隐藏文件
git·macos
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-05
人工智能·深度学习·神经网络·算法·机器学习·语言模型·自然语言处理
EterNity_TiMe_1 小时前
【机器学习】智驭未来:探索机器学习在食品生产中的革新之路
人工智能·python·机器学习·性能优化·学习方法