一段时间以来,我一直在尝试为分布式培训TensorFlow对象检测API on Azure。我有点搞不懂该如何把我的数据设置到工作中去。
以前,我经常用人工智能平台在gcloud上轻松地完成这个任务。我所需要的只是:
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进行了对接。
我的数据,以of记录的形式,存在于Azure blob存储容器中。我正在查看的Kubeflow示例/文档(TFJob,AzureEndtoEnd)分配持久的卷,这看起来很棒,但我不明白我的工作/培训代码如何访问我的‘m记录。
(我一直在想,我是否可以在Azure端到端管道中的预处理部分中做些什么;在那里,我可以编写几行python代码来使用azure-storage-blob python库下载数据。这还只是猜测,我还没试过呢。)
所以对这个难题的任何帮助都将不胜感激。如果我能得到任何有用的、最新的资源,我也会很感激。下面是我看过的其他两种资源:
发布于 2020-07-12 13:31:06
好吧,最后我自己弄明白了。结果表明,您可以在persistent volume claim的基础上定义storage class。可以将存储类指定为Azure文件共享,这使一切变得更加方便。
sc.yaml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: <NAME>
provisioner: kubernetes.io/azure-file
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
parameters:
storageAccount: <STORAGE_ACC_NAME>pvc.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: <NAME>
spec:
accessModes:
- ReadWriteMany
storageClassName: <NAME>
resources:
requests:
storage: 20Gi然后,可以通过以下方式创建并声明持久卷:
kubectl apply -f sc.yaml
kubectl apply -f pvc.yaml在此之后,共享将出现在指定的存储帐户中,您可以简单地利用Azure文件共享的系统无缝地将数据上传到其中(比如使用azcopy将数据从本地计算机或现有的共享/容器中移动)。
https://stackoverflow.com/questions/62816326
复制相似问题