Перейти к основному содержимому

Проверка инференса

Здесь разобрано, как AETRON проверяет работу инференса: повседневный случай, когда майнер обслуживает модель и возвращает ответ. Проверкой занимаются сами майнеры друг для друга, а следит за этим протокол. Отдельной роли валидатора нет, субъективных оценок тоже.

На каком детерминизме всё держится​

Прогон модели на заданном входе даёт детерминированное распределение вероятностей следующего токена (логиты), даже если выпавший токен каждый раз разный. Два честных прогона одной модели с одинаковыми настройками дают одно и то же распределение. Другая или подправленная модель даёт другое. Именно это делает перепроверку осмысленной: результат либо сходится, либо нет.

Практическое следствие - широкий зазор между честным шумом и подделкой. По замерам на одной модели на разных GPU расстояние L2 между векторами логитов лежит примерно в диапазоне 0,01-0,03. Подмена модели уводит его к 0,3-0,8. Порог в районе 0,05-0,10 разделяет эти два случая с запасом с обеих сторон.

Артефакт проверки​

Обслуживая запрос, майнер записывает компактный артефакт проверки с ключевыми состояниями вычисления. Сам артефакт остаётся у майнера. В цепь попадает только хэш, а артефакт выдаётся по запросу во время перепроверки.

Содержимое зависит от класса модели.

Языковые модели (авторегрессионные). В артефакте лежат top-k вероятности первого сгенерированного токена, сид сэмплирования, хэш модели, идентификатор запроса и метка времени. Подделать именно первый токен дорого, потому что для его получения нужно прогнать весь вход через настоящие веса. Размер около 200 байт.

Диффузионные модели (изображение, видео, звук). Сэмплирование здесь итеративное, поэтому артефакт фиксирует траекторию, а не одно распределение: хэши промежуточного латента на заданных шагах (например, на 5-м и 25-м), хэш финальных байтов, сид, число шагов и хэш модели. Размер около 200 байт.

Энкодеры (BERT, CLIP, ViT). Стадии сэмплирования у них нет, они полностью детерминированы, поэтому артефакт минимален: хэш полученного эмбеддинга или классового выхода плюс хэш модели. Размер около 100 байт.

Протокол проверки​

Шаг 1: исполнение​

Запрос потребителя доходит до майнера через API владельца Нейронета. Майнер считает инференс, сохраняет артефакт локально и возвращает ответ с подписанной распиской. Цепи это пока не касается вообще, и пользователь ждёт только сам инференс.

Шаг 2: агрегация коммитов​

Артефакты коммитятся в два слоя, чтобы стоимость записи в цепь не росла вместе с трафиком.

Майнер собирает артефакты за окно (порядка 5 000 запросов за 30 минут) и строит над ними дерево Меркла, по листу на артефакт. Владельцу Нейронета он отправляет вне цепи только полученный корень пачки. Владелец собирает корни пачек со всех своих майнеров (в референсном расчёте их 200) и строит второе дерево уже над этими корнями.

Дальше одна транзакция отправляет агрегированный корень за весь Нейронет. Она весит около 200 байт и покрывает миллион запросов, то есть примерно 0,0002 байта состояния цепи на запрос. При этом любой отдельный артефакт по-прежнему доказывается против неё путём Меркла.

Шаг 3: отбор проверяемого​

Отбор выводится из проверяемой случайной функции по хэшу блока и идентификатору запроса. VRF решает две вещи: какие запросы попадут под проверку (около 7% трафика) и какому майнеру из той же задачи достанется каждый из них.

Поскольку отбор - функция от состояния цепи, а не чей-то выбор, никто не может подвести проверку к дружественному проверяющему или увести её от выдуманного ответа.

Шаг 4: пересчёт​

Назначенный майнер просит у исполнителя артефакт, сверяет путь Меркла, чтобы убедиться, что именно этот артефакт был закоммичен в цепь, и воспроизводит вычисление. Пересчёт намеренно частичный, и его форма зависит от класса модели.

Для языковой модели проверяющий делает только prefill: один прямой проход по входу, который даёт логиты первого сгенерированного токена, и сравнивает их с артефактом по расстоянию L2. Для ответа в 500 токенов это один проход из 500, примерно 0,2% исходной работы.

Для диффузионной модели проверяющий заново запускает тот же промпт с тем же сидом, но останавливается рано, например после 5 шагов из 50, и сравнивает хэш своего латента с закоммиченным. Это стоит около 10% полной генерации. С видео так же, по одному кадру или шагу, от 3% до 10%.

