当我使用具有高达1TB内存的p2.xlarge或p3.2xlarge实例尝试在训练作业中使用预定义的SageMaker图像分类算法时,遇到了以下错误:
ClientError: Out of Memory. Please use a larger instance and/or reduce the values of other parameters (e.g. batch size, number of layers etc.) if applicable
我使用了450多张图片,我尝试将它们从原始的2000×3000像素大小调整到244×244像素大小,再到24×24像素大小,但仍然得到相同的错误。
我尝试调整了我的超参数:类别数量、层数、训练样本数量、优化器、图像形状、检查点频率、批量大小和轮次。还尝试使用预训练模型。但同样的错误不断发生。
回答:
本来想添加评论的,但我的声望还不够。
为了能有更多的背景信息,我有一些澄清性的问题:
你是如何实现1TB的RAM的?
p2.xlarge
服务器有61GB的RAM,而p3.2xlarge
服务器有61GB的内存和Tesla V100 GPU上的16GB内存。
你是如何存储、调整大小并将图像输入到SageMaker算法中的?
- 考虑到即使将图像缩小到24×24时仍然发生内存错误,这似乎很可疑。如果你在内存中调整原始图像的大小(450张图像,2000×3000分辨率),并且没有进行原地转换(即:没有创建新图像),你可能已经预分配了大量的内存,导致SageMaker训练算法抛出内存不足错误。