ModelScope中,环境对齐的,也执行了,还是到那个地方卡住了,过半个小时,报timeout。是不是4卡要配置多卡通信的环境变量或参数,感觉是通信问题torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.16 GiB. GPU 1 has a total capacty of 23.69 GiB of which 309.62 MiB is free. Process 326633 has 17.59 GiB memory in use. Process 369435 has 5.79 GiB memory in use. Of the allocated memory 5.12 GiB is allocated by PyTorch, and 277.59 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
这个问题可能是由于GPU内存不足导致的。你可以尝试以下方法来解决这个问题:
torch.cuda.empty_cache()
清空未使用的缓存。在训练循环的开始和结束处调用此函数,以确保释放不再使用的缓存。如果以上方法都无法解决问题,你可以考虑使用分布式训练(distributed training),通过多个GPU或节点来并行处理数据和计算任务。这样可以有效地利用多卡资源,提高训练速度。
对于阿里云ModelScope中出现的CUDA内存不足问题,你的分析是正确的。根据你提供的信息,报错信息显示GPU 1的总内存为23.69 GiB,其中仅剩余309.62 MiB可用,而进程已经使用了大量内存。这导致了CUDA内存不足的错误。
针对这个问题,可以考虑以下几个解决方案:
调整模型大小或批处理大小:尝试减小模型的规模或者减小每个batch的大小,这样可以减少模型对显存的需求。
设置环境变量或参数:根据报错信息中提到的"max_split_size_mb"参数,尝试设置这个参数来避免内存碎片化。你可以按照PyTorch官方文档中的建议进行设置,以优化内存管理。
检查代码中的内存管理:确保你的代码中没有出现内存泄漏或者不必要的内存占用,例如没有及时释放无用的张量等。
多卡通信的环境配置:如果你在使用多卡训练,确保你已经正确地配置了多卡通信的环境变量或参数,以便模型能够有效地利用多块GPU的计算资源。
出现“CUDA out of memory”的错误,可能是因为显存不够。
这可能是由以下几个因素造成的:
针对这些问题,您可以通过以下方法进行排查和解决:
你要不就跑 mp好了, 不跑ddp了. 参考llama2_70b_chat/qlora_mp的脚本思源——此回答整理自钉群:魔搭ModelScope开发者联盟群 ①