Вызов различных точек входа / модулей при обучении с использованием настраиваемого контейнера
Я создал собственный контейнер 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.