Проблема детерминизма в LLM
В индустрии генеративного ИИ существует фундаментальная проблема: при пакетной обработке (batching) запросов результат одного запроса может меняться в зависимости от других запросов в батче. Это происходит из-за особенностей работы с памятью (KV-cache) и плавающей запятой. Существующие решения, такие как vLLM Batch-Invariant или изоляция префилла (CoRun), платят за это высокую цену: либо они ограничивают каждый оператор, либо жертвуют вычислительной мощностью префилла и добавляют лишнее заполнение (padding) при декодировании.
Решение BlockLock: Фиксация геометрии
Команда авторов (Xiuyuan Qi, Pedro Reviriego, Javier Conde, Shanshan Liu) предложила метод BlockLock, который сохраняет преимущества пакетного префилла, но «блокирует» числовой путь защищенного запроса. Метод фиксирует геометрию, с которой работает запрос, используя два режима:
- BlockLock-Rows: Использует строки фиксированной ширины, сохраняя пакетное декодирование для всех запросов.
- BlockLock-Pack: Использует упаковку, привязанную к терминалу, с изолированным фиктивным сегментом, извлекая состояние KV только для целевого декодирования.
Оба режима гарантируют битовую идентичность вывода целевой последовательности даже при изменении сопровождающих запросов, что критично для отладки, аудита и воспроизводимости экспериментов.
Результаты бенчмарков
Эксперименты проводились на пяти плотных моделях (Qwen3-8B/14B, Llama-3.1-8B-Instruct, Gemma-3-4B/12B-IT) в трех конфигурациях GPU (NVIDIA A6000, A100, H100). Оценка проводилась на наборах tinyBenchmarks и BFCL. Результаты показывают, что BlockLock не требует кастомных ядер (custom kernels), в отличие от аналогов, и накладывает ограничения только на защищенные запросы.
| Метрика | Сравнение с vLLM Batch-Invariant | Примечание |
|---|---|---|
| Задержка (Latency) | Снижение на 53.5–55.0% | При равном объеме выполненной работы |
| Пропускная способность (Throughput) | Рост на 115.2–122.2% | Значительное ускорение обработки |
| Точность вывода | Битовая идентичность (Top20-logits) | Сохранено в обоих режимах (Rows/Pack) |
Значение для индустрии
BlockLock решает дилемму «скорость против воспроизводимости». Ранее для получения детерминированных результатов приходилось жертвовать производительностью или усложнять инфраструктуру. Новый подход позволяет использовать стандартные пакетные вычисления для большинства запросов, применяя строгий контроль только там, где это необходимо. Это открывает путь к созданию надежных систем LLM-as-a-Service, где клиенты могут быть уверены в стабильности ответов независимо от нагрузки на сервер.
Источник: arXiv cs.AI ↗
