Ошибка паники в облаке Google ТПУ

Я могу открыть сеанс ctpu и получить нужный мне код из своего репозитория git, но когда я запускаю свой код тензорного потока из облачной оболочки, я получаю сообщение о том, что TPU отсутствует, и моя программа падает. Вот сообщение об ошибке, которое я получаю:

adrien_doerig@adrien-doerig:~/capser$ python TPU_playground.py
(unset)
INFO:tensorflow:Querying Tensorflow master () for TPU system metadata.
2018-07-16 09:45:49.951310: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
INFO:tensorflow:Failed to find TPU: _TPUSystemMetadata(num_cores=0, num_hosts=0, num_of_cores_per_host=0, topology=None, devices=[_DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456)])
Traceback (most recent call last):
File "TPU_playground.py", line 79, in <module>
capser.train(input_fn=train_input_fn_tpu, steps=n_steps)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 363, in train
hooks.extend(self._convert_train_steps_to_hooks(steps, max_steps))
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_estimator.py", line 2068, in _convert_train_steps_to_hooks
if ctx.is_running_on_cpu():
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_context.py", line 339, in is_running_on_cpu
self._validate_tpu_configuration()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_context.py", line 525, in _validate_tpu_configuration
'are {}.'.format(tpu_system_metadata.devices))
RuntimeError: Cannot find any TPU cores in the system. Please double check Tensorflow master address and TPU worker(s). Available devices are [_DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU

Когда я открываю другую оболочку и ввожу "ctpu status", я вижу, что мой кластер tpu работает, но я получаю следующую паническую ошибку:

adrien_doerig@capser-210106:~$ ctpu status

Your cluster is running!

    Compute Engine VM:  RUNNING
    Cloud TPU:          RUNNING

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x671b7e]
goroutine 1 [running]:
github.com/tensorflow/tpu/tools/ctpu/commands. 
(*statusCmd).Execute(0xc4200639e0, 0x770040, 0xc4200160d0, 0xc4200568a0, 0x0, 
0x0, 0x0, 0x6dddc0)
    /tmp/ctpu- 
release/src/github.com/tensorflow/tpu/tools/ctpu/commands/status.go:214 +0x5ce
github.com/google/subcommands.(*Commander).Execute(0xc420070000, 0x770040, 
0xc4200160d0, 0x0, 0x0, 0x0, 0x5)
    /tmp/ctpu-release/src/github.com/google/subcommands/subcommands.go:141 
+0x29f
github.com/google/subcommands.Execute(0x770040, 0xc4200160d0, 0x0, 0x0, 0x0, 
0xc420052700)
    /tmp/ctpu-release/src/github.com/google/subcommands/subcommands.go:385 
+0x5f
main.main()
    /tmp/ctpu-release/src/github.com/tensorflow/tpu/tools/ctpu/main.go:87 
+0xd5e

Я попытался устранить неполадки, предложенные здесь: https://cloud.google.com/tpu/docs/troubleshooting устранение неполадок, но это не сработало, потому что все кажется нормальным, когда я вхожу

gcloud compute tpus list

Я также попытался создать совершенно новый проект и даже использовать другой аккаунт Google, но это не решило проблему. Я не нашел подобных ошибок в облачных TPU. Я что-то упускаю из виду?

Спасибо за помощь!

2 ответа

Решение

Хорошо, я понял это:

Мне нужно было добавить параметр master=... в мой RunConfig следующим образом (2-я строка в следующем коде):

my_tpu_run_config = tpu_config.RunConfig(
master=TPUClusterResolver(tpu=[os.environ['TPU_NAME']]).get_master(),
model_dir=FLAGS.model_dir,
save_checkpoints_secs=FLAGS.save_checkpoints_secs,
save_summary_steps=FLAGS.save_summary_steps,
session_config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True),
tpu_config=tpu_config.TPUConfig(iterations_per_loop=FLAGS.iterations, num_shards=FLAGS.num_shards))

Теперь, паническая ошибка все еще появляется, когда я вхожу в "состояние ctpu" (я делаю это из другой оболочки, где виртуальная машина не работает), но я могу в любом случае запустить вещи на облачных TPU, то есть первое сообщение об ошибке от моего оригинальный пост больше не встречается. Поэтому использование параметра master=... позволяет мне запускать мои программы, но я все еще не уверен, что означает паническая ошибка - она ​​может быть просто неважной.

Паника в ctpu может быть проигнорировано на данный момент, и это вызвано неспособностью проверить, является ли SchedulingConfig поле в объекте узла TPU, возвращенное из API-интерфейса REST Cloud TPU, заполняется (и, следовательно, не равно нулю). Это решается этим пиаром:

https://github.com/tensorflow/tpu/pull/148

и шум исчезнет, ​​как только этот PR будет включен в Google Cloud Shell.

Другие вопросы по тегам