Понимающий TensorFlow псевдокод для WALSModel относительно шардинга и супервизора - PullRequest
0 голосов
/ 27 марта 2019

ПРИМЕЧАНИЕ : этот вопрос связан с colab и основан на псевдокоде для tf.contrib.factorization.WALSModel.

Корочевопрос состоит в том, как заполнить псевдокод для WALSModel (см. colab )


Документация Tensorflow не является полной и не обязательно лучшей.На странице документации нередко просто делается ссылка на файл .proto (который может содержать некоторые комментарии и, возможно, пример).Например, ClusterDef, Example, Feature, JobDef и т. Д. - все ссылки на .protoфайл для пользователя, чтобы расшифровать.

Это может сделать преобразование псевдокода длительным и запутанным процессом, иногда приводящим пользователя, работающего над частью более высокого уровня API, в траншеи.

Так обстоит дело с псевдокодом tf.contrib.factorization.WALSModel.

Отчасти причина, по которой псевдокод WALSModel особенно сложенЧтобы понять, что псевдокод не предназначен для базового варианта использования (подача матрицы в WALSModel, выполнение для i итераций и получение результирующего row_factors / col_factors).Скорее, этот псевдокод призван продемонстрировать, как запустить WALSModel, возможно, в распределенной установке с заштрихованной матрицей (что может потребоваться для больших входных матриц).

Однако этот псевдокод не дает достаточных указаний для реализации распределенного сегментированного WALSModel.

Почему?

Для начала первое упоминание о том, что входная матрица должна использоваться совместно, не до определения операций обновления:


_, row_update_op, unreg_row_loss, row_reg, _ = model.update_row_factors(
     sp_input = matrix_slices_from_queue_for_worker_shard
)

Переменная псевдокода matrix_slices_from_queue_for_worker_shard не указывает, как пользователь должен это делать.

Дальнейшие примеры больших пробелов в псевдокоде появятся всего несколькими строками позже:

# model_init_op is passed to Supervisor. Chief trainer runs it. Other
# trainers wait.
sv = tf.train.Supervisor(is_chief=is_chief,
                   ...,
                   init_op=tf.group(..., model_init_op, ...), ...)

В этом большом блоке псевдокода есть упоминание о том, где и как должен быть обучен руководительнастроить или как другие тренеры ждут.

Понятно, что этот псевдокод специально предназначен для WALSModel, а не для тренеров очереди.Однако, учитывая, что документация tf.train ссылается на несуществующее руководство «Обучение» (просто перечисляются модули / классы, многие из которых ссылаются на файлы .proto), куда следует обратиться для изучениякак правильно реализовать это?

Поэтому я решил попробовать заполнить этот псевдокод в меру своих возможностей (см. colab и быстро зайти в тупик.

Буду признателен за любую помощь / руководство по заполнению этого псевдокода (распределенное, защищенное WALSModel) или за информацией о том, как это сделать.

Использование может быть частично связанным выпуск 26928 , где @ walidk ссылается на некоторый тестовый код для tf.Estimator версии WALSModel (WALSMatrixFactorization), которая, кажется, имеет ещекод для шардинга, но поскольку это Estimator, не обязательно ясно, что нужно только для WALSModel относительно псевдокода, предоставленного на странице документации WALSModel.

...