首页 > 解决方案 > 将存储桶中的数据(图像)流式传输到谷歌 AI 平台上的训练作业

问题描述

我正在使用 keras 进行培训工作。整个代码的计算量很大,它应该训练的图像数量约为 30GB。训练图像存储在 Google 存储中。我为我的训练脚本创建了一个 docker 容器,并且每个容器都按照计划运行良好。我注意到图像被复制到正在分配的 VM 中,将图像从 Google 存储复制到训练作业大约需要 1 个半小时。这增加了训练时间,不适合我,因为图像数量每周至少增长 1GB。我之前曾使用过 AWS 培训作业,这让我可以选择将文件从 S3 传输到 Sagemaker 培训作业,其中输入可以“管道”到培训作业中。

标签: gcloudgcp-ai-platform-training

解决方案


我将这个答案与我在评论部分分享的所有信息一起发布。

根据文档,建议使用gcloud 包上传您的应用程序。在此链接中,您可以找到有关定义系统环境变量以及提交培训作业的更多信息。

关于您对Cloud FUSE的评论,它是一个开源适配器,允许您将Cloud Storage Buckets作为文件系统安装在LinuxMacOS上。因此,应用程序可以像在简单的文件系统中一样与挂载的存储桶进行交互,如果在云中运行,则可以提供几乎无限的存储空间。但是,在您的情况下,不建议这样做,因为它的延迟比本地文件系统高得多。因此,也不建议在Cloud Storage FUSE上运行数据库,您可以在此处阅读有关其限制的更多信息。

既然您报告说您的问题在于培训时间。我建议您使用自定义层来训练您的模型,从而增加工人的数量。因此,作业会运行得更快。此外,您可以使用文档中描述的预配置层。

作为奖励信息,当您的模型经过训练时,请考虑使用在线预测而不是批量预测。即使在这两种情况下,您都将数据传递给云托管的 ML 模型,在线预测也经过优化以最大限度地减少结果的延迟。除此之外,根据文档,批量预测可能需要几分钟,而在线预测几乎可以立即返回结果。


推荐阅读