Во что выливается и что даст?
Полгода назад ДЕМОН был идеей про наблюдателя: не моделируй систему целиком, смотри на неё через щель и предсказывай ровно то, что можешь. Сегодня он выливается в библиотеку, которая подменяет собой самый главный кирпич всех вычислений на планете - умножение матриц.
Почему это другая территория. Всё, что считают компьютеры - нейросети, симуляции, графика, фильтры, физика, - в конце концов сводится к одному действию: перемножить две таблицы чисел. Этим занимаются библиотеки, отполированные тридцатью годами инженерии до предела возможностей железа. Их не пытаются обогнать - их принимают как закон природы. Мы поставили наблюдателя между программой и этим законом.Как это работает, на пальцах. Умножение - не мгновенный акт, а процесс. Когда программа гоняет через одну и ту же матрицу поток данных - а так устроено почти всё: веса сети не меняются, меняются входы; уравнение то же, меняется состояние, - наблюдатель начинает видеть, что входы не произвольны. Они живут в маленьком подпространстве, в тонком слое возможного. Уловив это, демон перестаёт считать всё: он предсказывает результат из нескольких коэффициентов, а потом проверяет своё предсказание дешёвым сертификатом - неравенством, которое либо выполняется, либо нет. Выполнилось - ответ принят, и он гарантированно в допуске. Нет - считаем как раньше. И ещё демон умеет забывать: если поток поменял характер, ворота срабатывают, старая картина выбрасывается, наблюдатель переучивается на лету.
Что это дало в цифрах, на живом ядре против эталонной библиотеки, с проверкой каждого ответа:
- одно умножение на потоке с внутренней структурой - в 5-6 раз быстрее, 93 % работы просто не выполняется;
- цепочка из нескольких умножений подряд - здесь начинается самое интересное. Промежуточные результаты не разворачиваются в плотный вид вообще: коэффициенты едут по всей цепочке, а сертификат проверяется на каждом звене из одного тонкого прохода. Четыре звена - в 12-15 раз быстрее, восемь - в 20. Чем длиннее конвейер, тем больше выигрыш, потому что цена спекуляции от длины почти не зависит;
- на полностью случайных данных, где предсказывать нечего, демон выключает сам себя - и работает как обычная библиотека. Он никогда не медленнее того, что подменяет. Это контракт.
И второй результат, про который стоило бы написать отдельно: случайность была и будет ограниченной в рамках обычных вычислений на компьютере в FP8,16,32, 64. У «случайной» матрицы, записанной в компьютерных числах, есть структура, которую задаёт сама система счисления и требуемая точность.
При заданной точности большинство мельчайших операций внутри умножения доказуемо не влияют на ответ - их можно не делать, и результат выходит точнее стандартного. Для троичной арифметики это 72 % операций. Это уже разговор про железо, и он идёт параллельно.Что это даст.
Ускорение, которое не требует переписывать программы: библиотека подставляется вместо стандартной, и всё, что гоняет потоки через матрицы, - от нейросетей до симуляций - получает выигрыш пропорционально структуре своих данных. Не гарантированные проценты на бенчмарке, а другой принцип: считать только то, что может изменить ответ, и доказывать это на каждом шаге.
Части этой картины по отдельности встречались в разных областях: приближённые умножения, наблюдатели за алгоритмами, разрядные схемы точности, отбор важного во внимании нейросетей. Каждая - на своей территории, со своей задачей. Одного механизма, который делает это всё сразу, под одним контрактом, на месте стандартной библиотеки, - не было. Теперь он есть и считает.
Дальше: версия для видеокарт и подключение к нейросетевым фреймворкам как плагин. Название библиотеки объявлю, когда она выйдет из лаборатории.
🦆🦆🦆
Поддержать канал ₽ / $ / ₿