Как мне указать переменную "model_config_file" для tenorflow-Обслуживание в docker -compose? - PullRequest
1 голос
/ 25 февраля 2020

Я предвосхищу это, сказав, что я неопытен с docker и docker -композицией. Я пытаюсь преобразовать свою команду docker run ... в файл docker -compose.yml , однако мне не удается найти файл models.config .

Я могу правильно запустить контейнер docker, обслуживающий тензор, используя следующую команду docker run ...:

docker run -t --rm \
  tensorflow/serving \
  -p 8501:8501 \
  -v "$(pwd)/models/:/models/" \
  --model_config_file=/models/models.config \
  --model_config_file_poll_wait_seconds=60

Это работает, как и ожидалось, и models.config файл находится в контейнере в /models/models.config, как и ожидалось.

На страницах, обслуживающих тензор, ничего не говорится о docker -compose, однако я бы предпочел использовать это, а не команду docker run .... Моя попытка создать файл docker:

version: '3.3'
services:
  server:
    image: tensorflow/serving
    ports:
      - '8501:8501'
    volumes:
      - './models:/models'
    environment:
      - 'model_config_file=/models/models.config'
      - 'model_config_file_poll_wait_seconds=60'

Используя этот файл docker, создайте контейнер, однако, похоже, что переменные среды полностью игнорируются, поэтому я не уверен, если это то, как я должен их установить. Образ контейнера выглядит в расположении по умолчанию для файла models.config , и его там нет, поэтому он не загружает конфигурацию, определенную в models.config .

Итак, как я могу определить эти значения или запустить контейнер, обслуживающий тензор, используя docker -compose?

Я ценю любую помощь.

Спасибо

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Так что в другом месте я нашел решение, которое не нашел ни в одной теме / публикации / et c, в котором говорится о тензорном потоке / обслуживании, поэтому я опубликую свой ответ здесь.

Добавление этих Опции под секцией command работают следующим образом.

version: '3.3'
services:
  server:
    image: tensorflow/serving
    ports:
      - '8501:8501'
    volumes:
      - './models:/models'
    command:
      - '--model_config_file=/models/models.config'
      - '--model_config_file_poll_wait_seconds=60'

Я не знаю много о docker, поэтому я не знаю, является ли это очевидным ответом, но я не не могу найти решение даже после долгих поисков Google.

0 голосов
/ 25 февраля 2020

Проблема в том, что опция --model_config_file не является переменной окружения. Это аргумент, который вы можете передать команде, которая установлена ​​в качестве точки входа на изображении tensorflow/serving. Если мы посмотрим на Dockerfile , который использовался для создания образа, мы увидим:

# Create a script that runs the model server so we can use environment variables
# while also passing in arguments from the docker command line
RUN echo '#!/bin/bash \n\n\
tensorflow_model_server --port=8500 --rest_api_port=8501 \
--model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} \
"$@"' > /usr/bin/tf_serving_entrypoint.sh \
&& chmod +x /usr/bin/tf_serving_entrypoint.sh

ENTRYPOINT ["/usr/bin/tf_serving_entrypoint.sh"]

Этот скрипт принимает различные аргументы (вы можете увидеть их, запустив docker run -t --rm tensorflow/serving --help)

Насколько я знаю, единственными переменными окружения, используемыми для обслуживания TF, являются MODEL_VERSION и MODEL_NAME. model_config_file и model_config_file_poll_wait_seconds являются просто аргументами для исполняемого файла обслуживания CLI.

Чтобы достичь желаемого результата, вы можете переопределить точку входа для образа docker, установив собственную точку входа в docker-compose.yml:

version: '3.3'
services:
  server:
    image: tensorflow/serving
    ports:
      - '8501:8501'
    volumes:
      - './models:/models'
    entrypoint:
      - /usr/bin/tf_serving_entrypoint.sh
      - --model_config_file=/models/models.config
      - --model_config_file_poll_wait_seconds=60

( Примечание : я не проверял этот файл docker-compose.yml)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...