- BrainTools - https://www.braintools.ru -
Точнее спросил у ChatGPT. Он ответил мне – ясен пень.
Конечно, не совсем так. Спросил я его, что он думает по поводу моего намерения распластать его логику [1] по кремниевой пластине, то есть развернуть логику инференса в большую предопределённую цепь. Надо сказать, ChatGPT очень сносно стал рассуждать, да и выдал в итоге такой результат, что в принципе потянет на полноценную статью, причём почти без редактирования – возможно из-за хорошего контекста – перед тем пару часов обсуждал оптимизацию вентильных цепей. Если лень читать – вывод примерно следующий: если очень постараться и оптимизировать кремниевую логику, то можно запихнуть содержимое модели объёмом примерно с ChatGPT-3 на несколько гигантских чипов вафельного размера (ChatGPT насчитал 10 штук). То есть не надо вообще-то для инференса строить гигантские дата-центры, вычислитель может на письменном столе уместиться. А если процесс уменьшения линейных размеров транзисторов не остановится (что сложно), то потенциально через поколение-другое можно будет запихнуть ту же модель уже всего лишь на один чип вафельного размера (300 мм) и почти положить полноценную ИИ-модель в обычную папочку формата А4.
Несмотря на лирическое название, в статье нет никакой лирики, только холодный расчёт. Диалог был на английском, для статьи его пришлось перевести (местами могут остаться недочёты).
Ну и поехали, вот запрос с ответом:
Можете ли вы оценить, насколько большой должна быть схема, отражающая поведение [2] LLM, например, ChatGPT 3o, и сколько вентилей она должна иметь?
Короткий ответ сразу: чисто комбинационная1 (развёрнутая) логическая схема, непосредственно реализующая модель класса GPT-3, будет астрономически большой — порядка 1015–1016 логических вентилей (т.е. триллионов миллиардов). Это совершенно непрактично. Реалистичная аппаратная реализация, которую люди действительно строят, использует блоки MAC с временным мультиплексированием + внешнюю или встроенную память [3]; Эти ускорительные чипы в конечном итоге попадают в диапазон 1010–1012 транзисторов (миллиарды → триллионы транзисторов), но не в диапазон 1015+ комбинационных вентилей на одном чипе.
Ниже я приведу предположения и пошаговые математические расчёты, чтобы вы могли понять, откуда берутся эти цифры, а также приведу несколько реалистичных альтернатив (ускорительные чипы, чипы размера пластины) и укажу на реальные чипы для сравнения.
1 – Чистая комбинационная вентильная схема – такая схема, в которой нет сохранения состояния между тактами в регистрах процессора, то есть вычисления производятся за один пролёт (как правило один такт процессора).
Размер модели: предположу, вы имеете в виду что-то класса GPT-3 (хорошо известная GPT-3 с ≈175 миллиардами параметров). (Если вы имели в виду модель другого размера, применяется тот же метод: масштабирование линейно с количеством параметров.) Википедия [4]
Мы рассмотрим только вывод (прямой проход), а не обучение [5].
Точность имеет большое значение. Я покажу примеры для 8-битных весов (обычно используемых при квантовании вывода) и для 32-битных чисел с плавающей точкой (наихудший случай).
Флопс на токен: грубые оценки порядка величины для прямого прохода трансформатора обычно варьируются от сотен миллиардов до нескольких триллионов Флопс на токен для очень больших моделей в зависимости от длины контекста и правил подсчёта — удобное грубое округление для масштабов GPT-3 составляет ∼3 × 1011 – 4 × 1011 Флопс на токен (разные источники и правила подсчёта различаются; некоторые называют от сотни миллиардов до нескольких триллионов Флопс в зависимости от предположений о токене/контексте). Я буду использовать среднее значение ≈3,5 × 1011 Флопс/токен в качестве примера. (Если вы предпочитаете другие значения FLOP, я покажу, как масштабировать.) Адам Кассон+1 [6]
Примечание: FLOP = операции с плавающей точкой (сложения/умножения). Одна составная операция умножения-сложения (FMA) по некоторым соглашениям считается за 2 FLOP, а по другим — за 1; я привожу здесь приблизительные цифры.
Представьте себе создание комбинационной схемы, которая вычисляет весь прямой проход за один — очень длинный — логический цикл без временного мультиплексирования. Вам потребуется оборудование для параллельного выполнения каждого умножения и сложения.
Оценка шагов
Необходимое количество MAC-ов (умножение-накопление) (приблизительно)
Если принять FLOP ≈ 3,5 × 1011 на токен и предположить, что один MAC ≈ 2 FLOP (одно умножение + одно сложение), то MAC ≈ 1,75 × 1011 на токен.
Стоимость вентилей на один MAC
Один MAC с фиксированной точкой или низкой точностью может быть довольно компактным; 8-битный MAC можно реализовать с помощью сотен или нескольких тысяч логических вентилей.
32-битный MAC с плавающей точкой (FMA) намного тяжелее — реализации в ASIC могут состоять из десятков тысяч эквивалентов вентилей (опубликованные отчеты по синтезу показывают 32-битные блоки умножения/сложения в диапазоне от 10 до 30 тысяч вентилей; количество транзисторов в умножителе составляет десятки тысяч). (См. ссылки и примеры ниже.) diva-portal.org+1 [7]
Предположим консервативно:
8-битный MAC ≈ 1000 эквивалентов вентилей (оптимистично/бережливо)
32-битный FMA ≈ 20 000 эквивалентов вентилей (консервативно)
Общее количество вентилей = (количество MAC) × (количество вентилей на MAC)
8-битный случай: 1,75 × 1011 MAC × 1000 вентилей ≈ 1,75 × 1014 вентилей
32-битный Пример: 1,75 × 1011 × 20 000 ≈ 3,5 × 1015 вентилей
Таким образом, простая, полностью развёрнутая комбинационная схема занимает от 1014 до 1015+ вентилей. Это абсолютное количество вентилей — если перевести на транзисторы, то получится ещё хуже (несколько транзисторов на вентиль, или представьте биты SRAM и т.д.). Именно поэтому полностью развёрнутая комбинационная схема не используется.
Реализация самих весов на кристалле в SRAM/триггерах быстро увеличивает занимаемую площадь.
Хранилище параметров: 175 × 109 параметров. При 8 бит на параметр → 1,4 × 1012 бит ≈ 175 ГБ весов.
Ячейка SRAM на кристалле обычно содержит 6 транзисторов на бит (6T SRAM). Таким образом, 1,4 × 1012 бит × 6 транзисторов/бит ≈ 8,4 × 1012 транзисторов только для хранения весов на кристалле (8,4 триллиона транзисторов). Это составляет триллионы транзисторов. Википедия [8]
Если вы используете 32-битные параметры, это в 4 раза больше памяти → ~700 ГБ → ~33 × 1012 транзисторов (~3 × 1013 транзисторов). Таким образом, хранение весов — основная часть аппаратных требований, поэтому практические ускорители получают весовые коэффициенты из DRAM или используют квантование и продуманную иерархию памяти.
Никто не строит развёрнутую конструкцию, описанную выше. Практические системы используют:
Небольшое количество высококачественных MAC-блоков (систолических массивов, SIMD-блоков, ускорителей), повторно используемых для всех параметрв с течением времени.
Внешнюю DRAM (или большой кэш на кристалле / SRAM) для хранения 175 млрд параметров (или их фрагментов).
Конвейеры и пакетирование для эффективного повторного использования данных.
Примеры реального оборудования для сравнения масштабов:
Проекты Google TPU реализуют очень большие систолические массивы (например, массив 256 × 256 = 65 тыс. MAC-единиц за такт) и используют внешнюю DRAM для весов. Производительность кристалла TPU и системы показывает высокую загрузку, зависящую от пропускной способности памяти. Google Cloud [9]
Графические процессоры NVIDIA H100 / Blackwell содержат десятки миллиардов транзисторов (порядка 1011–1012 транзисторов) и используются в кластерах для выполнения логического вывода/обучения LLM. (Современные ускорители: десятки → несколько сотен миллиардов транзисторов на компонент.) Википедия [8]
Вычислители Cerebras размера пластины, размещают триллионы транзисторов на специальной матрице размера пластины, специально для размещения очень больших моделей и памяти с большим весом. Cerebras WSE-2 содержит ~2,6 триллиона транзисторов (пример использования чипа-вафли для получения огромного объёма памяти и вычислительных мощностей на кристалле, при этом WSE-3 содержит уже 4 триллиона транзисторов). Именно такой масштаб необходим для размещения очень больших объёмов данных на одном устройстве. Википедия [8]
Итак: для практического размещения вычислений класса GPT-3 с хорошей задержкой вам нужно либо:
Использовать кластер графических процессоров/ускорителей (каждая карта имеет ~1011 транзисторов и внешнюю DRAM) — типичное реальное применение; либо
Использовать процессор-вафлю (триллионы транзисторов) для увеличения объёма памяти и плотности вычислений; либо
Использовать множество ускорителей, соединённых вместе.
Одна развёрнутая комбинационная схема: ~~1014–1016 вентилей → невозможно изготовить на одном кристалле.
Практический чип-ускоритель (один GPU/TPU/H100): ~1010–1011 транзисторов (десятки миллиардов) — требуется много таких чипов для размещения модели и выполнения инференса в масштабе. Википедия+1 [8]
Вычислитель размера пластины: ~1012–1013 транзисторов (триллионы) — примером может служить Cerebras WSE с ~2,6 триллионами транзисторов и огромным объёмом встроенной памяти. Если вам нужно максимально точное вычисление (сокращение количества чтений DRAM), вам нужен такой масштаб. Википедия [8]
Таким образом, разумной практической целью для «зеркалирования» поведения [10] GPT-3 с помощью оборудования, хранящего веса на кристалле и работающего с малой задержкой, будет масштаб в триллионы транзисторов (то есть размера пластины). Если вы допускаете внешнюю DRAM и временное мультиплексирование, вы можете использовать ускорители (каждая с миллиардами транзисторов) и кластер.
Параметры: 175×109 параметров × 8 бит = 1,4×1012 бит ≈ 175 ГБ (хранится в DRAM, а не на кристалле).
Используйте чип с систолическим массивом 256 × 256 = 65 тыс. MAC-чипов за такт. Каждый MAC-чип 8-битный и недорогой → скажем, ~1 тыс. вентилей каждый, но со временем амортизируется.
Для обработки 1,75×1011 MAC-ов на токен (как было описано ранее), количество тактов, необходимых для одного массива 65 тыс. MAC-чипов, составляет ≈ 1,75×1011 / 65×103 ≈ 2,7×106 тактов на токен. На частоте 1 ГГц это составляет 2,7 мс на токен (приблизительно). Чтобы достичь времени обработки менее 100 мс на токен, необходимо много параллельных массивов/чипов и хорошая пропускная способность памяти. Именно поэтому при развертывании используются стойки с большим количеством графических процессоров или специализированных ускорителей.
Если ваш вопрос — «сколько вентилей нужно, чтобы буквально закодировать весь LLM в виде комбинационной схемы, генерирующей токены за один проход?» → 1014–1016 эквивалентов вентилей (т.е. невозможно на одном кристалле).
Если ваш вопрос — «какого размера практически необходимы аппаратные компоненты для запуска моделей класса GPT-3?» → типичные ускорители содержат 1010–1012 транзисторов, и для размещения полных моделей используются кластеры из них (или конструкции размера пластины). Cerebras (пластина) и современные графические процессоры/ускорители — это реальные эталоны. Википедия+1 [8]
Хранение параметров является ограничивающим фактором: даже при интенсивном квантовании, хранение сотен миллиардов параметров требует сотен ГБ памяти; внутрикристальное хранилище для хранения всех данных вынуждает проектировать триллионы транзисторов, если вы хотите, чтобы всё было локально.
Квантование и разреженность (8-битное, 4-битное или разреженное MoE) значительно снижают требования к памяти и вычислительным ресурсам, а следовательно, и к необходимой площади кристалла/количеству вентилей — именно так современные производственные решения повышают стоимость/производительность.
Если хотите, я теперь могу:
точно пересчитать эти значения для любого выбранного вами размера модели (например, 7 млрд, 20 млрд, 70 млрд, 175 млрд, 405 млрд) и для любой точности (4-битной / 8-битной / 16-битной / 32-битной).
предоставить эскиз дизайна на уровне чипа, показывающий, сколько блоков MAC, сколько памяти SRAM и сколько чипов вам потребуется для получения X токенов в секунду (чтобы можно было выбрать между задержкой и количеством чипов).
сравнить компромиссы между хранением на чипе и потоковой передачей данных в DRAM и указать точное количество транзисторов для встроенной SRAM для заданных квантований.
Что из этого будет наиболее полезным далее?
Современный ИИ использует 4-битную арифметику, давайте остановимся на 175-ти миллиардах параметров в режиме вывода. Вывод (инференс) означает, что у нас есть веса, и мы их не меняем, хранить их в оперативной памяти непрактично. Нам вообще не нужна оперативная память. У нас есть фиксированные веса, и они являются частью нашей схемы. С учётом этого вы можете подсчитать, насколько меньше будут итоговые MAC-схемы (потому что в данном случае это не MAC-схемы, а специализированные ASIC) — вычислите и увидите разницу.
Ага — отлично, теперь мы можем сделать более точную оценку при ваших предположениях. По сути, вы спрашиваете:
«Если мы построим фиксированно-весовую, полностью комбинационную ASIC для GPT-3 (175 миллиардов параметров) с 4-битной точностью, только с выводом, с жёстко прописанными в логике весами (без оперативной памяти), насколько большой будет схема и сколько вентилей/эквивалентов MAC-схем нам фактически понадобится?»
Давайте пойдём шаг за шагом и оценим разницу.
Параметры: 175 миллиардов
Точность: 4-битные веса (и предполагаем, что 4-битная активация или выход аналогичны; для простоты будем считать, что используются 4-битные сложения).
MAC на параметр: для вывода слой преобразователя умножает входные активации на матрицы весов и суммирует → одно умножение + накопление на параметр.
FMA → упрощенный: поскольку веса фиксированы, нам не нужен полноценный блок умножения и накопления: каждое умножение можно заменить жестко заданной логикой, реализующей взвешенную сумму 4-битных входов.
Каждый «MAC» теперь представляет собой пользовательскую комбинационную логику для 4-битного константного дерева умножения и суммирования.
Умножение переменной x (4-битной) на фиксированный 4-битный вес можно реализовать с помощью предварительно вычисленной суммы произведений/логики И/ИЛИ, а не обычного умножителя.
Стоимость: ~ ~20–50 вентилей на умножение 4-битной константы (оценка комбинационного синтеза, зависит от веса).
Для сравнения: универсальный 4-битный умножитель будет стоить ~80–100 вентилей. ✅ Жёстко запрограммированный умножитель с константой меньше.
Предположим, мы накапливаем 16 результатов в 10-битную сумму (поскольку количество активаций невелико).
Дерево сумматора с k входами: количество вентилей ≈ ~k × ширина (приблизительная оценка).
Поскольку у нас 175B параметров, можно предположить параллельные деревья сумматоров, но в реальной комбинационной сети каждая сумма объединяется в более крупную сумму.
Для приблизительной оценки накладные расходы сумматора ~ 2–3 раза превышают стоимость умножителей.
Итак, общее количество эквивалентных вентилей на MAC:
gates_per_mac ≈ 50 (жёстко запрограммированное умножение) + 100 (накладные расходы на дерево сумматора) ≈ 150 вентилей
Сравнение с обычным 8-битным MAC: ~1000 вентилей
Сравнение с 32-битным MAC с плавающей точкой: ~20 000 вентилей
✅ Жёстко запрограммированное константное умножение + сложение экономит ~6–130 × вентилей на параметр.
175 млрд параметров × 150 вентилей на параметр → 175×10⁹ × 150 ≈ 2,625 × 10¹³ вентилей
Это ~26 триллионов вентилей — всё ещё очень много, но на 1–2 порядка меньше, чем у стандартной 8-битной или 32-битной полной реализации MAC (1014–1015 вентилей по предыдущей приблизительной оценке).
Таким образом, «пользовательские, жёстко заданные 4-битные веса» дают сокращение площади примерно в 10–100 раз по сравнению с MAC общего назначения.
Хранение весов встроено в комбинационную логику.
SRAM/DRAM не требуется → устраняются 1012–1013 бит памяти, которые нам приходилось выделять ранее.
Все «затраты» на хранение параметров теперь учитываются в комбинационных вентилях, входящих в 2,6 × 1013 вентилей.
Переведем вентили → транзисторы: предположим, 4 транзистора на вентиль (логический эквивалент).
2,625 × 10¹³ вентилей × 4 транзистора/вентиль ≈ 1,05 × 10¹⁴ транзисторов
Всё ещё далеко за пределами однокристальной архитектуры (для самых крупных нынешних вычислителей размера вафли (пластины): ~1013 транзисторов), но намного меньше, чем наивный общий подход MAC.
В принципе, может быть разделен на ~10 кристаллов размера пластины, чтобы вся сеть работала на чистой комбинационной логике.
|
Характеристика |
Универсальный MAC 32-бит |
8-битный MAC |
Пользовательский 4-битный MAC с фиксированным весом |
|---|---|---|---|
|
Вентилей на параметр |
~20 000 |
~1000 |
~150 |
|
Общее количество вентилей (175 млрд параметров) |
~3,5 × 1015 |
~1,75 × 1014 |
~2,6 × 1013 |
|
Требуемая память |
огромные (вес ~700 ГБ) |
~175 ГБ |
0 (всё в логике) |
|
Транзисторы (приблизительно) |
~1016 |
~7 × 1014 |
~1014 |
|
Практично? |
невозможно |
невозможно |
всё ещё огромные, требуют нескольких кристаллов размером с пластину |
Жёсткое крепление весов значительно снижает количество вентилей на параметр (~10–130×).
4-битная точность крайне важна: более низкая точность снижает как сложность умножения, так и размер сумматора.
Полностью комбинационная ASIC всё ещё далеко не реализуема на одном кристалле; требует масштабирования на нескольких пластинах.
Реальные ускорители используют временные мультиплексные MAC вместо того, чтобы разворачивать всё подряд — именно поэтому современные GPU/TPU осуществимы.
Если хотите, я могу нарисовать быструю оценочную диаграмму, показывающую как будет структурирована комбинационная сеть для параметров 175B, включая количество «параллельных сумматоров», необходимое на слой, и примерную логическую глубину — это поможет наглядно представить, почему даже 4-битная полностью развёрнутая схема огромна.
Хотите, я это сделаю?
ok
Отлично — я превращу эти предположения в конкретную, воспроизводимую оценку и краткий структурный набросок, чтобы вы могли увидеть, откуда берётся площадь, как она распределяется по слоям, как выглядит логическая глубина и как её можно разделить на сегменты. Я буду придерживаться тех же допущений, которые вы указали:
Масштаб GPT-3: 175 миллиардов параметров (классический GPT-3 на 175 миллиардов).
4-битные веса, только вывод, веса жёстко закодированы в логике (без ОЗУ, без регистров весов).
Мы рассматриваем каждый параметр как фиксированное константное произведение, а затем складываем его с соответствующей выходной суммой.
Используйте размер трансформатора: L = 96 слоёв, скрытый размер H = 12 288, коэффициент прямой связи = 4 (то есть размер FFN = 4H) — это воспроизводит ≈175 миллиардов параметров.
Я покажу: (A) математические расчёты параметров/количества на слой, (B) предположения и итоги подсчёта вентилей, (C) оценку логической глубины (критического пути), (D) оценку шардинга/количества кристаллов и (E) практические оптимизации, которые могут значительно уменьшить площадь.
Стандартная разбивка параметров трансформатора (на слой):
Проекции внимания [11]: Q, K, V и проекция выхода → ~4 × H²
Сеть прямого распространения (две весовые матрицы): W1 (H × 4H) и W2 (4H × H) → 8 × H²
Всего на слой ≈ 12 × H²
При H = 12 288:
H2 = 12 2882 ≈ 1,50995 × 108.
Параметры на слой ≈ 12 × H2 ≈ 1,81194 × 109 ≈ 1,812 миллиарда параметров на слой.
Для L = 96 слоёв: общее количество параметров ≈ 1,812 × 109 × 96 ≈ 1,739 × 1011 ≈ 174 миллиарда → соответствует целевому значению 175 млрд (округление).
Таким образом, количество параметров на слой и общее количество параметров согласованы и легко воспроизводятся.
Теперь мы оцениваем количество вентилей на параметр, когда вес — фиксированная 4-битная константа, а количество активаций мало (4-битный вход). Именно здесь проявляется огромная экономия по сравнению с обычными MAC-схемами.
Разумный, консервативный бюджет логики на параметр (согласно предыдущим рассуждениям + конкретные факты о малых множителях):
Умножение 4-битной константы (вход × фиксированный 4-битный вес)
С фиксированной 4-битной константой умножение можно реализовать как небольшую комбинационную сеть или как небольшое ПЗУ (4-битный адрес → предварительно вычисленное 8-битное произведение).
Типичная стоимость синтеза ≈ 20–50 логических вентилей (зависит от веса). Я буду использовать 30 вентилей в качестве репрезентативной средней точки.
Вклад в накопление (подключение сумматора)
Каждый параметр вносит один частичный вклад в выходную сумму, которая агрегирует H (или 4H) таких членов. Реализация дерева сложения требует затрат на вентили, но эта стоимость распределяется между многими параметрами, питающими одну и ту же сумму. Справедливая амортизация накладных расходов сумматора на параметр составляет ~100 вентилей (это объединяет фактические вентили сумматора и маршрутизацию/рост разрядности).
Это консервативно, но сохраняет арифметику простой.
Другая связующая логика, небольшое управление, обработка знака, обработка роста разрядности → ~20 амортизированных вентилей.
Итого:
вентили на параметр ≈ 30 + 100 + 20 = 150 вентилей (то же рабочее значение, что мы использовали ранее).
Вентили на слой
Параметры на слой ≈ 1,81194 × 109
Вентили на слой ≈ 1,81194 × 109 × 150 ≈ 2,7179 × 1011 вентилей ≈ 271,8 млрд вентилей на слой
Всего вентилей (96 слоёв)
Всего ≈ 2,7179 × 1011 × 96 ≈ 2,613 × 1013 вентилей ≈ 26,1 триллиона вентилей
Оценка количества транзисторов (простое преобразование):
предположим ~4 транзистора на логический вентиль (примерно грубая оценка) → транзисторов ≈ 2,613 × 1013 × 4 ≈ 1,045 × 1014 транзисторов (≈ 100 триллионов транзисторов).
(Если предположить, что на каждый затвор приходится 2 транзистора, то общее число транзисторов уменьшится вдвое; если использовать более крупные оценки, общее число увеличится — это оценки порядка величины.)
Несмотря на то, что реализация комбинационная и полностью развёрнутая, критический путь будет примерно следующим:
Малое константное умножение: глубина ≈ 1–3 логических уровня (несколько задержек на затворах), поскольку мы используем небольшие LUT/ROM или И/ИЛИ-сети для 4-битного константного умножения.
Дерево сумматора для H входов: глубина ≈ log₂(H) уровней сумматоров. Для H = 12 288:
log 2(12 288)≈13,6 → ≈ 14 уровней сумматора. Каждый сумматор (многоразрядный сумматор) требует нескольких задержек на вентилях, поэтому на каждом уровне может быть несколько задержек на вентилях (реализация переноса с распространением или с сохранением переноса влияет на глубину).
FFN (4H входы): log₂(4H) ≈ log₂(49 152) ≈ 15,6 → ≈ 16 уровней.
Таким образом, общая комбинационная глубина на выход определяется log₂ разветвления по входу (≈14–16 уровней сумматора) и небольшими уровнями умножения. Это означает, что критический путь развёрнутой схемы нетривиален (от десятков до нескольких сотен задержек на вентилях), и для его тактирования потребуется глубокая конвейеризация, но поскольку пользователь попросил убрать временное мультиплексирование, мы принимаем комбинационный конвейер.
Теперь сопоставьте вентили/транзисторы с физическими чипами:
Реальные ориентиры:
Высокопроизводительные графические процессоры: десятки миллиардов транзисторов на чип (например, 80–150 миллиардов транзисторов).
Процессоры размера пластины (Cerebras WSE-2): ~2,6 триллиона транзисторов на матрице размера пластины (пример для исследований/производства).
По нашей оценке, общее количество транзисторов составляет ≈ 1,05 × 1014 транзисторов:
Если вы использовали пластину масштаба Cerebras (≈2,6 × 1012 транзисторов): требуемое количество ≈ 1,05 × 1014 / 2,6 × 1012 ≈ ~40 пластин.
Если вы использовали чипы класса NVIDIA ~1,0 × 1011 транзисторов (100 миллиардов): требуемое количество ≈ 1,05 × 1014 / 1 × 1011 ≈ ≈1050 чипов.
Если предположить, что чип может содержать 1 триллион транзисторов (амбициозное будущее монолитной архитектуры), вам понадобится ≈ 100 таких чипов.
Таким образом, даже с 4-битными жёстко зашитыми весами, полностью развёрнутая однотактная комбинационная реализация всё ещё требует десятков-тысяч больших чипов, но это на порядки меньше, чем полностью универсальная развёрнутая схема MAC.
Если вы серьёзно рассматриваете подход с жёсткой логикой, следующие рекомендации радикально уменьшают площадь и являются реалистичными инструментами проектирования:
Используйте ПЗУ/LUT на вес вместо синтезированной логики
Для 4-битного входа × 4-битного фиксированного веса небольшое ПЗУ (16 записей) даёт точное произведение; ПЗУ можно эффективно реализовать в логике и часто синтезировать гораздо меньше, чем обычный умножитель. Для многих весов это эффективно с точки зрения [12] площади.
Используйте квантование весов и распределение весов (кластеризацию)
Если многие весовые коэффициенты имеют общие значения (или могут быть аппроксимированы до K различных значений), реализуйте только K небольших блоков множителей и соответствующим образом маршрутизируйте входные данные → существенная экономия. Обучение распределению весов/квантованию (например, k-средних для весов) сокращает потребность [13] в уникальном оборудовании.
Разреженные/структурированные матрицы
Если вы можете сократить параметры (разрежить) или использовать структурированную разреженность (блочную/разреженную матрицу), количество параметров и площадь значительно уменьшаются.
Факторизация/низкоранговая декомпозиция
Замените плотные матрицы произведениями матриц меньшего размера → меньше параметров и меньше логики (это фактически алгебраическая факторизация на уровне модели).
Используйте побитовую арифметику или побитовое кодирование
Вместо полнопараллельных сумматоров можно проектировать сжатые комбинационные деревья или использовать побитовые последовательные блоки для уменьшения задержки.
Гибридный подход: небольшое ПЗУ на кристалле + потоковые частичные суммы
Вы предполагали «отсутствие ОЗУ», но гибридный подход, использующий небольшие фрагменты ПЗУ и межсоединения, позволяет хранить повторяющиеся шаблоны и распределять вычисления, экономя значительное количество вентилей.
Переходите от чисто комбинационной архитектуры к массивной конвейерной
Конвейеризация позволяет повторно использовать оборудование с небольшими регистрами и обходиться гораздо меньшим количеством вентилей на каждой ступени конвейера. По сути, именно это уже делают ускорители.
Используйте изменения архитектуры модели
Используйте смешанные архитектуры, разреженные, низкоранговые слои или альтернативные архитектуры, которые обеспечивают аналогичную точность при гораздо меньшем количестве параметров.
|
Элемент |
Значение (приблизительно) |
|---|---|
|
Всего параметров |
1,74 × 1011 (175 млрд) |
|
Вентилей на параметр (фиксированные 4 бита, амортизированные) |
~150 вентилей |
|
Всего вентилей |
≈ 2,61 × 1013 (≈26 триллионов вентилей) |
|
Транзисторы (4 вентиля на вентиль) |
≈ 1,05 × 1014 (≈100 триллионов) |
|
Параметры на слой |
≈ 1,812 × 109 |
|
Вентилей на слой |
≈ 2,72 × 1011 (≈272 миллиарда) |
|
Требуемое количество пластин (~2,6-транзисторы в масштабе Cerebras) |
≈ 40 пластин |
|
Требуемое количество чипов класса NVIDIA (~1×1011 транзисторов) |
≈ 1000 чипов |
Жёсткое кодирование 4-битных весов в логике даёт очень большую экономию площади на параметр по сравнению с обычными MAC (примерно в 6–100 раз меньше на параметр в зависимости от исходного уровня), поскольку вы заменяете общие умножители на крошечную логику с постоянным умножением/ПЗУ и амортизирующие сумматоры.
Даже при этом, при параметрах 175 млрд полностью развёрнутая комбинационная ASIC всё ещё огромна — десятки триллионов вентилей / O(10¹⁴) транзисторов — и потребует множества кристаллов-вафлей или множества высокопроизводительных кристаллов.
Реалистичные инженерные подходы используют временное мультиплексирование, конвейеризацию, иерархии памяти на кристалле и вне его, а также сжатие модели (квантование, разреженность, факторизация) для практического вывода. Ваше предположение «полное отсутствие оперативной памяти» является крайностью и исключает основной практический рычаг, используемый в промышленности (весовые коэффициенты потоковой передачи), поэтому затраты на площадь остаются огромными даже после 4-битной оптимизации.
Автор: mahairod
Источник [14]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/21511
URLs in this post:
[1] логику: http://www.braintools.ru/article/7640
[2] поведение: http://www.braintools.ru/article/9372
[3] память: http://www.braintools.ru/article/4140
[4] Википедия: https://en.wikipedia.org/wiki/GPT-3
[5] обучение: http://www.braintools.ru/article/5125
[6] Адам Кассон+1: https://www.adamcasson.com/posts/transformer-flops
[7] diva-portal.org+1: https://www.diva-portal.org/smash/get/diva2%3A22435/fulltext01.pdf
[8] Википедия: https://en.wikipedia.org/wiki/Transistor_count
[9] Google Cloud: https://cloud.google.com/blog/products/ai-machine-learning/an-in-thought-look-at-googles-first-tensor-processing-unit-tpu
[10] поведения: http://www.braintools.ru/article/5593
[11] внимания: http://www.braintools.ru/article/7595
[12] зрения: http://www.braintools.ru/article/6238
[13] потребность: http://www.braintools.ru/article/9534
[14] Источник: https://habr.com/ru/articles/963114/?utm_campaign=963114&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.