Добавить метаданные в API-интерфейс tenorflow, обслуживающий вызов - PullRequest
0 голосов
/ 16 ноября 2018

Можно ли добавить метаданные к тензорному потоку, обслуживающему servable, чтобы эти метаданные также заполнялись в ответе от обслуживаемого объекта?

Если у меня есть сервак с файловой структурой:

my_servable/ 
           1541778457/ 
                     variables/ 
                     saved_model.pb 

Например:

```
outputs {
  key: "classes"
  value {
    dtype: DT_STRING
    tensor_shape {
      dim {
        size: 8
      }
    }
    string_val: "a"
    string_val: "b"
    string_val: "c"
    string_val: "d"
    string_val: "e"
    string_val: "f"
    string_val: "g"
    string_val: "h"
  }
}
outputs {
  key: "scores"
  value {
    dtype: DT_FLOAT
    tensor_shape {
      dim {
        size: 1
      }
      dim {
        size: 8
      }
    }
    float_val: 1.212528104588273e-06
    float_val: 5.094948463124638e-08
    float_val: 0.0009737954242154956
    float_val: 0.9988483190536499
    float_val: 3.245145592245535e-07
    float_val: 0.00010837535955943167
    float_val: 4.101086960872635e-05
    float_val: 2.676981057447847e-05
  }
}
model_spec {
  name: "my_model"
  version {
    value: 1541778457
  }
  signature_name: "prediction"
}

Если у меня есть что-то вроде git-хэша или уникального идентификатора длякод, сгенерировавший этот обслуживаемый объект, такой как f6ca434910504532a0d50dfd12f22d4c, возможно ли получить эти данные в запросе клиента?

В идеале что-то вроде:

```
outputs {
  key: "classes"
  value {
    dtype: DT_STRING
    tensor_shape {
      dim {
        size: 8
      }
    }
    string_val: "a"
    string_val: "b"
    string_val: "c"
    string_val: "d"
    string_val: "e"
    string_val: "f"
    string_val: "g"
    string_val: "h"
  }
}
outputs {
  key: "scores"
  value {
    dtype: DT_FLOAT
    tensor_shape {
      dim {
        size: 1
      }
      dim {
        size: 8
      }
    }
    float_val: 1.212528104588273e-06
    float_val: 5.094948463124638e-08
    float_val: 0.0009737954242154956
    float_val: 0.9988483190536499
    float_val: 3.245145592245535e-07
    float_val: 0.00010837535955943167
    float_val: 4.101086960872635e-05
    float_val: 2.676981057447847e-05
  }
}
model_spec {
  name: "my_model"
  version {
    value: 1541778457
  }
  hash {
    value: f6ca434910504532a0d50dfd12f22d4c
 }
  signature_name: "prediction"
}

Я попытался изменить каталог с 1541778457 на хеш, но это дало:

W tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:268] No versions of servable default found under base path

1 Ответ

0 голосов
/ 06 марта 2019

Полагаю, вы могли бы подойти к этой проблеме несколькими способами.Если вы хотите, чтобы идея изменить имя папки работала, помните, что имя папки в этом случае описывает версию вашей модели, которая, я думаю, должна быть целым числом.Поэтому я предполагаю, что вам нужно будет преобразовать ваш хэш в двоичный или десятичный код, а затем преобразовать его обратно, когда вы его получите.

Лучшее решение, на мой взгляд, было бы, если бы вы смогли изменить свою модель и добавить переменную, содержащую ваш хэш.И добавьте его в модель signature_def.В Python это будет выглядеть примерно так:

// create your field
hash = tf.placeholder("f6ca434910504532a0d50dfd12f22d4c",tf.string, name="HASH")

// build tensor
hash_info = tf.saved_model.utils.build_tensor_info(hash)

// add hash_info in your output in signature_def

// then you should be able to receive that data in your request
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...