Распараллеливание GPflow 2.0 GP регрессии для больших наборов данных - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь запустить регрессию GP в 2D-пространстве + 1D времени с ~ 8000 наблюдениями и составным ядром с 4 ковариационными функциями Matern 3/2 - более чем одно ядро ​​может обработать.

Было бы здорово иметь возможность распределять вычисления GPR по нескольким узлам, а не прибегать к вариационной GP. Эта проблема github объясняет, как выполнить многопоточность в GPflow 1.0, но я не ищу способ распараллелить многие predict_f вызовы.

Скорее, я хочу сделать GPR для большого набора данных, что означает инвертирование ковариационной матрицы больше, чем может обработать одно ядро. Есть ли способ распараллелить это вычисление для кластера или облака?

Ответы [ 2 ]

1 голос
/ 09 января 2020

Если вы заинтересованы в выводе на основе MVM, у нас есть немного начала: https://github.com/tensorflow/probability/blob/7c70d4a3389680670e989b93561440caaa0fb8cd/tensorflow_probability/python/experimental/linalg/linear_operator_psd_kernel.py#L252 Я играл со стохастической * квадратурой Ланцоша c для логдета и с предварительно подготовленной компьютерной графикой для решить, но до сих пор не передали их в TFP.

1 голос
/ 07 января 2020

С точки зрения вычислений, GPflow может делать все, что делает TensorFlow. Другими словами, если бы TensorFlow поддерживал облачные оценки, GPflow также поддерживал бы его. Но это не означает, что вы не можете реализовать свою версию вычислений TensorFlow, возможно, более эффективную и иметь возможность запускать ее в облаке. Вы можете начать изучать пользовательские операции TensorFlow: https://www.tensorflow.org/guide/create_op.

Линальные операции, такие как Cholesky, вряд ли можно распараллелить, и выгода от их экономии будет сомнительной. Хотя с точки зрения памяти преимущество кластерных вычислений очевидно.

...