web-dev-qa-db-ja.com

Dockerを使用して複数のテンソルフローモデルを提供する

this githubの問題と this stackoverflowの投稿を見て、これが単純に機能することを期待していました。

環境変数MODEL_CONFIG_FILEを渡しても影響はないようです。これをdocker-composeで実行していますが、docker-runを使用しても同じ問題が発生します。


エラー:

I tensorflow_serving/model_servers/server.cc:82] Building single TensorFlow model file config:  model_name: model model_base_path: /models/model
I tensorflow_serving/model_servers/server_core.cc:461] Adding/updating models.
I tensorflow_serving/model_servers/server_core.cc:558]  (Re-)adding model: model
E tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:369] FileSystemStoragePathSource encountered a file-system access error: Could not find base path /models/model for servable model

Dockerfile

FROM tensorflow/serving:nightly

COPY ./models/first/ /models/first
COPY ./models/second/ /models/second

COPY ./config.conf /config/config.conf

ENV MODEL_CONFIG_FILE=/config/config.conf

作成ファイル

version: '3'

services:
  serving:
    build: .
    image: testing-models
    container_name: tf

設定ファイル

model_config_list: {
  config: {
    name:  "first",
    base_path:  "/models/first",
    model_platform: "tensorflow",
    model_version_policy: {
        all: {}
    }
  },
  config: {
    name:  "second",
    base_path:  "/models/second",
    model_platform: "tensorflow",
    model_version_policy: {
        all: {}
    }
  }
}
6
Questioning

「MODEL_CONFIG_FILE」という名前のDocker環境変数(これはテンソルフロー/サービング変数です。dockerimage link を参照)がないため、docker imageはデフォルトのdocker環境変数(「MODEL_NAME = model」と「MODEL_BASE_PATH =/models」)、dockerイメージの起動時にモデル「/ models/model」を実行します。 「config.conf」は、「tensorflow/serving」の起動時に入力として使用する必要があります。代わりに、次のようなものを実行してみてください。

docker run -p 8500:8500 8501:8501 \
  --mount type=bind,source=/path/to/models/first/,target=/models/first \
  --mount type=bind,source=/path/to/models/second/,target=/models/second \
  --mount type=bind,source=/path/to/config/config.conf,target=/config/config.conf\
  -t tensorflow/serving --model_config_file=/config/config.conf
3
KrisR89

私は this Windowsのgitbashのダブルスラッシュの問題に遭遇しました。

そのため、@ KrisR89で言及されている引数をcommand経由でdocker-compose

新しい docker-composeは次のようになり、提供されたdockerfileで動作します。

version: '3'

services:
  serving:
    build: .
    image: testing-models
    container_name: tf
    command: --model_config_file=/config/config.conf
4
Questioning

エラーは、サービングがモデルを見つけられなかった原因です。

I tensorflow_serving/model_servers/server.cc:82] Building single TensorFlow model file config:  model_name: model model_base_path: /models/model
I tensorflow_serving/model_servers/server_core.cc:461] Adding/updating models.
I tensorflow_serving/model_servers/server_core.cc:558]  (Re-)adding model: model
E tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:369] FileSystemStoragePathSource encountered a file-system access error: Could not find base path /models/model for servable model

Dockercomposeファイルがモデルファイルをコンテナーにマウントしませんでした。そのため、サービングはモデルを見つけることができませんでした。

version: '3'
services:
  serving:
    build: .
    image: testing-models
    container_name: tf

モデルファイルをホストからコンテナにマウントします。私はあなたがこれを行うことができると思います:

version: "3"
services:
        serving:
                image: tensorflow/serving:latest
                restart: unless-stopped
                ports:
                        - 8501:8501
                volumes:
                        - ${FIRST_MODEL_PATH <Host>}:/models/${FIRST_MODEL_NAME}
                        - ${SECOND_MODEL_PATH <Host>}:/models/${SECOND_MODEL_NAME}
                        - <Host PATH>/models.config:/models/models.config
                command: --model_config_file=/models/models.config

{PATH}と{MODEL_NAME}をパスとモデル名に置き換えます。

models.configファイルキーversionsを設定する必要があります。

model_config_list: {
  config: {
    name:  "first",
    base_path:  "/models/first",
    model_platform: "tensorflow",
    model_version_policy: {
        versions: 1
        versions: 2
    }
  },
  config: {
    name:  "second",
    base_path:  "/models/second",
    model_platform: "tensorflow",
    model_version_policy: {
        versions: 1
        versions: 2
    }
  }
}

そして、あなたはこれを見ることができます 公式文書を提供する

0
JiangKui