Google Colab 运行速度比 Jupyterlab 快,Google Colab 为啥以及如何运行?

Posted

技术标签:

【中文标题】Google Colab 运行速度比 Jupyterlab 快,Google Colab 为啥以及如何运行?【英文标题】:Google Colab isnt running faster than Jupyter Lab, Why and How does Google Colab function?Google Colab 运行速度比 Jupyterlab 快,Google Colab 为什么以及如何运行? 【发布时间】:2021-11-04 07:22:26 【问题描述】:

我是 Google Colab 的新手,我使用 joblib 存储的数据约为 18GiB。它无法在 Jupyter Lab 上运行,因为我的 PC 只有 8GB 内存,并且会返回 MemoryError。我求助于 Google Colab,刚刚订阅了 ColabPro 以获得 25GB 的 RAM,它终于加载了,但是当我想拆分数据时,它超过了 25GB。

我能想到的解决方案是让数据已经拆分到 joblib 文件中。但是当我使用 Google Colab 运行之前的预处理代码时,它需要的时间比使用 Jupyter Lab 在 localhost 上执行的时间要长。

2小时过去了,还是卡在一个牢房里。而 Jupyter Labs 需要 30 分钟来运行整个笔记本文件。

我知道 GPU 和 TPU 选项在训练复杂的神经网络模型时会更有用,但我认为与 Google Colab 相比,我的预处理笔记本在 Jupyter Lab localhost 中运行得更快是没有意义的。

我正在使用的数据集是我从 Kaggle 获得的 87,000 张 ASL 手势图像。需要很长时间运行的部分是将这些图像调整大小、转换和规范化为 NumPy 数组。

#  define new function to load images from source folder
def create_dataset_gray(img_folder):
    """
    read image file from the source folder and convert into the right color format, resize the image, convert image into a Numpy array with float as datatype 
    and Normalize image array to have values scaled down between 0 and 1.
    """
    # create empty list to store image arrays as X, and label for each image as y

X=[]
y=[]
    
    # iterate through the list of entries in the directory of specified folder
    for dir1 in os.listdir(img_folder):
        # print conversion progress of the code
        print("Converting and Importing images in file  ...".format(dir1))
        # iterate through the images in the entries of the directory of specified folder
        for img in os.listdir(os.path.join(img_folder, dir1)):
            # set image path for each image
            image_path = os.path.join(img_folder, dir1, img)
            # utilise opencv package to read image from specified file
            image = cv2.imread(image_path, cv2.COLOR_BGR2GRAY) # convert image into grayscale image
            # resize image read 
            image = cv2.resize(image, (IMG_HEIGHT, IMG_WIDTH), interpolation=cv2.INTER_AREA) # INTER_AREA is used when shrinking image is needed
            # set image value datatype as float
            image = image.astype("float")
            # divide 255 to normalize image array to have values between 0 and 1 
            image /= 255
            # append new image array and label into respective empty list 
            X.append(image)
            y.append(dir1)
    
    # set list as array for X and y
    X = np.asarray(X) 
    y = np.asarray(y)
    
    return X, y

这是需要永远运行的代码。

希望有人可以帮助您了解 Google Colab 的工作原理:

    与在我的 PC 上运行相比,它不应该运行得更快吗? 是否有更好的解决方案来解决 RAM 问题?

【问题讨论】:

【参考方案1】:

不是将整个数据集读入内存,而是创建一个 dataGenerator。 https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly

只要多一点代码,它就会为你处理内存和多处理

【讨论】:

这肯定会很方便,我以前没有遇到过,谢谢!但是我现在设法让它运行起来,将来我一定会尝试一下!

以上是关于Google Colab 运行速度比 Jupyterlab 快,Google Colab 为啥以及如何运行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 GPU 连接到本地运行时 google colab 需要 tensorflow-gpu?

在 VM 引擎中导入 google.colab 不会让我在 Google Colab 中运行 Jupyter Notebook?

google.colab 模块中是不是有关闭运行时的功能

从 Google Drive 读取图像时,Google Colab 太慢了

如何在 google colab 中启用拼写检查器(colab 在 linux OS 上运行)?

Colab / Google Cloud SDK - 本地运行时总是“忙” - 无法重新启动