Потерянная тетрадь — разработка длиною в ночь
Был поздний вечер. Ужасно болела голова, вирус не давал нормально дышать, а градусник упрямо полз вверх. Что можно делать в таком состоянии, когда кажется, что сама Смерть уже натирает лыжи где-то рядом? Будь как дома, путник...
Автор — бывший ведущий инженер NVIDIA в России, занимавшийся написанием фреймворка для нейросетей, — рассказывает, как во время болезни нашёл старую тетрадь с рисунком, сделанным вскоре после ухода компании из России. Набросок описывал идею получать матрицы свёртки Винограда методом градиентного спуска: это позволило бы строить точные алгоритмы с минимальным числом умножений для любых форм ядра, включая те, что не решаются аналитически. Он спросил у локального ИИ, не сделал ли кто-то уже то же самое, и нашёл лишь AlphaTensor от DeepMind и несколько академических работ — без открытого кода и без универсальности под произвольные Stride, Dilation и асимметрию. Тогда он решил закрыть многолетний гештальт и написать каркас нейросети по собственному рисунку, попросив об этом ИИ. Сам автор обычно работает на C++, CUDA и HDL (VHDL/SystemVerilog), но в тот вечер из-за плохого самочувствия позволил себе опуститься до Python. Полученная архитектура оказалась концептуально простой: два полносвязных слоя (fc_D и fc_F) кодируют входные данные D и ядро F в промежуточное пространство inter_dim, там выполняется поэлементное умножение, а третий слой (fc_C) декодирует результат обратно в форму выхода.