Я некоторое время пытался настроить распределенное обучение для TensorFlow Object Detection API на Azure
. Я немного запутался в том, как именно ввести мои данные в задание.
Раньше я довольно легко делал эту работу на gcloud
с помощью AI-Platform. Все, что мне требовалось, это:
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, похоже, нет прямого способа запустить распределенная обучающая работа. Я развернул кластер Kubernetes с ускорением на GPU с AKS, а затем установил драйверы NVIDIA. Я также развернул Kubeflow и закрепил API обнаружения объектов.
Мои данные в форме tfrecords находятся в контейнере хранилища BLOB-объектов Azure. Примеры / документация Kubeflow, которые я просматриваю ( TFJob , AzureEndtoEnd ), выделяет постоянные тома, что кажется отличным, но я не понимаю, как мой код работы / обучения будет получать доступ my tfrecords.
(Мне было интересно, могу ли я что-то сделать в части предварительной обработки в Azure End to End конвейере; там я мог бы написать несколько строк python код для загрузки данных с использованием библиотеки azure-storage-blob
python. Это все еще предположение, я еще не пробовал это.)
Так что любая помощь в этой головоломке приветствуется. Я также был бы признателен, если бы мне указали на любые полезные актуальные ресурсы. Вот два других ресурса, которые я просмотрел: