0

Je suis actuellement en train d'explorer le déploiement de modèles sur Google ML Engine. Au début, j'ai développé un modèle en utilisant TensorFlow 1.1.0 car c'est la dernière version existante (au moment où cette question est posée). Cependant, il s'est avéré que la version la plus supportée de TensorFlow sur GCP est 1.0.1. Le problème est, précédemment quand j'utilisais TensorFlow 1.1.0, SavedModelBuilder enregistrerait correctement le modèle comme SavedModel et ses variables sous le répertoire variables/. Cependant, quand je passe à TensorFlow 1.0.1, cela n'a pas fonctionné: Le fichier SavedModel a été créé, mais aucun fichier n'a été créé sous variables/ et donc aucun modèle ne peut être construit en utilisant seulement le fichier SavedModel (fichiers manquants sous variables/).TensorFlow 1.0.1 SavedModelBuilder

Est-ce un bug connu? Ou devrais-je faire quelque chose afin de rendre le SavedModelBuilder sur TensorFlow 1.0.1 fonctionne comme TensorFlow 1.1.0?

Merci.

EDIT, plus en détail:

En fait, il n'y a pas dans mon modèle existe tf.Variable explicites s. Cependant, il existe plusieurs tf.contrib.lookup.MutableDenseHashTable s et ils sont exportés correctement dans TensorFlow 1.1.0, mais pas dans TensorFlow 1.0.1 (car aucune variable n'a été exportée du tout dans la version 1.0.1).

+0

Pour clarifier les choses, vous dites que le 'tf.contrib.lookup.MutableDenseHashTable' est exportée en tant que variable 1.1.0, mais pas 1.0.1? – jwayne

+0

@jwayne Je ne sais pas si elle est exportée en tant que variable. Cependant, enregistrer et charger le modèle (y compris le 'MutableDenseHashTable' en utilisant' SavedModelBuilder' dans 1.1.0 fonctionne bien, mais pas dans 1.0.1.) – sokokaleb

Répondre

0

Il semble que la possibilité d'enregistrer et de charger des modèles dans TensorFlow sans variables a été introduite dans ce commit qui n'est disponible qu'en 1.1.0. Pour contourner le problème, vous pouvez créer une variable factice (inutilisée) dans votre modèle.

Edit: Sur la base de la mise à jour OP, il sonne comme il y a un MutableDenseHashTable qui n'est pas sauvé.

Vous pouvez exécuter TensorFlow 1.1 sur CloudML Engine, mais il est nécessaire de l'ajouter manuellement en tant que package supplémentaire. Pour commencer, téléchargez le TensorFlow 1.1 wheel. Indiquez ensuite comme un paquet supplémentaire à votre travail de formation, par exemple,

gcloud ml-engine jobs submit training my_job \ 
    --module-name trainer.task \ 
    --staging-bucket gs://my-bucket \ 
    --package-path /my/code/path/trainer \ 
    --packages tensorflow-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl 
+0

En fait, comme le SavedModel sera utilisé dans le service (en tant que modèle de service), ce J'ai besoin d'enregistrer est la variable (s) et ses valeurs afin que le graphique et ses variables + contenu peuvent être directement chargés une fois restaurés. – sokokaleb