Энкодеры пересчитываются целиком, а хэши выходов сравниваются напрямую. Относительная стоимость 100%, но такие модели достаточно малы, чтобы в абсолютных числах это было дёшево.

Суммарные накладные расходы - это доля проверок, умноженная на стоимость пересчёта. Для языковых моделей 7% от 0,2%, то есть около 0,014% GPU-времени сети. Для диффузии 7% от 10%, около 0,7%.

Шаг 5: запись вердикта​

Проверяющий отправляет вердикт в цепь, примерно 100 байт, и только по отобранной доле запросов.

Проверять - обязанность, а не опция. В конце эпохи рантайм сверяет каждого майнера с назначениями, которые ему выдал VRF. Если майнеру назначили 23 проверки и он сдал 23 вердикта, награда выплачивается полностью. Пропущенные вердикты режут её пропорционально. Майнер, который забил на проверки, не получает денег и за собственную работу.

Теневые перепроверки​

Майнер, способный отличить проверочный запрос от настоящего, мог бы вести себя честно только под наблюдением. AETRON закрывает это теневыми перепроверками: на перепроверку идут реальные пользовательские запросы, неотличимые от обычного трафика. Майнер не знает, какой из его ответов будут проверять, поэтому единственная безопасная стратегия - быть честным на каждом запросе.

Кворум вердикта​

Отдельные проверки собираются в кворум, чтобы одно неудачное сравнение не решало судьбу майнера и чтобы маленькая группа не могла тихо протаскивать своих.

Проверяемое задание финализируется по K = 20 проверяющим с порогом мошенничества T = 10. Воздержавшиеся (например, те, кто не смог получить артефакт) полностью исключаются из знаменателя, поэтому воздержание не является ни вотумом доверия, ни обвинением. Для финализации нужно 20 голосов без воздержавшихся.

Вердикт напрямую следует из числа голосов за мошенничество:

Голосов за мошенничество из 20ВердиктЧто происходит
10 и большеМошенничествоШтраф исполнителю
от 1 до 9ПодозрительноВыплаты по заданию нет, майнер остаётся под наблюдением
0ЧестноРабота зачтена и приносит эмиссию

Полоса «подозрительно» здесь важна. Одного несогласного проверяющего мало, чтобы наказать майнера, и это защищает честных от единичного плохого сравнения или от проверяющего-вредителя. Но и чистым задание при этом не проходит.

Финализация беспермиссионная: запустить её может кто угодно, как только голоса собраны, поэтому майнер не может оттянуть неудобный вердикт бездействием.

Репликация и арбитраж​

За случай, когда проверяющие не сходятся друг с другом или с исполнителем, отвечают два отдельных механизма.

Кворум пересчёта требует, чтобы минимум M = 3 независимо закоммиченных хэша пересчёта сошлись на одном значении, прежде чем вердикт по заданию считается реплицированным. Один проверяющий, сообщающий свой результат сам себе, не доказывает ничего, поэтому конструкция требует нескольких слепых коммитов, попавших в один ответ. Если до дедлайна они не сошлись, задание финализируется без зачёта полезной работы, а не оценивается по одному неподтверждённому мнению.

Арбитраж разбирает прямой конфликт. Если проверяющий заявил расхождение, протокол ещё не знает, кто врёт: исполнитель мог подменить модель, а проверяющий мог выдвинуть ложное обвинение. Тот же запрос пересчитывает третий майнер. Если его результат сходится с исполнителем, виноват обвинитель. Если с обвинителем, то исполнитель. Решает большинство, а сторона, оказавшаяся не в масть, получает штраф, включая случай, когда это обвинитель. Ложное обвинение стоит денег, и это не даёт арбитражу превратиться в бесплатное оружие против конкурентов.

Допуск между разным железом​

Майнеры работают на разном железе, поэтому сравнение идёт по уровню, заданному для задачи: побитовое совпадение внутри одного класса железа (уровень A) или откалиброванный допуск между архитектурами (уровень B). Пороги уровня B выводятся из измеренных различий между честными машинами, и именно поэтому описанный выше зазор между честным разбросом и подменой модели - несущее допущение всей конструкции.

Как работают уровни, разобрано в статье Гетерогенный майнинг, а механизм целиком - в разделе Proof of Intelligence.