← На главную

Сверяясь с PyTorch, Codex ускорил WebGPU-солвер в 10 раз

30.07.2026 15:38 · hackernews

Разработчик создал бесплатный браузерный покерный солвер и обнаружил, что для запуска нейросети и CFR-алгоритма на WebGPU ему не понадобилась библиотека тензоров. Вместо того чтобы ждать портирования PyTorch или писать обёртки, он использовал Codex как генератор кастомных ядер. PyTorch стал оракулом корректности: агент получал задание написать WebGPU-ядра, сравнивал вывод с эталонной реализацией и подтверждал паритет. После единственного промпта тесты прошли, а запущенный на ночь цикл оптимизации принёс более чем десятикратное ускорение по сравнению с наивной версией. Агент заодно подсказал, что стоит сменить функцию активации модели.

Разработчик называет это образцом «reference implementation»: когда генерация кода дёшева и результат верифицируем, выгода от общих библиотек исчезает. Хороший набор тестов, покрывающий всё значимое поведение, работает лучше спецификации. Кастомное ядро, заточенное под конкретные вычисления, обходит любую универсальную библиотеку. Границы применимости — вычисления должны быть строго определены, эталонная реализация надёжна, а тесты отражают критичное поведение.

Сам солвер ищет приближённые равновесия Нэша через counterfactual regret minimization (CFR) и вместо хранения гигантских таблиц стратегий использует нейросеть для аппроксимации на пределе глубины поиска. Первую версию CFR разработчик писал осенью вручную: тогда LLM годились лишь для поиска багов и даже в PyTorch-коде норовили вставить циклы по тензорам. Спустя несколько месяцев ситуация изменилась — модели способны реализовать научную статью целиком, автономно сравнивать варианты алгоритмов, запускать короткие прогоны для подбора гиперпараметров и выводить базовые законы масштабирования. На задаче с WebGPU проверяемое вознаграждение позволило оставить LLM в цикле на часы и дни, пока результат не устроил.

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

Вывод проекта жёстче: библиотеки больше не диктуют архитектуру, а переписывание перестало быть запретным плодом. Солвер доступен на holdem.computer, код выложен на GitHub под ником phulin/poker2. Работа велась в основном в Recurse Center. Модель пока не сильнейшая, поддерживает только хедз-ап игру и не содержит фич коммерческих солверов вроде node locking. Для приличного уровня игры ей не хватает вычислительных ресурсов — обучение использовало примерно в сто раз меньше GPU-времени, чем академические аналоги. При реализации автор опирался на статьи DeepStack и ReBeL.

Читать оригинал →