загрузка моделей тензорного потока в Java

exportDir = "gs://testbucket/export/";
SavedModelBundle b = SavedModelBundle.load(exportDir, "serve"); 

Выдает мне ошибку:

org.tensorflow.TensorFlowException: SavedModel не найден в каталоге экспорта: gs: // testbucket / export /

копирование сохраненного_model.pb в локальный каталог с последующим указанием пути к локальной файловой системе работает.

В то время как

tf.saved_model.loader.load(session, [tf.saved_model.tag_constants.SERVING], export_dir)

Это работает с ведром gcs. Кто-нибудь знает, что загрузка моделей с использованием svedmodelBundle api не поддерживает ведро gcs? Как я могу загрузить saved_model.pb и переменные из ведра gcs, не копируя их в локальную файловую систему в java


comment
Я подозреваю, что модуль GCS по умолчанию не компилируется. Позвольте мне проверить и вернуться к вам.   -  person rhaertel80    schedule 19.04.2018
comment
не вызывает ли загрузчик python saved_model и savedBundle api в java то же самое под библиотекой C? Можем ли мы исправить это, так как мне нужно иметь доступ к большим файлам модели с контрольными точками и переменными из gcs на распределенных рабочих   -  person user179156    schedule 19.04.2018
comment
В Java используется предварительно скомпилированный libtensorflow_jni. Хотя исходный код определенно такой же, как и Python, сборка Python не использует libtensorflow_jni и, возможно, поставляется с другим набором параметров. Я все еще проверяю, как построен libtensorflow_jni. Мы также рассмотрим способы предложить двоичный файл с поддержкой GCS.   -  person rhaertel80    schedule 19.04.2018
comment
Кроме того, рассматривали ли вы возможность использования tf-serve, который будет обрабатывать обслуживание из коробки (например, ваши серверы Java могут выдавать RPC для tf-serve)? А если вам нужен простой способ развернуть tf-serve (бесплатно), вы можете попробовать Kubeflow в любом кластере Kubernetes. CloudML Engine - это платная опция, которая скоро будет поддерживать машины с большой памятью.   -  person rhaertel80    schedule 19.04.2018
comment
Я хочу обслуживать модели на сотнях или тысячах серверов, уже работающих на gce. Также tf-serve не сможет обрабатывать требования qps и задержки из моего предыдущего обсуждения. Также я хочу иметь возможность оценивать модели на луче apache, в основном выполняя вывод для миллиардов записей (10+ ТБ данных), поэтому в идеале мы хотели бы иметь возможность загружать модели из gcs.   -  person user179156    schedule 19.04.2018
comment
Мы рады помочь вам сделать то, что вам нужно, поэтому не интерпретируйте то, что я говорю, как рассказ о том, как что-то делать, а просто о том, что нужно учитывать. tf-serve - это высокоэффективная модель, обслуживающая библиотеку / двоичный файл с открытым исходным кодом, поэтому она может легко обрабатывать ваши qps / задержку (возможно, лучше, чем Java). Я предвижу задачу его развертывания, что помогает упростить Kubeflow (но похоже, что вы не используете Kubernetes).   -  person rhaertel80    schedule 19.04.2018
comment
Я продолжу работать над тем, что делать со сборкой JNI, но нам также было бы интересно поговорить с вами напрямую. Если хотите, можете ли вы написать по электронной почте cloudml-feedback @ (это не про cloudml, это самая простая группа для отправки по электронной почте)?   -  person rhaertel80    schedule 19.04.2018
comment
Будет ли простой способ сделать это в автономном конвейере, сначала в Apache Beam, я хотел бы прочитать некоторые модели и выполнить некоторый вывод. Как я могу загрузить модель лучниками / рабочими потоками данных. Я определенно хочу рассмотреть возможность использования tf-serve в качестве библиотеки (а не отдельного двоичного файла для вызова rpc) для начала.   -  person user179156    schedule 19.04.2018
comment
У вас есть указатели на код о том, как я могу использовать tf-serve в качестве библиотеки на моих уже существующих серверах?   -  person user179156    schedule 19.04.2018
comment
В Beam есть несколько опций для пакетного вывода, но в основном они доступны в Python. Я думаю, что большая часть ценности tf-serve находится в двоичной форме; просто использование его в качестве библиотеки, вероятно, не принесет пользы сверх того, что вы уже пытаетесь сделать. Мы хотели бы лучше понять ваш вариант использования, если вы хотите поговорить по телефону / через ВК.   -  person rhaertel80    schedule 19.04.2018
comment
конечно, как я могу запланировать видеовстречу, у меня уже открыт билет в Google Enterprise   -  person user179156    schedule 19.04.2018
comment
отправьте свою контактную информацию на адрес cloudml-feedback @, и мы что-нибудь запланируем. Предоставьте подробную информацию о вашем открытом запросе в службу поддержки.   -  person rhaertel80    schedule 19.04.2018
comment
Я сейчас отправляю изменение, чтобы включить GCP по умолчанию. Я ожидаю, что он появится на github через 1-2 дня. Если это срочно, вы можете собрать библиотеку самостоятельно. Я буду работать над тем, чтобы официально представить это в официальном выпуске TF 1.8, хотя график очень плотный.   -  person rhaertel80    schedule 19.04.2018
comment
При дальнейшем исследовании мне кажется, что libtensorflow_jni действительно включает GCP в версии 1.6 и новее, но не включает его в 1.4. Использует ли ваша Java-программа TensorFlow 1.4? Не могли бы вы попробовать с 1.6 или 1.7?   -  person ash    schedule 20.04.2018
comment
я пробовал 1.7, не получилось   -  person user179156    schedule 20.04.2018
comment
С такой же ошибкой или чем-то другим? (Я спрашиваю, потому что мне кажется, что я могу использовать бинарные файлы версии 1.7 и загружать GCS)   -  person ash    schedule 20.04.2018
comment
позвольте мне попробовать еще раз, мой intellij, вероятно, все еще набирает 1.4 и выдает эту ошибку, позвольте мне подтвердить   -  person user179156    schedule 20.04.2018
comment
ОК, подтвердил, это не работает в 1.4, 1.6, 1.7   -  person user179156    schedule 21.04.2018
comment
2018-04-20 14: 16: 48.543996: I tensorflow / cc / saved_model / loader.cc: 291] Загрузка SavedModel для тегов {serve}; Статус: провал. Заняло 53 микросекунды. Исключение в потоке main org.tensorflow.TensorFlowException: SavedModel не найден в каталоге экспорта: gs: //   -  person user179156    schedule 21.04.2018
comment
Хм ... для записи, эта суть демонстрирует, что сработало для меня.   -  person ash    schedule 21.04.2018
comment
странно, я проверил локально, я использую правильную версию, но все еще не работает с gcs, пытаюсь создать новую корзину gcs: 018-04-20 16: 10: 53.708471: I tensorflow / cc / saved_model / loader.cc: 196] Запуск LegacyInitOp в пакете SavedModel. 2018-04-20 16: 10: 54.324983: I tensorflow / cc / saved_model / loader.cc: 291] Загрузка SavedModel для тегов {serve}; Статус: успех. Заняло 2196565 микросекунд. Версия TensorFlow: 1.7.0, Модель MetaGraphLength: 18154079   -  person user179156    schedule 21.04.2018
comment
Возможно ли, что версия java tenorflow использует другую версию jni внизу?   -  person user179156    schedule 21.04.2018
comment
Давайте продолжим это обсуждение в чате.   -  person ash    schedule 21.04.2018
comment
@ rhaertel80, вы придумали решение после предложенной тусовки? Если бы это было так, не могли бы вы опубликовать его здесь в качестве ответа? Спасибо.   -  person Rodrigo C.    schedule 25.04.2018
comment
@ash было найдено решение? Родриго: Эш вступил во владение, и у него должно быть больше деталей. Кажется, что TF ›= 1.6 в Linux должен иметь его, но, возможно, в Mac его нет.   -  person rhaertel80    schedule 26.04.2018
comment
Да, похоже, что сборки Linux имеют привязку к GCS, а Mac и Windows - нет. Для Mac вам придется собирать из исходников до следующего выпуска. надеюсь, это поможет   -  person ash    schedule 26.04.2018
comment
@ash, если можно, не могли бы вы опубликовать ответ с основными моментами, которые обсуждались в чате, и какое решение там было найдено? Спасибо.   -  person Rodrigo C.    schedule 28.04.2018


Ответы (1)


tf.saved_model.tag_constants.SERVING - это строка serv_default.

Может, в этом проблема?

person Lak    schedule 19.04.2018
comment
также, если теги не совпадают, сообщение об ошибке отличается, говоря, что не удалось найти график с этим конкретным тегом, - person user179156; 19.04.2018