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

Colab Pro+中!tar -xzvf解压100GB文件过慢的提速方案咨询

Colab Pro+ 大体积tar数据集解压与后续JSON处理提速方案

你当前使用的tar -xzvf命令耗时异常主要来自三个可优化的点:一是-v参数会逐文件打印解压路径,面对数据集里大量小JSON文件时,控制台输出的IO开销会占总耗时的60%以上;二是默认单线程gzip解压没有吃满Colab Pro+分配的多核CPU性能;三是如果直接在挂载的Google Drive目录内解压,Drive的FUSE接口IO上限极低,速度会比本地SSD慢一个数量级。

解压提速操作

  • 先终止当前正在运行的解压进程,冗余开销过高没有继续等待的价值。
  • 优先把压缩包移动到Colab本地临时存储/content目录下操作,不要直接在Google Drive挂载目录内做解压、大量小文件读写类操作,本地SSD的读写速度是Drive挂载目录的5-10倍。
  • 替换为多线程无冗余输出的解压命令:
    先安装多线程解压依赖,再执行解压:
    !apt update && apt install -y pigz
    !pigz -dc /content/你的数据集压缩包.tar.gz | tar -xf - -C /content/目标解压目录/ --checkpoint=.1000
    
    参数说明:
    • 去掉-v参数关闭逐文件日志打印,仅保留每解压1000个文件输出一个点的轻量进度提示,几乎不产生额外IO开销
    • 用pigz替代单线程gzip,自动调用所有CPU核心做解压计算,充分拉满硬件性能
    • -C直接指定解压目标目录,避免解压后额外的文件移动开销
      正常情况下100GB的gzip压缩包在Colab Pro+本地SSD上用这个命令,15-30分钟即可完成解压,相比你当前使用的命令提速10倍以上。
  • 如果你的压缩包是.tar.zst后缀的zstd压缩格式,解压速度比gzip更快,直接用以下命令即可:
    !apt install -y zstd
    !tar --zstd -xf /content/你的压缩包.tar.zst -C /content/目标解压目录/
    
  • 解压前先执行!df -h查看/content分区剩余空间,100GB的gzip压缩包解压后通常占用200-500GB空间,提前确认空间充足避免解压中途报错。

后续JSON文件读取处理优化

解压完成后处理大量JSON文件时,可以通过以下方式压缩处理耗时:

  • 目录遍历用os.scandir()或os.walk()替代os.listdir(),递归遍历大量小文件的速度快2-3倍。
  • 用多进程并行加载处理文件,充分利用Colab的多核CPU,不要单线程逐文件读取,参考代码:
    import os
    import json
    from concurrent.futures import ProcessPoolExecutor
    
    def parse_json(file_path):
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)
        # 此处替换为你的单文件数据处理逻辑
        return data
    
    if __name__ == "__main__":
        json_file_list = []
        # 递归收集所有JSON文件路径
        for root, _, files in os.walk("/content/解压后的数据集目录"):
            for file in files:
                if file.endswith(".json"):
                    json_file_list.append(os.path.join(root, file))
        
        # 按CPU核心数开进程并行处理
        with ProcessPoolExecutor(max_workers=os.cpu_count()) as pool:
            all_processed_data = list(pool.map(parse_json, json_file_list))
    
  • 如果后续需要反复使用该数据集,第一次处理完成后建议将清洗好的数据存为parquet、带lz4压缩的pickle等二进制序列化格式,后续加载速度比逐读JSON快几十倍,也不用每次启动新实例都重复解压操作。
  • 所有高频读写操作完成后,再把需要留存的结果文件拷贝回Google Drive即可,不要全程在Drive目录内做计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:57:25