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: {}
}
}
}
「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
私は 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
エラーは、サービングがモデルを見つけられなかった原因です。
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
}
}
}
そして、あなたはこれを見ることができます 公式文書を提供する