Что такое однобитные и тернарные нейросети. искусственный интеллект.. искусственный интеллект. искуственный интеллект.. искусственный интеллект. искуственный интеллект. искуственный разум.
Что такое однобитные и тернарные нейросети - 1

Итак, только вычислительная часть обучения пятой версии ChatGPT обошлась в $500 миллионов. А вот уже полные затраты с исследованиями, данными и экспериментальными прогонами – от $1.25 до $2.5 млрд по разным оценкам. И речь пока именно о старте новой линейки, которая релизнулась чуть больше года назад. Далее – сервер с восемью H100 стоит от $270K до $450K, и это не считая сети, охлаждения и инфраструктуры. И это все при том, что 90% параметров большинства нейросетей – числа вроде 0.0003 или -0.0007, которые несут минимум полезной информации, но хранятся как полноценные 16-битные числа с плавающей точкой.

Содержать нейросеть – задачка весьма дорогая. Отсюда и вырос целый класс исследований – как сделать нейросеть, которая думает почти так же хорошо, но весит в 10 раз меньше и не требует GPU за $10K? Однобитные и тернарные сети – один из ответов на этот вопрос. 

Привет, дорогой ХАБР! Сегодня постараемся рассказать, насколько, собственно, реальны однобитные LLM.

А откуда взялась сама идея?

Первые попытки сжать веса до единственного бита датируются аж 2015-2016 годами. Группа из Монреальского университета предложила двоичное соединение (оно же – “BinaryConnect”) – подход, при котором каждый вес принимает только два значения. -1 или +1. 

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

Что такое однобитные и тернарные нейросети - 2

Во время обучения эти числа постепенно корректируются на очень маленькие величины. Микрошаги вроде +0.0003 или -0.0001. Если хранить только -1 или +1, такой шаг просто исчезнет, т.к. 1 + 0.0003 округляется обратно в 1. И именно поэтому точные значения накапливаются отдельно, а для вычислений берется уже округленная версия. 

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

Год спустя команда из Технионского института (Израиль) под руководством Hubara пошла немного дальше. Бинаризовали не только веса, но и активации – промежуточные числа, которые передаются между слоями. Параллельно Rastegari с коллегами в работе XNOR-Net заменили матричное умножение на операцию побитового совпадения (или же “XNOR”, т.е. “eXclusive NOR” – “исключающее НЕ-ИЛИ”) и простой подсчет совпавших битов. Вот, и теоретически это до 58 раз быстрее обычного умножения на специализированном железе.

Тестировали на своих стандартных академических наборах. MNIST – 70 000 изображений рукописных цифр от 0 до 9, самый простой тест для классификации. CIFAR-10 – 60 000 небольших цветных фотографий в 10 категориях. Разные там самолеты, автомобили, птицы, кошки. На этих двух наборах бинарные сети справлялись хорошо. Но с базой изображений, или же ImageNet, с более чем 1.2 миллиона изображений в 1000 категориях, полноценный боевой тест оказался ощутимо хуже. На нем бинарные сети теряли 5-20% точности по сравнению с обычными. И это, к сожалению, ставило серьезный вопрос по их эффективности. 

После чего на несколько лет тема опять ушла в академические исследования.

Собственно, проблема оказалась не в самой идее бинаризации, а в двух вещах. Первая – масштаб. Маленькие сети чувствительны к точности весов, большие – меньше. А вторая – ноль. Нейрон не реагирует на все входные сигналы. Большинство для него просто нерелевантны. Какой-то один распознает горизонтальные линии, другой углы, третий кривые. И каждому важен только узкий набор признаков. Вес 0 – это самый простой способ сказать нейрону, что его такая история не касается.

В бинарной сети {-1, +1} нуля нет. Каждое соединение всегда активно. Либо усиливает, либо гасит. Чтобы нейрон фактически не влиял на результат, приходится компенсировать одни соединения другими. И емкость уходит на имитацию тишины.

Такая вот ситуация.

Когда – три лучше двух

Тернарные веса – {-1, 0, +1} – решают обе проблемы выше. Но, опять же, частично. Ноль позволяет нейрону просто не участвовать в вычислении. Это приближается к тому, как работают разреженные представления – когда большинство нейронов молчат, а активны только те, что отвечают за конкретный признак.

По теории информации три состояния кодируются в log₂(3) ≈ 1.58 бита на параметр. Отсюда и пошло название BitNet b1.58 от Майкрософт.

Математика прямого прохода при тернарных весах упрощается до очень простых сложений. Стандартная операция y = W · x, где умножение матриц на числа с плавающей точкой съедает основную часть вычислений, превращается в сумму входных значений с весом +1 минус сумма с весом -1. Умножения нет вообще. Процессор выполняет это быстрее, тратит меньше энергии и не греется так сильно.

Что такое однобитные и тернарные нейросети - 3

Но есть техническая проблема с обучением. Функция sign(x), которая превращает вес в -1 или +1, не дифференцируема – производная равна нулю почти везде, обратное распространение ошибки через нее не идет. И нашли костыль. В прямом проходе используют настоящую sign(x), в обратном делают вид, что функции нет, и пропускают градиент насквозь. Проще говоря – при обучении притворяемся, что округления не было.

С теорией разобрались. А что получилось реализовать?

