Я сейчас использую Spark 2.3.0
с sparkling-water 2.3.1
.Я нашел документацию базовой библиотеки H2O, просмотрев changelog , который ссылается на this .Очевидно, он использует H2O 3.18
.
. Посмотрев на DNN, я заметил отсутствие параметра batch_size
, но вместо этого он предлагает параметр mini_batch_size
, который фактически не задокументирован.Единственная документация по этому параметру, которую я нашел, это здесь , что относится к H2O 2.4
, и я предположил, что она все еще применима к используемой версии (я не знаю, верно ли это предположение).
мини-пакет
Количество строк обучающих данных, обрабатываемых за одну итерацию.Обратите внимание, что независимо от этого параметра, каждая строка используется немедленно для обновления модели с (онлайн) стохастическим градиентным спуском.Размер мини-пакета контролирует период синхронизации между узлами в распределенной среде и частоту, с которой может происходить оценка и отмена модели.Например, если для мини-пакета установлено значение 10 000 для H2O, работающего на 4 узлах, то каждый узел будет обрабатывать 2500 строк за итерацию, выборочно выбирая их локальные данные.Затем происходит усреднение модели между узлами, и может происходить оценка (в зависимости от интервала оценки и коэффициента заполнения).Специальные значения: 0 для одной эпохи на итерацию и -1 для обработки максимального количества данных на итерацию.Если «реплицировать обучающие данные» включено, N эпох будет обучаться за итерацию на N узлах, в противном случае одна эпоха.
Исходя из этого, я интерпретирую, что размер пакета фактически равен 1, поскольку он всегда выполняетOnline Gradient Descent.
Я также начал копаться в исходном коде H2O, чтобы посмотреть, каково его значение по умолчанию, и AFAIU параметры по умолчанию содержатся в этот класс .
Из строки 1694 :
// stochastic gradient descent: mini-batch size = 1
// batch gradient descent: mini-batch size = # training rows
public int _mini_batch_size = 1;
Итак, из комментария кажется, что на самом деле он не выполняет Online Gradient Descent, но, похоже, фактически ведет себя как пакетразмер.И значение 1 не имеет смысла, если мы предполагаем, что документация H2O 2.4
все еще применяется.
Кроме того, из строка 2173 , где она устанавливает пользовательские параметры:
if (fromParms._mini_batch_size > 1) {
Log.warn("_mini_batch_size", "Only mini-batch size = 1 is supported right now.");
toParms._mini_batch_size = 1;
На самом деле у меня была быстрая блокировка исходного кода, и я мог что-то упустить, но я действительно не могу понять, как работает параметр mini_batch_size
и как он соотносится с размером пакета.Может кто-нибудь пролить свет на это?