基于Pytorch使用GPU运行模型方法及可能出现的问题解决方法

简介: 基于Pytorch使用GPU运行模型方法及可能出现的问题解决方法

基于Pytorch使用GPU运行模型方法及注意事项

一、在基于pytorch深度学习进行模型训练和预测的时候,往往数据集比较大,而且模型也可能比较复杂,但如果直接训练调用CPU运行的话,计算运行速度很慢,因此使用GPU进行模型训练和预测是非常有必要的,可以大大提高实验效率。如果还没有配置好运行环境的博友们可以参考下面博主的文章。

1、点击打开《基于Windows中学习Deep Learning之搭建Anaconda+Cudnn+Cuda+Pytorch+Pycharm工具和配置环境完整最简版》文章

2、点击打开《基于Pytorch查看本地或者远程服务器GPU及使用方法》文章

二、具体方法分为两个大部分(模型和数据集)。

  • 首先将模型model移动到cuda设备也就是GPU上,注意:此大模型可以内含多个子模型,子模型无需再重复移动到GPU上
model = Net() # 举例模型
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") 
model.to(device) # 移动举例模型到cuda

或者

model = Net() # 举例模型
device = torch.cuda.current_device() if args.cuda else torch.device('cpu')
model.to(device) # 移动举例模型到cuda
  • 将数据集(包含训练集和测试集及所包含的标签数据集)移动到cuda设备也就是GPU上,使用数据集.cuda()形式完成。
drug_embeddings = drug_embeddings.cuda()
protein_embeddings = protein_embeddings.cuda()
effectives = effectives.cuda()

或者

drug_embeddings = drug_embeddings.to(device)
protein_embeddings = protein_embeddings.to(device)
effectives = effectives.to(device)

三、问题及方法

  • 问题 1:torch.FloatTensor和torch.cuda.FloatTensor的差异
Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same or input should be a MKLDNN tensor and weight is a dense tensor

问题中文翻译成

输入类型(torch.FloatTensor)和权重类型(torch.cuda.FloatTensor)应该相同,或者输入应该是MKLDNN张量,权重是密集张量
  • 问题 2:数据运算过程中需交互的情况下不在同一个设备上
Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

问题中文翻译成

预期所有张量都在同一设备上,但至少找到了两个设备,cuda:0 和 cpu !
  • 问题1和问题2解决方法(相同):首先根据错误的提示找到代码中是哪行数据出现的问题,然后针对性的解决,以数据XR出问题举例,分两种情况:第一种情况是如果此数据XR通过torch.FloatTensor(数据XR)构造,那么改成torch.cuda.FloatTensor(数据XR)即可;第二种情况是并非构造数据XR,而是将数据XR传输到另一个子模型中,那么直接在数据XR的后面加上cuda即可,也就是“数据XR.cuda()”即可。


  • 问题 3:代码运行过程中CUDA运输内存不够分配

CUDA out of memory. Tried to allocate 490.00 MiB (GPU 0; 2.00 GiB total capacity; 954.66 MiB already allocated; 62.10 MiB free; 978.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

问题中文翻译成

CUDA内存不足。尝试分配490.00 MiB(GPU 0;2.00 GiB总容量;954.66 MiB已分配;62.10 MiB可用;PyTorch总共保留978.00 MiB)如果保留内存>>已分配内存,请尝试设置max_split_size_mb以避免碎片。请参阅内存管理和PYTORCH_CUDA_ALLOC_CONF的文档
  • 问题3解决方法:运算内存不够的情况下有两种解决方法,第一种方法一般缩小数据集批次大小,也就是batch_size缩小,比如:可以将原来batch_size=256那么缩小成batch_size=16;第二种就是去服务器上跑代码,也就是更换更好的GPU去运行,如果还是出现同样的问题,那么此两种方法结合使用最好。
  • 后续出现新的问题会继续更新,敬请期待!


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
6月前
|
边缘计算 人工智能 PyTorch
130_知识蒸馏技术:温度参数与损失函数设计 - 教师-学生模型的优化策略与PyTorch实现
随着大型语言模型(LLM)的规模不断增长,部署这些模型面临着巨大的计算和资源挑战。以DeepSeek-R1为例,其671B参数的规模即使经过INT4量化后,仍需要至少6张高端GPU才能运行,这对于大多数中小型企业和研究机构来说成本过高。知识蒸馏作为一种有效的模型压缩技术,通过将大型教师模型的知识迁移到小型学生模型中,在显著降低模型复杂度的同时保留核心性能,成为解决这一问题的关键技术之一。
541 6
|
7月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
619 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
8月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.0性能优化实战:4种常见代码错误严重拖慢模型
我们将深入探讨图中断(graph breaks)和多图问题对性能的负面影响,并分析PyTorch模型开发中应当避免的常见错误模式。
467 9
|
10月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
425 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
10月前
|
机器学习/深度学习 PyTorch 算法框架/工具
提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
本文将深入探讨L1、L2和ElasticNet正则化技术,重点关注其在PyTorch框架中的具体实现。关于这些技术的理论基础,建议读者参考相关理论文献以获得更深入的理解。
297 4
提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
|
11月前
|
机器学习/深度学习 搜索推荐 PyTorch
基于昇腾用PyTorch实现CTR模型DIN(Deep interest Netwok)网络
本文详细讲解了如何在昇腾平台上使用PyTorch训练推荐系统中的经典模型DIN(Deep Interest Network)。主要内容包括:DIN网络的创新点与架构剖析、Activation Unit和Attention模块的实现、Amazon-book数据集的介绍与预处理、模型训练过程定义及性能评估。通过实战演示,利用Amazon-book数据集训练DIN模型,最终评估其点击率预测性能。文中还提供了代码示例,帮助读者更好地理解每个步骤的实现细节。
|
11月前
|
机器学习/深度学习 PyTorch 编译器
深入解析torch.compile:提升PyTorch模型性能、高效解决常见问题
PyTorch 2.0推出的`torch.compile`功能为深度学习模型带来了显著的性能优化能力。本文从实用角度出发,详细介绍了`torch.compile`的核心技巧与应用场景,涵盖模型复杂度评估、可编译组件分析、系统化调试策略及性能优化高级技巧等内容。通过解决图断裂、重编译频繁等问题,并结合分布式训练和NCCL通信优化,开发者可以有效提升日常开发效率与模型性能。文章为PyTorch用户提供了全面的指导,助力充分挖掘`torch.compile`的潜力。
1160 17
|
12月前
|
人工智能 自然语言处理 API
8.6K star!完全免费+本地运行+无需GPU,这款AI搜索聚合神器绝了!
FreeAskInternet是一款革命性的开源项目,它完美结合了多引擎搜索和智能语言模型,让你在不联网、不花钱、不暴露隐私的情况下,获得媲美ChatGPT的智能问答体验。这个项目最近在GitHub上狂揽8600+星,被开发者称为"本地版Perplexity"。
586 2

热门文章

最新文章

推荐镜像

更多