【问题标题】:What is the best way to feed image data (tfrecords) from GCS to your model?将图像数据 (tfrecords) 从 GCS 馈送到您的模型的最佳方式是什么?
【发布时间】:2019-06-06 04:12:36
【问题描述】:

我为自己设定了一个目标,即仅使用 Google Cloud 解决 MNIST 皮肤癌数据集。

在 Google Kubernetes 上使用 GCS 和 Kubeflow。

我使用以下脚本将数据从 jpeg 转换为 tfrecord: https://github.com/tensorflow/tpu/blob/master/tools/datasets/jpeg_to_tf_record.py

我已经看到了很多他们如何将 csv 文件提供给他们的模型的示例,但没有使用图像数据的示例。

将所有 tf​​record 复制到 Google Cloud Shell 以便我可以像这样将数据提供给我的模型是否明智? 或者有没有更好的方法?

提前致谢。

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage google-kubernetes-engine kubeflow


    【解决方案1】:

    如果您使用的是 Kubeflow,我建议您使用 kubeflow 管道。

    对于预处理,您可以使用在标准管道数据流图像gcr.io/ml-pipeline/ml-pipeline-dataflow-tft:latest 之上构建的图像,您只需复制数据流代码并运行它:

    FROM gcr.io/ml-pipeline/ml-pipeline-dataflow-tft:latest
    RUN mkdir /{folder}
    COPY run_dataflow_pipeline.py /{folder}
    ENTRYPOINT ["python", "/{folder}/run_dataflow_pipeline.py"]
    

    请参阅此boilerplate,了解执行此操作的数据流代码。这个想法是您将 TF 记录写入 Google Cloud Storage (GCS)。

    随后,您可以使用 Google Cloud 的 ML 引擎进行实际训练。在这种情况下,您也可以从图像 google/cloud-sdk:latest 开始,基本上复制所需的文件,其中可能包含一个 bash 脚本,该脚本将运行以执行 gcloud 命令以启动训练作业。

    FROM google/cloud-sdk:latest
    RUN mkdir -p /{src} && \
        cd /{src} 
    COPY train.sh ./
    ENTRYPOINT ["bash", "./train.sh"]
    

    将 TF 记录的存储位置传递给模型的一种优雅方法是使用 TF.data:

    # Construct a TFRecordDataset
    train_records = [os.path.join('gs://{BUCKET_NAME}/', f.name) for f in
                     bucket.list_blobs(prefix='data/TFR/train')]
    validation_records = [os.path.join('gs://{BUCKET_NAME}/', f.name) for f in
                          bucket.list_blobs(prefix='data/TFR/validation')]
    
    ds_train = tf.data.TFRecordDataset(train_records, num_parallel_reads=4).map(decode)
    ds_val = tf.data.TFRecordDataset(validation_records,num_parallel_reads=4).map(decode)
    
    # potential additional steps for performance: 
    # https://www.tensorflow.org/guide/performance/datasets)
    
    # Train the model
    model.fit(ds_train,
              validation_data=ds_val,
              ...,
              verbose=2)
    

    查看blog post 了解类似(更复杂)kubeflow 管道的实际实现

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2011-05-01
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      相关资源
      最近更新 更多