Mi objetivo es hacer predicciones en el motor de google cloud ml.
Instalé gcloud sdk en linux ubuntu 16.04LT siguiendo las instrucciones de Google . Ya tengo un modelo entrenado en aprendizaje automático. Estoy usando la versión de python anaconda python 3.5.
Corro:
gcloud ml-engine local predict --model-dir={MY_MODEL_DIR} --json-instances={MY_INPUT_JSON_INSTANCE}Recibí el mensaje: ERROR:
(gcloud.ml-engine.local.predict) RuntimeError: número mágico incorrecto en el archivo .pyc
A continuación se muestra todo el seguimiento de la pila:
DEBUG: (gcloud.ml-engine.local.predict) RuntimeError: Bad magic number in .pyc file Traceback (most recent call last): File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 797, in Execute resources = calliope_command.Run(cli=self, args=args) File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 757, in Run resources = command_instance.Run(args) File "/usr/lib/google-cloud-sdk/lib/surface/ml_engine/local/predict.py", line 65, in Run args.text_instances) File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine/local_utils.py", line 89, in RunPredict raise LocalPredictRuntimeError(err) LocalPredictRuntimeError: RuntimeError: Bad magic number in .pyc file ERROR: (gcloud.ml-engine.local.predict) RuntimeError: Bad magic number in .pyc file Evaluation ended**en realidad funciona con python3, solo necesita eliminar los archivos pyc en las carpetas de la nube de Google, para que la llamada de predicción pueda compilarlos con python3.
para conocer la ubicación de los archivos pyc, habilité la marca --verbosity debug en la llamada de predicción:
gcloud ml-engine local predict --model-dir=${MODEL_LOCATION} --json-instances=data/new-data2.json --verbosity debugel trackback le dará información sobre la ruta de los archivos del motor gcloud ml, en mi máquina era:
/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine/vaya a ese directorio y elimine los archivos pyc.
De hecho, yo mismo publiqué esta pregunta para ayudar a las personas con el mismo problema, porque no pude encontrar una respuesta fácil y concisa.
Hay otras soluciones, en mi opinión incluso mejores que la mía, pero esta fue la que me resolvió.
Mi solución fue que Google Cloud SDK no funciona con Python 3, al menos en mi configuración. Resolver:
Si su modelo de exportación ml y las entradas están bien, funcionará.
Problema simple, pero me causó mucho dolor, solo porque no pude encontrar fácilmente este requisito previo o simplemente me lo perdí.
Espero ayudar a alguien.
Encuentre y elimine todos los archivos pyc en el SDK de Google. Fueron compilados con el entorno de python incorrecto. Se volverán a compilar automáticamente la próxima vez que se necesiten.
%%bash find "/tools/google-cloud-sdk/lib/" -name '*.pyc' -delete