На момент написания данной статьи – в этой области всего несколько условных релизов.

Тот самый BitNet b1.58 от Microsoft – максимально зрелое и задокументированное решение. Официальная модель microsoft/bitnet-b1.58-2B-4T вышла в апреле 2025. Скромные, по нынешним меркам,  2.4 миллиарда параметров, обученных на 4 триллионах токенов. Доступна, кстати, на Hugging Face

Для инференса нужен отдельный движок bitnet.cpp – стандартные трансформеры с тернарными весами, увы, работают медленно, без прироста. В мае 2025 добавили CUDA-ядра для GPU, в январе 2026 обновили CPU-ядра с приростом 1.15-2.1× к предыдущей версии.

Архитектуры без матричного умножения – более радикальное направление, чем BitNet. BitNet убирает умножения только из линейных слоев, а механизм внимания все еще считает матрично. Т.е., обычное внимание смотрит на все токены сразу – каждое слово сравнивается с каждым другим. Это, собственно, и есть дорогое матричное умножение.

И тут данный блок заменили на рекуррентный. Модель читает токены по очереди и держит состояние памяти. Все, что было прочитано до этого момента. И никаких сравнений всех со всеми. Ни одного матричного умножения нигде в сети. При обучении экономит до 61% памяти, при инференсе – более 10× против обычного трансформера.

Рабочие модели тоже есть. ridger/MMfreeLM-2.7B – яркий пример. Можно найти на HuggingFace. Но если говорить откровенно, дальние зависимости очень размываются и то, что было 500 токенов назад, теряется. Трансформер с вниманием помнит точнее, конечно же. Так что – до широкого применения не дошло.

Bonsai WebGPU – отдельное семейство тернарных моделей (1.7B, 4B, 8B), которые запускаются прямо в браузере через WebGPU. Никакого сервера и установки не нужно – открыли ссылку, модель загружается локально в вкладку и считается на GPU пользователя. 8B-модель занимает ~1.15 ГБ видеопамяти. После первой загрузки работает оффлайн. Демо доступно на HuggingFace Spaces – webml-community/bonsai-webgpu.

Квантизация готовой модели до 2-3 бит – алгоритмы сжатия QuIP#, AQLM. Без обучения с нуля. Берете уже обученную модель и сжимаете ее веса математическими методами за несколько часов на одной видеокарте.

Т.е., например, ISTA-DASLab/Meta-Llama-3-8B-Instruct-AQLM-PV-2Bit-1×16 – Llama 3 8B в 2 битах, около 4 ГБ (эмбеддинги остаются в полной точности). relaxml/Llama-2-70b-chat-E8P-2Bit – 70B модель в ~17 ГБ вместо 140 ГБ в FP16. Качество хуже INT4, но лучшее среди 2-битных методов – основной смысл в том, чтобы запустить 70B там, куда INT4 физически не влезает. И без $100K на переобучение с нуля.

Но есть одно – НО

Что такое однобитные и тернарные нейросети - 4

Нельзя взять Llama 4, Mistral Large 3 или Qwen3.6 и конвертировать их в BitNet. Это просто не получится без критической потери качества. Модель должна обучаться с нуля с тернарными ограничениями с первого шага, т.е. обучение с учетом квантизации. Суть в том, что модель адаптируется под ограничения весов прямо во время обучения, а не пытается соответствовать им после. 

Паритет с FP16 по качеству достигается только от ≥3B параметров. На моделях меньшего размера разрыв очень ощутим. На бенчмарках типа HellaSwag разница достигает 5-8% в пользу FP16.

Грубо говоря, пока что не более чем экспериментальный статус.

И по GPU. До мая 2025 BitNet на видеокарте работал медленнее FP16, потому что нативных CUDA-ядер не было. Веса приходилось распаковывать обратно в числа с плавающей точкой перед матричным умножением. Сейчас CUDA-ядра есть в репозитории bitnet.cpp, но ни vLLM, ни TensorRT, ни TGI их не поддерживают. Для GPU-деплоя в проде нужны разного рода кастомные решения.

Но, опять же – мы уже давно живем во времени, когда железо пока не успевает за идеями. Коммерческих чипов с нативной тернарной арифметикой нет. Ай-би-эмовский NorthPole – исследовательский прототип, в коммерческое производство не запущен. Нативно поддерживает 2/4/8-битные операции, тернарный формат технически подходит – но когда и выйдет ли в серию, информации нет. Intel актуально работает с Loihi 2 и системой Hala Point на его основе – тернарных весов в нативном виде нет. Groq, Cerebras, SambaNova нативную тернарную арифметику не поддерживают и публично не анонсировали. Все три заточены под FP8/INT8 и работают с обычными форматами квантизации.

Пока что – история с BitNet занимает нишу инструмента для экспериментов с конкретными нишевыми задачами на CPU-железе. Для большинства практических бытовых задач в 2026 году условный Q4_K_M (GGUF) через llama.cpp закрывает вопрос быстрее, дешевле и надежнее.

Вот нам кажется, что следующие 2-3 года будут показательными. Либо кто-то выпустит чип с нативным тернарным блоком и что-то такое пойдет в массы, либо про направление забудут. Хотелось бы, конечно, чтобы все получилось. Экологичнее и экономичнее это все.

Автор: ArthurEx

Источник