【问题标题】:Is there a way to access and work with data stored in GCP bucket directly?有没有办法直接访问和使用存储在 GCP 存储桶中的数据?
【发布时间】:2020-02-28 15:26:18
【问题描述】:

我必须在我的大学做一个深度学习项目,我需要使用医学图像数据库。此数据库存储在 Google Cloud Platform 存储桶中。

但是,数据库的大小超过 4 TB,所以我无法使用 gsutil 下载数据。我也不能使用 Google Colab 笔记本,因为它的磁盘存储大小是 350GB。

有什么方法可以访问数据并将其用于训练我的网络?

【问题讨论】:

  • 为了访问 Cloud Storage 中的数据,您的应用程序需要从 Cloud Storage 读取数据,或者需要将数据复制到本地存储。在读取 4,000 GB 数据之前,我会先查看从 Cloud Storage 读取数据的价格。
  • GCS上的数据是什么格式的?您也许可以通过 BigQuery 访问数据...请参阅...cloud.google.com/bigquery/external-data-cloud-storage您将如何编写 ML 应用程序? BigQuery ML 能否满足您的需求,在这种情况下,您可能不需要从 GCS 中读取数据,只需将其映射到 BQ,然后让 BQ 执行您的 ML 建模。
  • @Kolban 数据采用DICOM 格式(医学数字成像和通信)格式。它还包含每个 DICOM 文件的 .txt 文件以及相应的结论。我的 ML 应用程序应该执行以下操作:从 DICOM 文件中提取射线照片图像,将这些图像输入到神经网络(将进行图像分类并预测结论)。
  • 明确一点,您的数据不是一个 4TB 的单位,而是一组对象。大约有多少个对象以及这些对象的平均大小?
  • @Kolban 377,110 个 DICOM 文件。每个 DICOM 文件大约 7-15 MB。

标签: google-cloud-platform google-colaboratory


【解决方案1】:

我认为你没有走对路。

当您构建模型时,您只需拥有数据集的代表性子集来验证您的层和预期行为。

然后,当一切都完成并打包后,您可以在专用 VM(如深度学习 VM)上运行您的训练作业。这个过程可以由 AI-Platform 自动处理。您还可以设置超参数服务器并并行化您的训练。

在训练阶段,您经常使用批处理:您只加载数据集的一个子集,将其打乱,然后训练对该子集执行几个步骤(使用 RMSE/交叉熵计算、评估、梯度优化)。

由于您批量使用完整数据集的子集,因此您不需要同时在 VM 上安装 4Tb。您的训练循环会为您完成(下载、训练、评估、删除)。

正如我之前所说,由于您使用了一个子集,您还可以在多个虚拟机上并行训练以缩短训练时间。

我建议您查看您的训练循环。如果你给我你工作的框架名称/版本,我可以帮助你提供教程和示例。

【讨论】:

  • 我有相同类型的设置数据存储在谷歌存储桶中,我在同一平台上使用笔记本(在 AI 平台下)/VS 代码。您能否分享更多关于如何进行并行培训的教程。
猜你喜欢
  • 2021-10-16
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 2018-03-08
  • 2019-04-25
  • 2020-01-18
  • 1970-01-01
  • 2014-02-27
相关资源
最近更新 更多