RuntimeError: Attempted to send CUDA tensor received from another process

2024-04-17 18:28

本文主要是介绍RuntimeError: Attempted to send CUDA tensor received from another process,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  训练模型时报错:

RuntimeError: Attempted to send CUDA tensor received from another process; 
this is not currently supported. Consider cloning before sending.

翻译:RuntimeError:尝试发送从其他进程接收的 CUDA 张量;目前不支持此功能。在发送之前考虑克隆。

  在我的项目中,这个问题被定位在dataloder的使用里,当numworks设置为非0值时,不报此错误,模型可以正常训练。
  原因:出现这个问题的原因在于,如果dataloder的numworks设置为0,那么仅在主进程中加载数据,不使用多线程,在整理函数中如果有cuda上的tensor也没有问题。但是如果设置使用多线程,那么cuda上的数据就会不能在多个线程中传来传去,就会报出这个错误。
  解决方法:调试程序,看看在dataloader的整理函数中哪个变量是在gpu上的,在dataset的geiitem里返回时直接把它放在cpu上。或者把numworkers设置为0。

这篇关于RuntimeError: Attempted to send CUDA tensor received from another process的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912504

相关文章

【pytorch04】创建Tensor

numpy中的数据创建tensor 数据已经在numpy中了,将numpy中的数据转到tensor中来,因为我们将使用tensor在GPU上进行加速运算 从NUMPY导入的FLOAT其实是DOUBLE类型 list中的数据创建tensor FloatTensor()和大写的Tensor()接收的是shape(即数据的维度),当让也可以接收现有的数据, 接收数据时必须用list表示,接收s

关于使用SetPriorityClass将进程设置为PROCESS_MODE_BACKGROUND_BEGIN的一点总结

一、背景 早上在B站看到了下面这个视频 【Win系统旧代码导致CPU干冒烟?谷歌程序员惨背锅】 然后想起自己上一年处理了公司某个项目的同样的问题,于是就来总结一下使用SetPriorityClass将进程设置为PROCESS_MODE_BACKGROUND_BEGIN后的相关问题。 二、代码 下面是一个demo代码,我们先来看下代码的正常运行情况下在procexp下的表现。procexp

解决:Xshell通过SSH协议连接Ubuntu服务器报“服务器发送了一个意外的数据包,received:3,expected:20”

下图所示: 日志也基本看不出来问题在哪,只是说断开了连接大概是验证失败。有幸在某论坛评论区找到了原因,是因为我的xshell版本太低了而服务器的ssh版本太高,高版本的ssh默认屏蔽了一部分不太安全的算法导致建立连接的时候验证失败无法连接。  解决: root@hya-virtual-machine:/home/hya# vim /etc/ssh/sshd_configKexAl

Ubuntu使用 NVIDIA GPU 和 CUDA 设置 LLM 的训练、微调和推理

0.引言 近年来,人工智能领域取得了令人瞩目的进步,其核心是图形处理单元(GPU)和并行计算平台的强大组合。 大模型如 GPT、BER能够理解和生成具有前所未有的流畅性和连贯性的类人文本。然而,训练这些模型需要大量的数据和计算资源,因此 GPU 和 CUDA 是这一努力中不可或缺的工具。 这个博客演示了在 Ubuntu 上设置 NVIDIA GPU 的过程,涵盖 NVIDIA 驱动程序、CUDA

Tensorflow: Cannot interpret feed_dict key as Tensor 解决报错 flask keras

文章目录 1 报错信息2 原因3 解决办法 1 报错信息 使用fask和keras时候,在本地没任何问题。 但是上传到服务器上之后,总是报做个错误: TypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("Placeholder:0", shape=(3, 3, 3, 64), dtype=floa

WPF 利用Process.Start()方法启动指定路径下的exe文件并传递参数

简单来说就是实现一个程序A 打开程序B,并且在打开的时候传递一些参数给B,最后在B窗口上显示出参数,这个小功能也是折腾了我半天。现在把我的过程整理记录下来。 1.首先我们得有一个被调用的程序,新建一个简单的WPF程序,命名为:argTest。里面加一个label,用来显示接收到的参数。直接运行该程序如下: 2.新建一个WPF程序用来启动我们的argTest.exe程序,命名为call。添加窗体

[19] Opencv_CUDA应用之 基于形状的对象检测与跟踪

Opencv_CUDA应用之 基于形状的对象检测与跟踪 形状可以用作全局特征检测具有不同形状的物体,可以是直线、多边形、圆形或者任何其他不规则形状利用对象边界、边缘和轮廓可以检测具有特定形状的对象本文将使用Canny边缘检测算法和Hough变换来检测两个规则形状,即线和圆 1. Canny 边缘检测 Canny 结合了高斯滤波、梯度寻找、非极大值抑制和滞后阈值处理 高通滤波器对噪声非常敏

CUDA deviceQuery参数详解

运行sample里的deviceQuery: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\1_Utilities\deviceQuery\../../bin/win64/Debug/deviceQuery.exe Starting...CUDA Device Query (Runtime API) version (CUDART st

C++ GPU编程(英伟达CUDA)

安装编译环境 https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda_12.5.0_555.85_windows.exe CMakeLists.txt cmake_minimum_required(VERSION 3.10)set(CMAKE_CXX_STANDARD 17)set(CMA

linux 登录ftp报Received message too long 1416128883

在linux 登录ftp报Received message too long 1416128883 [root@localhost ~]# sftp oaftp@172.20.xx.xx 解决办法: [root@localhost ~]# usermod -s /bin/bash oaftp [root@localhost ~]# systemctl restart vsftpd.s