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

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

Любая схема проверки обязана ответить на неудобный вопрос: что мешает майнеру аккуратно и честно считать те запросы, про которые он знает, что их проверяют, и гнать дешёвый мусор на всех остальных. Теневые перепроверки - ответ AETRON. На проверку идут обычные пользовательские запросы, поэтому никакого состояния «меня сейчас проверяют» майнер обнаружить не может и никакого момента для показательной честности у него нет.

Какую атаку это закрывает​

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

Работает эта атака только в том случае, если майнер способен отличить один вид трафика от другого. Вся суть в этом. Система проверки, построенная вокруг отдельного эндпоинта, фиксированного тестового набора или узнаваемого формата промптов, вручает атакующему ровно такую способность.

Тестовые промпты видно за версту​

Опасение не теоретическое. Во внутреннем тесте реалистичные пользовательские запросы сравнили с формальными запросами валидаторского вида из стандартного набора шаблонов. Две группы разошлись по совершенно поверхностным признакам: заглавные буквы, формальная лексика против разговорной, пунктуация, наличие чисел в тексте.

Классификатор в несколько строк, собранный на этих признаках, правильно разметил все запросы в обеих выборках. Никакого машинного обучения, никаких усилий, никаких затрат для атакующего.

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

Как работают теневые перепроверки​

Отдельного канала проверки нет. Проверка едет на реальном трафике.

  1. Пользовательский запрос приходит на слой маршрутизации.
  2. С вероятностью r слой маршрутизации помечает его как кандидата на теневую перепроверку. Значение по умолчанию в AETRON - 7%.
  3. Запрос уходит майнеру как обычный запрос. Ничто в нём не говорит, что он помечен.
  4. Майнер генерирует ответ и артефакт проверки и возвращает оба.
  5. Слой маршрутизации отдаёт ответ пользователю ровно так же, как отдал бы в любом другом случае.
  6. Если запрос был помечен, другой майнер той же задачи независимо пересчитывает его в каноническом режиме и сравнивает свой результат с закоммиченным хэшем артефакта.

Расхождение уходит в тот же путь разбора мошенничества, который описан в статье Проверка инференса: статистическая оценка, арбитраж третьим майнером и штраф при подтверждённом вердикте.

Решение о пометке принимается уже после того, как запрос существует, в компоненте, куда у майнера нет доступа. Майнер в обоих случаях видит один и тот же запрос.

Почему это неотличимо​

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

Это проверяли состязательно. Атакующей модели дали поток запросов и позволили отделять перепроверяемые от обычных по длине, энтропии символов, длине слов и доле пунктуации. Ни один признак не развёл группы сильнее, чем обычный разброс внутри одного источника трафика, а классификатор атакующего в итоге оказался хуже угадывания.

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

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

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

Именно из-за этого зазора между «иногда» и «как бизнес» теневые перепроверки идут в паре со стейком. Штраф рассчитан так, чтобы потеря на одном подтверждённом случае мошенничества перевешивала заработок за те запросы, которые нужны для поимки. Это убирает выгоду и из коротких всплесков обмана, и из систематического. Пальета применяет немедленный штраф по одному подтверждённому вердикту, а также реагирует на повторные пометки внутри скользящего окна в 100 запросов.

Стоимость​

Майнер за теневые перепроверки не платит ничего: лишней работы он не делает и лишнего сигнала не получает. Стоимость ложится на проверяющую сторону: при доле 7% сеть делает 7% дополнительных проходов проверки, а для языковых моделей эти проходы состоят только из prefill, то есть стоят малую долю от генерации полного ответа. Разбивка по классам моделей есть в статье Проверка инференса, а про сохранение корректности сравнений на разном железе читайте в Гетерогенном майнинге.

Приватность​

Теневые перепроверки работают на реальных пользовательских запросах, поэтому на них распространяются те же правила, что и на весь путь запроса:

  • Слой маршрутизации - единственный компонент, который знает, какой запрос помечен и какому майнеру он ушёл. Наружу это соответствие не отдаётся.
  • Перепроверяющий майнер выбирается среди других майнеров той же задачи, и запрос доходит до него через тот же слой маршрутизации, а не через третью сторону.
  • Неотобранные запросы после обслуживания удаляются. Хранятся только кандидаты на теневую перепроверку, и только до окончания проверки.

Что путь запроса раскрывает, а что нет, разобрано в статье Приватность.

Маленькие пулы: один или два майнера​

Пиринговой теневой перепроверке нужен кто-то, кто перепроверит. В задаче с одним или двумя майнерами такого в осмысленном виде нет.

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

Протокол не делает вид, что маленький случай работает, а переключает режим проверки по размеру пула:

Майнеров в задачеРежимПроверка
1 или 2SmallPoolВладелец Нейронета обязан прогонять эталонные зонды с фиксированным интервалом (около суток). Без свежего вердикта владельца задача не получает эмиссию. Теневые перепроверки инициирует владелец.
3 и большеPeerVerifiedПолноценные пиринговые теневые перепроверки со случайным выбором проверяющих и кросс-майнерской статистической оценкой, автоматически.

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

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