You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Colab Pro加载大型图像数据集速度慢的优化方案咨询

问题根因

加载速度慢和GPU、内存配置无关,核心是IO瓶颈:你当前读取的是挂载到Colab的Google Drive路径,这类文件读取走网络逐文件 拉取,加上你用pandas的map是单线程串行读取,速度自然远低于Kaggle——Kaggle的数据集直接存储在运行实例的本地高速固态上,没有额外网络开销。

可落地的提速方案

方案1:先将数据集拷贝到Colab本地实例存储(提速效果最明显)

Colab的/content目录是实例自带的本地高速固态,读写速度比挂载Drive快10~50倍,先把整个数据集文件夹从Drive拷贝到本地再读取,先执行终端命令完成拷贝:

!cp -r "/content/drive/MyDrive/Colab Notebooks/Covid-19/Dataset" /content/

拷贝完成后替换DataFrame里的路径前缀为本地路径,再运行加载代码,速度可以直接追上Kaggle的表现。

注意:Colab实例断开连接后本地存储的数据会清空,每次启动实例时执行一次拷贝即可,不需要重复操作。如果数据集是压缩包格式,先把压缩包拷到本地再解压,速度比逐文件从Drive拷贝更快。

方案2:用多进程并行加载替换单线程map

单线程逐张读图片完全吃不满IO带宽,用多进程并行加载可以拉满读取速度,直接替换原有map逻辑即可:

import numpy as np
from PIL import Image
from multiprocessing import Pool, cpu_count

def load_image(path):
    # 建议直接打开resize逻辑,更小的图体积能进一步提升加载、处理速度
    return np.asarray(Image.open(path).resize((224,224)))

# 匹配CPU核心数设置进程数
with Pool(cpu_count()) as p:
    data['image'] = p.map(load_image, data['path'].tolist())

如果已经把数据集拷贝到本地,配合多进程加载,万张级别的数据集通常1~2分钟就能加载完成。

方案3:放弃全量预加载,用框架自带的数据生成器按需读取

如果数据集总大小超过几十G,全量加载进内存不仅慢,还容易触发内存上限。教学场景做模型训练直接用PyTorch/TensorFlow自带的数据集加载工具即可,支持边训练边批量加载+预处理,不需要提前把所有像素数据存入DataFrame:

  • PyTorch可直接用ImageFolder搭配DataLoader,配置num_workers参数开启多进程预加载
  • TensorFlow可直接用image_dataset_from_directory从目录生成批量数据集,自动完成并行IO和预处理
    这种方式内存占用极低,不需要等全量数据加载完就能启动训练流程。

内容的提问来源于stack exchange,提问作者M Muqiit Faturrahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:27:27