Эксперимент на тему обучения нейронок в 1.58 бит. Веса модели представляются в тернарном виде (т.е. каждый вес преобразуется в значение {-1,0,1}) и так используются для обучения. Генерим много случайных разряженных тернарных шумовых векторов v_i (в них много нулей). С ними вычисляем якобиан-векторное произведение и получаем проекцию градиента на шумовой вектор, от которого нам нужен только знак (лежит шумовой вектор по градиенту (1) или против него (-1), или ортогонально (0)). И градиент оценивается через сумму шумовых векторов умноженных на знак проекции. Веса и градиент у нас тернарные и это должно сильно экономить память. Параметры алгоритма: сколько случайных векторов используем и их разреженность. Шумовые вектора (v_i) генерятся псевдослучайно из сида и нам не нужно их хранить (можно из сида восстановить, это может пригодиться при распределенном обучении). Для хорошего обучения важен большой батч и много шагов оптимизации. Так понял. Автор добавил ноутбук с трейном MLPшки распознавать MNIST, вроде обучается. noise_step: Training in 1.58b With No Gradient Memory Код и статья тут: https://github.com/wbrickner/noise_step/tree/main
Эксперимент на тему обучения нейронок в 1.58 бит. Веса модели представляются в…
Из этого канала
- #895А еще вдогоночку неделю назад работа вышла по 1.58bit Flux (флакс щас лучшая…
А еще вдогоночку неделю назад работа вышла по 1.58bit Flux (флакс щас лучшая генерилка картинок) где обещают в ~5 раз экономию памяти на инференсе…
- #896В прошлом году ребята из Physical Intelligence рассказывали про модель Pi0…
В прошлом году ребята из Physical Intelligence рассказывали про модель Pi0 https://www.physicalintelligence.company/blog/pi0 - что это фаундейшен моделька для…
- #897Тул для командной строки, который собирает код из укзанной директории в большой…
Тул для командной строки, который собирает код из укзанной директории в большой промт для ЛЛМки (для анализа кода, изменения или чего вам нужно).