一段时间以来,我一直在尝试为TensorFlow 对象检测 API设置分布式训练。我对如何将我的数据准确地设置到工作中有点困惑。Azure
以前,我曾经gcloud
使用 AI 平台轻松完成这项工作。我只需要:
gcloud ai-platform jobs submit training $JOB_NAME \
--runtime-version $VERSION \
--job-dir=$JOB_DIR \
--packages $OBJ_DET,$SLIM,$PYCOCOTOOLS \
--module-name object_detection.model_main \
--region us-central1 \
--config $CONF/config.yaml \
-- \
--model_dir=$MODEL_DIR \
--pipeline_config_path=$PIPELINE_PATH
其中 config.yaml 包含集群配置,JOB_DIR、MODEL_DIR、PIPELINE_PATH 都指向各自的桶存储位置(gs://*)。我的训练数据也曾经存储在存储桶中,并且位置在我的 pipeline.config 中指定。
现在在 Azure 上,似乎没有直接的方法可以运行分布式训练作业。我已经使用 AKS 部署了一个 GPU 加速的 Kubernetes 集群,然后安装了 NVIDIA 驱动程序。我还部署了 Kubeflow,并对对象检测 API 进行了 docker 化。
我的数据以 tfrecords 的形式存在于 Azure blob 存储容器中。我正在查看的 Kubeflow 示例/文档(TFJob,AzureEndtoEnd)分配持久卷,这看起来很棒,但我不明白我的工作/培训代码将如何访问我的 tfrecords。
(我一直想知道是否可以在 Azure 端到端管道的预处理部分azure-storage-blob
做一些事情;在那里我可以编写一些 python 代码行来使用python 库下载数据。这仍然是猜想,我还没有还没试过。)
因此,对于这个难题的任何帮助将不胜感激。如果有人指出任何有用的最新资源,我也将不胜感激。以下是我查看的其他两个资源:
-
这似乎是一个很好的例子,但它的某些部分已经过时了。tf/k8s 不再存在,已移至 kubeflow;因此,舵图也不可用。
https://github.com/kubeflow/examples/tree/master/object_detection
这是来自 Kubeflow 存储库的直接示例,但它似乎也已过时。好像依赖ksonnet,已经停产了。