Вызов различных точек входа / модулей при обучении с использованием настраиваемого контейнера

Я создал собственный контейнер Docker со своим обучающим приложением. Dockerfile на данный момент выглядит примерно так:

FROM python:slim
COPY ./src /pipelines/component/src
RUN pip3 install -U ...
...
ENTRYPOINT ["python3", "/pipelines/component/src/training.py"]

поэтому когда я бегу

gcloud ai-platform jobs submit training JOB_NAME \
--region=$REGION \
--master-image-uri=$IMAGE_URI

все идет как положено.

Я бы хотел добавить еще один модуль, например /pipelines/component/src/tuning.py; удалить значение по умолчаниюENTRYPOINTиз Dockerfile; решить, какой модуль вызывать изgcloudкоманда. Так что я попробовал

gcloud ai-platform jobs submit training JOB_NAME \
--region=$REGION \
--master-image-uri=$IMAGE_URI \
--module-name=src.tuning \
--package-path=/pipelines/component/src

Он возвращается Source directory [/pipelines/component] is not a valid directory., потому что он ищет путь к пакету на локальном компьютере, а не в контейнере. Как я могу решить эту проблему?

1 ответ

Вы можете использовать поле TrainingInput.ReplicaConfig.ContainerCommand, чтобы переопределить точку входа в образ докера. Вот пример команды:

gcloud ai-platform jobs submit training JOB_NAME \
--region=$REGION
--master-image-uri=$IMAGE_URI
--config=config.yaml

А содержимое config.yaml будет примерно таким:

trainingInput:
  scaleTier: BASIC
  masterConfig:
    containerCommand: ["python3", "/pipelines/component/src/tuning.py"]

Эта ссылка имеет больше контекста о флаге конфигурации.

Точно так же вы можете переопределить команду изображения докера с помощью поля containerArgs.

Другие вопросы по тегам