Colab挂载Google Drive时含超20万文件的文件夹被截断问题咨询
Colab挂载Google Drive单文件夹文件数限制问题解答
Google Drive原生单文件夹支持的最大文件数为50万,你遇到的截断问题不是Google Drive的上限,而是Colab默认使用的Google Drive FUSE挂载工具的限制,该工具默认单文件夹最多返回约2万条文件元数据,所以重新挂载后无法读取超出阈值的文件。刚创建时能完整读取是因为操作还在Colab本地缓存中,未触发挂载工具的元数据拉取限制。
可行解决方法
- 最优方案(适配深度学习训练场景):将单文件夹内的海量小图片打包为TFRecord、HDF5或未压缩ZIP格式的少数大文件,训练时直接读取大文件内的内容,无需依赖挂载文件系统的小文件遍历能力。该方案同时能解决小文件随机读取的IO性能瓶颈,大幅提升训练效率。
- 保留小文件散列结构的方案:不通过挂载的文件系统遍历文件,改用
pydrive或Google Drive官方API遍历目标文件夹的文件ID,通过API直接读取文件内容,该方式不存在2万条的截断限制。 - 轻量调整方案:将单文件夹内的文件拆分到多个子文件夹,每个子文件夹存储的文件数控制在1.5万以内,即可避开挂载工具的截断阈值。
注意:频繁对大文件数的文件夹执行全量遍历操作,会触发Google Drive的API限流规则,导致短时间内无法访问Drive资源,请尽量减少无意义的全量遍历操作。
内容的提问来源于stack exchange,提问作者r0d0
相关产品推荐
相关产品推荐

