ML Engine BigQuery: у запроса недостаточно областей проверки подлинности

Я использую модель тензорного потока, отправляю обучение на ml Engine. Я создал конвейер, который читает из BigQuery, используя tf.contrib.cloud.python.ops.bigquery_reader_ops.BigQueryReade r в качестве средства чтения для очередь.

Все работает нормально с использованием DataLab и local, установив переменную GOOGLE_APPLICATION_CREDENTIALS, указывающую на файл json для ключа учетных данных. Однако, когда я отправляю задание на обучение в облаке, я получаю следующие ошибки (я просто публикую две основные):

  1. В разрешении отказано: ошибка при выполнении HTTP-запроса (код ответа HTTP 403, код ошибки 0, сообщение об ошибке '') при чтении схемы для ...

  2. При создании модели произошла ошибка. Проверьте подробности: у запроса недостаточно областей аутентификации.

Я уже проверил все остальное, например, правильно определив схему таблицы в скрипте и идентификаторы / имена проектов / данных / таблиц.

Я вставляю сюда всю ошибку, присутствующую в журнале, для большей ясности:

сообщение: "Отслеживание (последний звонок последний):

File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)

File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals

File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 131, in <module>
    hparams=hparam.HParams(**args.__dict__)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 210, in run
    return _execute_schedule(experiment, schedule)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 47, in _execute_schedule
    return task()

 File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 495, in train_and_evaluate
    self.train(delay_secs=0)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 275, in train
    hooks=self._train_monitors + extra_hooks)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 665, in _call_train
    monitors=hooks)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/deprecation.py", line 289, in new_func
    return func(*args, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 455, in fit
    loss = self._train_model(input_fn=input_fn, hooks=hooks)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 1007, in _train_model
    _, loss = mon_sess.run([model_fn_ops.train_op, model_fn_ops.loss])

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 521, in __exit__
    self._close_internal(exception_type)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 556, in _close_internal
    self._sess.close()

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 791, in close
    self._sess.close()

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 888, in close
    ignore_live_threads=True)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/coordinator.py", line 389, in join
    six.reraise(*self._exc_info_to_raise)

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/queue_runner_impl.py", line 238, in _run
    enqueue_callable()

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1063, in _single_operation_run
    target_list_as_strings, status, None)

File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
    self.gen.next()

File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status
    pywrap_tensorflow.TF_GetCode(status))
PermissionDeniedError: Error executing an HTTP request (HTTP response code 403, error code 0, error message '')
     when reading schema for pasquinelli-bigdata:Transactions.t_11_Hotel_25_w_train@1505224768418
     [[Node: GenerateBigQueryReaderPartitions = GenerateBigQueryReaderPartitions[columns=["F_RACC_GEST", "LABEL", "F_RCA", "W24", "ETA", "W22", "W23", "W20", "W21", "F_LEASING", "W2", "W16", "WLABEL", "SEX", "F_PIVA", "F_MUTUO", "Id_client", "F_ASS_VITA", "F_ASS_DANNI", "W19", "W18", "W17", "PROV", "W15", "W14", "W13", "W12", "W11", "W10", "W7", "W6", "W5", "W4", "W3", "F_FIN", "W1", "ImpTot", "F_MULTIB", "W9", "W8"], dataset_id="Transactions", num_partitions=1, project_id="pasquinelli-bigdata", table_id="t_11_Hotel_25_w_train", test_end_point="", timestamp_millis=1505224768418, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

Любое предложение было бы чрезвычайно полезным, поскольку я относительно новичок в GC. Спасибо вам всем.


person Niccolò Rondelli    schedule 12.09.2017    source источник


Ответы (1)


Поддержка чтения данных BigQuery из Cloud ML Engine все еще находится в стадии разработки, поэтому то, что вы делаете, в настоящее время не поддерживается. Проблема, с которой вы сталкиваетесь, заключается в том, что машины, на которых работает ML Engine, не имеют необходимых областей для взаимодействия с BigQuery. Потенциальная проблема, с которой вы также можете столкнуться при локальном запуске, - это низкая производительность при чтении BigQuery. Это два примера работы, которую необходимо решить.

А пока я рекомендую экспортировать данные в GCS для обучения. Это будет намного более масштабируемым, поэтому вам не нужно беспокоиться о низкой производительности обучения по мере увеличения ваших данных. Это может быть хорошим шаблоном, так как он позволит вам один раз предварительно обработать данные, записать результат в GCS в формате CSV, а затем выполнить несколько обучающих прогонов, чтобы опробовать различные алгоритмы или гиперпараметры.

person Jing Jing Long    schedule 12.09.2017
comment
Большое спасибо за ваш ответ. Я продолжу, как вы предлагаете. - person Niccolò Rondelli; 12.09.2017