【问题标题】:How can I clean memory or use SageMaker instead to avoid MemoryError: Unable to allocate for an array with shape (25000, 2000) and data type float64如何清理内存或使用 SageMaker 来避免 MemoryError: Unable to allocate for an array with shape (25000, 2000) and data type float64
【发布时间】:2020-07-12 11:34:01
【问题描述】:

我正在使用 keras 在 SageMaker 上训练模型,这是我正在使用的代码,但我遇到了错误:

MemoryError: Unable to allocate 381. MiB for an array with shape (25000, 2000) 
    and data type float64

代码如下:

import pandas as pd
import numpy as np
from keras.datasets import imdb
from keras import models, layers, optimizers, losses, metrics
import matplotlib.pyplot as plt

# load imbd preprocessed dataset
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(
    num_words=2000)

# one-hot encoding all the integer into a binary matrix
def vectorize_sequences(sequences, dimension=2000):
    results = np.zeros((len(sequences), dimension))        
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1.                          
    return results

x_train = vectorize_sequences(train_data)                  
x_test = vectorize_sequences(test_data)

然后我得到错误。

当我第一次运行此代码时它可以工作,但是当我尝试重新运行它时它失败了,我如何通过清理内存来修复它,或者有什么方法可以在 SageMaker 上使用内存?

【问题讨论】:

  • 您是否增加了 EC2 sagemaker 实例的大小?这是aws.amazon.com/sagemaker/pricing 的选项列表——默认实例不会有太多内存。
  • @MarcMaxmeister 嘿,我没有增加 EC2 的大小,我还在使用免费层...重新启动内核并重新运行代码似乎可以解决这个问题。
  • 好的好的。对于我昨天的问题,我不得不使用 ml.12xlarge 实例(192GB 内存)重新启动,然后它就起作用了。这只花费 4 美元/小时,而且还不到 4 美元。

标签: python amazon-web-services tensorflow keras amazon-sagemaker


【解决方案1】:

我不会具体了解 SageMaker 或 AWS,但您可以做的是将您的输入转换为 float32,这会占用更少的内存空间。你可以这样投射:

train_data = tf.cast(train_data, tf.float32)

float32 是 Tensorflow 权重的默认值,所以无论如何你都不需要float64。证明:

import tensorflow as tf
layer = tf.keras.layers.Dense(8)
print(layer(tf.random.uniform((10, 100), 0, 1)).dtype)
<dtype: 'float32'>

我的其他建议是从您的数据集中获取更少的单词,或者不要对它们进行一次性编码。如果您计划使用嵌入层训练循环模型,则无论如何都不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 2022-12-27
    • 2017-03-01
    • 2021-03-17
    相关资源
    最近更新 更多