我正在尝试运行一个完整的推理管道,该管道需要大量图像,首先运行对象检测(多处理),然后运行分类器(多处理)。我已经在本地机器(具有 8 个内核的 CPU - 无 GPU)上测试了代码,并且它运行完美。但是,当我尝试在 EC2(深度学习 AMI(Amazon Linux)版本 24.1 - 实例类型:p2.xlarge - 4 个 vCPU(2 个内核 - 每个内核 2 个线程)- 1 个 GPU 内核 - 启用 CUDA)上运行相同的代码时,它会抛出 CUDA - 内存不足错误。
import multiprocessing as mp
pool_od=mp.Pool()
results_OD=pool_od.map_async(localize_it, TEST_IMAGE_PATHS)
# TEST_IMAGES_PATH is the list of path of all images
pool_od.close()
pool_od.join()
final_results.append(results_OD.get())
一开始,我在 mp.Pool() 中指定了核心数,但后来我删除了它,以便机器可以自行决定。同时,我也删除了 chunksize 参数。但我仍然收到相同的错误。你能对此进行一些分析吗?为什么会出现此错误以及可以做些什么?
答案1
它能和 一起工作吗pool_od=mp.Pool(1)
?
尝试watch nvidia-smi
在单独的终端中运行,这样您就可以看到推理管道的单个实例需要多少 VRAM,然后您就可以看到您可以同时运行多少个。