Как настроить службу Tensorflow для обслуживания моделей из HDFS?

Я пытаюсь использовать модели Tensorflow из HDFS, используя проект Tensorflow Serving.

Я запускаю shadoworflow, обслуживающий контейнер-контейнер док-станции 1.10.1 https://hub.docker.com/r/tensorflow/serving

Я могу видеть, что repo-ретрансляция с использованием метода endorflow/serve ссылается на Hadoop по адресу https://github.com/tensorflow/serving/blob/628702e1de1fa3d679369e9546e7d74fa91154d3/tensorflow_serving/model_servers/BUILD#L341

"@org_tensorflow//tensorflow/core/platform/hadoop:hadoop_file_system"

Это ссылка на

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/platform/hadoop/hadoop_file_system.cc

Я установил следующие переменные среды:

  • HADOOP_HDFS_HOME, чтобы указать на мой дом HDFS (/etc/hadoop в моем случае).
  • MODEL_BASE_PATH установлен в "hdfs://tensorflow/models"
  • MODEL_NAME установлен для имени модели, которую я хочу загрузить

Я монтирую Hadoop домой в контейнер докеров и могу проверить его с помощью docker exec.

Когда я запускаю контейнер докера, я получаю следующее в журналах:

tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:369] FileSystemStoragePathSource encountered a file-system access error: Could not find base path hdfs://tensorflow/models/my_model for servable my_model

Я нашел примеры Tensorflow, которые тренируются с использованием HDFS, но не используют модели HDFS, используя Tensorflow Serving.

Может ли обслуживание Tensorflow обслуживать модели HDFS? Если да, то как вы это делаете?

Ответ 1

В BUILD для model_servers, под cc_test для get_model_status_impl_test, добавьте эту строку @org_tensorflow//tensorflow/core/platform/hadoop:hadoop_file_system, как показано ниже:

cc_test(
    name = "get_model_status_impl_test",
    size = "medium",
    srcs = ["get_model_status_impl_test.cc"],
    data = [
        "//tensorflow_serving/servables/tensorflow/testdata:saved_model_half_plus_two_2_versions",
    ],
    deps = [
        ":get_model_status_impl",
        ":model_platform_types",
        ":platform_config_util",
        ":server_core",
        "//tensorflow_serving/apis:model_proto",
        "//tensorflow_serving/core:availability_preserving_policy",
        "//tensorflow_serving/core/test_util:test_main",
        "//tensorflow_serving/servables/tensorflow:saved_model_bundle_source_adapter_proto",
        "//tensorflow_serving/servables/tensorflow:session_bundle_config_proto",
        "//tensorflow_serving/servables/tensorflow:session_bundle_source_adapter_proto",
        "//tensorflow_serving/test_util",
        "@org_tensorflow//tensorflow/cc/saved_model:loader",
        "@org_tensorflow//tensorflow/cc/saved_model:signature_constants",
        "@org_tensorflow//tensorflow/contrib/session_bundle",
        "@org_tensorflow//tensorflow/core:test",
        "@org_tensorflow//tensorflow/core/platform/hadoop:hadoop_file_system",
    ],
)

Я думаю, что это решит вашу проблему.

Ref: Не удалось загрузить модели с HDFS