当前位置:首页 > 内存 > 正文

cuda内存不足

  • 内存
  • 2024-09-27 12:52:46
  • 8873

一、ubuntu20.04安装NVIDIATeslaM10显卡跑llama3-70BUbuntu20.04安装NVIDIATeslaM10显卡,支持vGPU或显卡穿透,常用于虚拟化平台。虽然M10显卡的处理能力较差,仅达到GTX750的水平,但由于显存为32GB,笔者决定花时间进行实验来测试llama3-70B的安装和性能。
M10显卡是系统内置的非显示输出平台,不需要主动散热。笔者将其安装在服务器环境中。对于家庭用户,如果您没有服务器,请考虑为您的PC添加冷却硬件。
首先,将Ubuntu20.04更新到最新内核版本5.15.0-107,并禁用自动更新,防止驱动冲突。通过SSH进行远程控制,因为一旦安装了M10驱动程序,它将用作默认GPU,但不会有显示输出。
安装过程包括下载NVIDIAGRID架构的非官方驱动程序,例如NVIDIA-Linux-x86_,然后禁用默认驱动程序,设置环境变量,最后成功安装并运行测试该工具。
安装CUDA和cuDNN来支持深度学习。CUDA12.4.1匹配驱动版本,cuDNN9.1.1版本也安装成功。然而,在安装llama3-70B时,我遇到了CUDA内存低的问题,通过调整VRAM大小解决了这个问题,尽管模型很慢。
与Model8B相比,Model70B在逻辑推理方面更出色,但在中文处理方面仍有提升空间。而且70B型号虽然使用了4块GPU,但只有1块GPU在运行,资源效率较低,CPU和内存利用率较高。


二、Vr5.0gpu渲染怎么没有反应使用不兼容的GPU驱动程序版本。

使用推荐的驱动程序对于V-RayGPU的稳定体验至关重要。您可以通过以下方式查看当前安装的驱动程序版本:

帮助>系统信息。

为了方便起见,V-RayGPU在渲染开始时执行图形驱动程序检查,如果当前驱动程序与推荐的驱动程序不同,则在V-Ray消息日志窗口中打印警告消息。

解决方案:安装最新的GPU驱动。最好的方法是在V-RayGPU网站上找到推荐的驱动程序。

硬件故障

计算机中安装的显卡可以很好地处理大多数日常任务,但在使用软件时可能无法处理,例如因为V-RayGPU将在很大程度上不稳定。要确定是否属于这种情况,我们建议使用V-RayBenchmark执行GPU压力测试(CUDA)。此外,还可以使用FurMark、OctaneBench、RedshiftBench等软件进行测试。

如果V-RayBenchmark和其他基准测试出现问题,则意味着CUDA错误与硬件或操作系统故障有关。V-Ray不是这里的根本原因,它只是触发错误。

场景问题

您需要检查的下一步是错误是否仅发生在特定场景/项目中。要缩小可能的原因,请尝试渲染不同的项目/场景,并查看是否再次出现相同的错误。尝试渲染一个新的空文件。这是判断问题是否普遍存在并在每个场景中发生或者是否特定于场景的最简单方法。

–如果每个场景文件(包括新的空文件)都出现问题,则错误原因是驱动程序(1)或硬件(2)。

–如果问题仅在某些情况下发生,则可能是错误或内存不足问题。请继续执行步骤4,以确保问题不是由GPU内存不足引起的。如果没有,请按照以下解决方案操作。

GPU/VRam内存

Cuda错误的另一个常见原因是GPU内存不足。请注意,即使GPU内存未完全使用(100%),您有时也可能会遇到崩溃。当V-Ray从GPU驱动程序请求的内存多于当前可用的空闲内存时,就会发生这种情况。例如,如果当前可用的GPU内存为4GB,而V-Ray请求6GB,即使内存未完全使用,它也会崩溃。

要查明问题是否与GPU内存相关,请开始从场景中删除对象并查看错误是否消失,或者尝试在另一个具有更多内存的GPU设备上渲染场景。

解决方案1:如果您的计算机上有多个可用GPU设备,则仅在具有最多可用GPU内存的设备上渲染场景。

解决方案2:优化场景文件以使用更少的GPU内存。

解决方案3:将您的GPU设备升级到具有更多GPU内存的其他设备。


三、pytorch混合精度训练出现nan问题解决在使用PyTorch进行实验时,我尝试通过中的混合精度训练(Apex)来优化模型内存空间,但遇到了Nan问题。经过两天的搜索,找到了解决这个问题的方法,现在分享一下我的经验。
Apex中的混合精度训练结合使用FP32和FP16来增加批量大小并利用NVIDIATensorCores加速。从PyTorch1.7开始,Torch具有内置Apex模块,可以通过ortautocast和GradScaler导入。例如,如果使用autocast指定精度,则可以将其设置为16(混合半精度)或16(混合单精度)等。
在训练过程中,我们最初使用默认的float16半精度训练,但这导致了Nan损失值。Nan表示推理过程中模型参数异常。解决方案是在推理代码段前添加withautocast(dtype=16),这会导致Nan将精度更改为单精度。这有助于防止Nan问题。
如果上述方法不起作用,请考虑将dtype更改为32或使用Tensorfloat32(TF32)。A100GPU中引入的TF32是一个19位浮点数,在保持FP16精度的同时增加了BF16的范围,非常适合需要更高精度的场景。TF32在减少显存使用方面不如Apex那么重要,但可以提高训练效率。事实上,TF32和float16混合精度可以一起使用,不会发生冲突。