Я обучаю модель обнаружения объектов с тензорным потоком и API обнаружения объектов с использованием контейнера Docker на платформе Google Cloud AI Platform. После завершения обучения график tflite успешно экспортируется, но проблема в том, что задание не заканчивается sh после завершения main.py
.
Для обучения модели и экспорта я использую сценарий main.py
в качестве точки входа:
ENTRYPOINT ["python", "-u", "main.py"]
, и сценарий принимает некоторые аргументы, которые я передаю ему с помощью ключевого слова CMD
внутри Dockerfile (хотя они могут быть перезаписаны с помощью команды gcloud ai-platform jobs submit training
):
CMD ["--network_type", "mobilenet_v2_ssd", \
"--train_whole_model", "True", \
"--job-dir", "gs://job-dir", \
"--dataset-dir", "gs://dataset"]
Содержимое main.py
в основном выглядит так:
# import stuff
# define argparse stuff
def main(args):
# Train Model
# Export Graph
print("Training finished")
if __name__ == "__main__":
# get args
main(args)
Чтобы начать задание, я выполняю следующее:
gcloud ai-platform jobs submit training $JOB_NAME \
--region $REGION \
--config config.yaml \
--job-dir "gs://job-dir" \
--master-image-uri $IMAGE_URI \
-- \
--network_type "mobilenet_v2_ssd" \
--train_whole_model "True" \
--dataset-dir "gs://dataset" \
Когда я вижу Training finished
в средстве просмотра журналов Google Cloud контейнер работает не менее пяти минут без завершения, и я не знаю, остановится ли он, если я не отменю задание вручную.
Должен ли я инструктировать платформу AI о завершении sh задание в конце main.py
? Может быть, вернуть код состояния (например, return 0
)? Или мне просто подождать более пяти минут, чтобы sh задание завершилось само?