开发者社区 > ModelScope模型即服务 > 自然语言处理 > 正文

无法使用多卡

torchrun --nproc_per_node 2 finetune_dureader.py
都已经指定了2块卡进行训练,但是也只占用了一张卡的显存,都溢出了,另外一张卡也没有占用到

展开
收起
游客6zamrny2n4seu 2023-07-20 16:24:32 187 0
2 条回答
写回答
取消 提交回答
  • 在使用多卡进行训练时,确保您按照正确的方式配置和运行代码。以下是可能导致只有一张显卡被使用的几个常见原因:

    1. 分布式训练配置:在使用多卡进行训练之前,需要确保已正确设置分布式训练的相关参数。这包括指定 --local_rank 参数以及其他必要的分布式训练参数。

    2. 环境变量设置:在使用多卡进行训练时,需要将环境变量 CUDA_VISIBLE_DEVICES 设置为适当的值,以指定要使用的 GPU 设备。例如,如果要使用两张 GPU,可以将 CUDA_VISIBLE_DEVICES 设置为 "0,1"

    3. 代码修改:某些代码库或框架可能需要手动修改代码以支持多卡训练。请检查您的脚本或代码中是否有特定于单卡的限制,并相应地进行修改。

    4. 资源限制:确保您的硬件系统和驱动程序支持多卡训练,并且具有足够的内存和计算资源来支持所需数量的 GPU。

    5. 模型并行性:如果您的模型不支持多卡并行训练,那么即使使用多张卡,也可能无法充分利用所有的 GPU。在这种情况下,您可能需要修改模型的架构或使用其他技术(如数据并行)来实现多卡训练。

    2023-07-24 14:07:29
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在使用torchrun命令进行多卡训练时,如果指定了多张卡但只有一张卡被占用,可能是由于以下原因导致的:

    确认您的机器上是否安装了支持多卡训练的GPU驱动程序和CUDA工具包。如果您的机器上没有安装这些组件,可能会影响多卡训练的正常运行。

    检查您的代码是否正确实现了多卡训练。在使用多卡训练时,您需要手动将模型和数据分配到不同的卡上,并使用torch.nn.DataParallel或torch.nn.parallel.DistributedDataParallel等模块实现多卡训练。

    确认您的模型和数据是否足够大,以充分利用多张卡的计算能力。如果您的模型和数据较小,可能不足以占满多张卡的计算能力。

    检查您的显存分配是否正确。在使用多卡训练时,需要手动将显存分配到不同的卡上。您可以使用torch.cuda.set_device函数将当前进程分配到指定的卡上,并使用torch.cuda.empty_cache函数释放不需要的显存。

    2023-07-21 08:03:37
    赞同 展开评论 打赏

包含命名实体识别、文本分类、分词、关系抽取、问答、推理、文本摘要、情感分析、机器翻译等多个领域

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载