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

为什么dataloader出来batchsize为8,进入到model之后就变成了2

首先说原因,大概率是由于一个batchsize中的数据被分载到四个gpu上工作了,你可能设置了gpu数量为1,但是如果不设置gpu的可见域,它依然会默认调用所有可用gpu资源进行分载,这就导致事实上只用了四分之一的数据,后面计算的梯度都没算进去,所以解决办法就是重新定义gpu的可见域:

代码通常由以下组成:

parser.add_argument('-g', '--gpu', default=0, type=int,
                    help='indices of GPUs to enable (default: all)')
gpu = str(args.gpu)
os.environ["CUDA_VISIBLE_DEVICES"] = gpu

如此,所有数据就都在一个gpu上了,不用考虑分载的问题。

另外说明,如果本身就需要实现多gpu并行,那是正常的,前提得保证可见域和需要用到gpu数量的对齐

相关文章:

  • 用python的python-docx模块读取、修改docx文件并批量替换关键字
  • [创业之路-305]:从时域、从频率两个不同的角度看股票的趋势和买入和卖出时机
  • ML.NET库学习008:使用ML.NET进行心脏疾病预测模型开发
  • 【函数题】6-12 二叉搜索树的操作集
  • 大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
  • 【20250216】二叉树:二叉树的层序遍历Ⅱ
  • 设置默认构建变体 Build Variant
  • Ubuntu24.04无脑安装docker(含图例)
  • Linux、Docker与Redis核心知识点与常用命令速查手册
  • PPT工具集
  • Javascript的数据类型
  • 开始第一个Pod与Deployment
  • Transformer多头注意力并行计算原理与工业级实现:从数学推导到PyTorch工程优化
  • C++上机_日期差值
  • C++17 中 std::size、std::empty 和 std::data 非成员函数介绍
  • VSCode 接入DeepSeek V3大模型,附使用说明
  • 【golang】channel带缓存和不带缓存的区别,应用场景解读
  • Spring MVC多语言支持揭秘:让你的应用走向世界
  • 轻量级分组加密算法RECTANGLE
  • 网络工程师 (41)IP协议、IP地址表示方法
  • 专家:家长要以身作则,孩子是模仿者学习者有时也是评判者
  • 商务部:中方敦促美方尽快停止232关税措施
  • 新任美国驻华大使庞德伟抵京履职,外交部回应
  • 张广智︱“编年事辑”:打开学人心路历程的窗户
  • 国际奥委会举办研讨会,聚焦如何杜绝操纵比赛
  • 由我国牵头制定,适老化数字经济国际标准发布