Google Cloud ML FAILED_PRECONDITION
Estoy tratando de usar Google Cloud ML para alojar un modelo de Tensorflow y obtener predicciones. Tengo un modelo previamente entrenado que he subido a la nube y he creado un modelo y una versión en mi consola Cloud ML.
Segui las instruccionesde aquí para preparar mis datos para solicitar predicciones en línea. Tanto para el método Python como para elglcoud
método me sale el mismo error. Por simplicidad, publicaré elgcloud
método:
Corrogcloud ml-engine predict --model spell_correction --json-instances test.json
dóndetest.json
es mi archivo de datos de entrada (una matriz JSON llamadainstances
) Obtengo el siguiente resultado:
ERROR: (gcloud.ml-engine.predict) HTTP request failed. Response: {
"error": {
"code": 400,
"message": "Precondition check failed.",
"status": "FAILED_PRECONDITION"
}
}
¿Cómo puedo obtener más detalles sobre esto? El mismo error exacto ocurre cuando intento a través de Python y allí tengo ungoogleapiclient.http.HttpRequest
objeto que contiene el error. Solo quiero saber por qué ocurre este error además de este error genérico. ¿Alguien sabe cómo obtener más detalles a través del método Python o elgcloud
¿método? Supongo que, dado que es el mismo error, es la misma causa raíz.
Salida degcloud ml-engine models list
:
NAME DEFAULT_VERSION_NAME
spell_correction testing
Salida degcloud ml-engine versions list --model spell_correction
NAME DEPLOYMENT_URI
testing gs://<my-bucket>/output/1/
test.json
: {"instances": [{"tokens": [[9], [4], [11], [9]], "mask": [[18], [7], [12], [30]], "keep_prob": 1.0, "beam": 64}]}
Mis entradas al modelo:
tokens
: tf.placeholder(tf.int32, shape=[None, None])
mask
: tf.placeholder(tf.int32, shape=[None, None])
keep_prob
: tf.placeholder(tf.float32)
beam
: tf.placeholder(tf.int32)
Al llamar a través de python, elrequest_body
es solotest.json
como una cuerda