Разработка чипов с нуля – Райнер Поуп

Dwarkesh Patel22 мая 202664 6242 53712 мин чтения25 мая, 21:21

Коротко

Райнер Поп, CEO чип-стартапа Maddox, проводит мастер-класс по проектированию AI-чипов снизу вверх: от логических вентилей до систолических матриц. Базовый примитив всех AI-вычислений — multiply-accumulate (MAC), и он естественен потому, что напрямую соответствует внутреннему циклу матричного умножения, а число полных сумматоров масштабируется как P×Q. Главный скрытый налог в любом процессоре — это коммуникация между регистровым файлом и ALU через мультиплексоры: в простом CUDA-ядре 78% площади уходит на пересылку данных, а не на сами вычисления. Тензорные ядра и систолические массивы решают это, поднимая гранулярность операции на уровень выше во вложенном цикле, чтобы амортизировать стоимость доступа к регистрам и удерживать веса локально. FPGA медленнее ASIC примерно в 10 раз, потому что look-up-таблица на 4 входа занимает ~32 вентиля вместо 3, а CPU тратит огромную площадь на branch predictors и кэши — то, чего у GPU/TPU практически нет.

Главный тезис

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

Ключевые идеи

  • 0:52Multiply-accumulate выбран базовым примитивом, потому что это ровно то, что происходит в внутреннем цикле output[i][k] += input[i][j] * input[j][k] матричного умножения
  • В аккумуляторе точность всегда выше, чем в множителе: ошибки накапливаются, поэтому 4-битное умножение пары даёт 8-битное сложение
  • 10:21 — Стандартная схема для эффективного умножения матрицы — dada multiplier на полных сумматорах
  • 11:32 — Число полных сумматоров в умножителе P×Q ровно равно произведению разрядностей входов, что и делает MAC естественным аппаратным примитивом
  • 15:52Квадратичное масштабирование по разрядности: FP4 даёт не вдвое, а почти вчетверо больше FLOPS относительно FP8, и это единственная причина, почему низкоточная арифметика так выгодна
  • 18:21 — Стоимость N-входового мультиплексора на P-битах — это N×P вентилей, и эта пересылка повторяется на каждый из трёх входов MAC
  • 25:06 — В классическом CUDA-ядре 78% площади уходит на чтение/запись регистрового файла, а не на саму логику умножения
  • 26:12Идея систолического массива — вшить в железо два уровня цикла вверх, чтобы амортизировать налог на коммуникацию
  • 32:44 — В систолической матрице веса хранятся локально в самих регистрах рядом с логикой, и пропускаются через вектор за вектором
  • 33:43 — Веса вкатываются медленно сверху, по одной строке за цикл, чтобы ограничить требуемую пропускную способность регистрового файла величиной X, а не X×Y
  • 39:06Тактовая частота определяется длиной самой длинной комбинационной цепи между двумя регистрами; ускорение достигается вставкой pipeline-регистров посередине
  • 45:35 — Два чипа с одного техпроцесса TSMC могут иметь разные частоты из-за того, насколько успешно были устранены критические пути
  • Бизнес-кейс FPGA против ASIC: первый чип FPGA — $10K, первый ASIC — $30M на tape-out, поэтому FPGA выбирают когда логику нужно часто менять
  • 57:21Look-up table на 4 входа/1 выход хранит 16 бит и реализует любую булеву функцию — это и есть программируемый вентиль в FPGA
  • 1:02:21 — FPGA медленнее ASIC примерно в 10 раз, потому что простой 4-входовый AND требует ~32 вентилей LUT вместо 3 вентилей в ASIC
  • 1:04:55Недетерминизм CPU идёт от кэша L1: попадание зависит от истории, поэтому реалтайм-системы используют scratchpad (как в TPU) вместо кэша
  • 1:09:26 — Огромная доля площади CPU — это branch predictors, которых нет в GPU/TPU и которые объясняют, почему у CPU так мало ядер
  • 1:18:04 — TPU выбирает малое число больших систолических матриц, GPU — много мелких SM; TPU выигрывает в энергоэффективности при чисто матричных нагрузках, GPU — в гибкости

Почему это важно

Понимание этих компромиссов объясняет, почему NVIDIA, Google (TPU), AMD и стартапы вроде Maddox конкурируют не за «больше транзисторов», а за лучшее отношение compute/communication на каждом уровне иерархии — от выбора числового формата до топологии чипа. От этого зависит, кто сможет дешевле обслуживать инференс LLM в эпоху, когда дата-центры стоят десятки миллиардов, а энергопотребление становится физическим ограничителем. Cruzo, NVIDIA с NV Sentinel, Jane Street с FPGA для HFT — все они в разных нишах эксплуатируют одни и те же принципы балансировки compute и communication. Кто лучше всех оптимизирует площадь под matrix unit относительно register file, тот выигрывает экономику AI-обслуживания.

Идеи

  • 4-битные числа можно паковать по два в одну 8-битную ячейку — это даёт бесплатное удвоение пропускной способности шины памяти
  • Заявленный NVIDIA выигрыш FP4/FP8 (×2 или ×3) на самом деле должен быть ×4 из-за квадратичной зависимости; «×2» — это просто способ нормировать площадь по семейству форматов
  • Чип синхронизируется глобальным тактом — это противоположность асинхронной модели типа Factorio, где «готово — забирай»
  • Маржа клок-цикла в стандартном дизайне — около 25% от такта, чтобы вероятность пропустить такт была пренебрежимо мала
  • Скорость такта в чипе можно нарастить почти как угодно вставкой pipeline-регистров — но почти вся площадь уйдёт в эти регистры, и пропускная способность упадёт
  • Цикл с накопителем (running sum) — самое сложное место для pipelining: нужно разбивать на чётную и нечётную суммы
  • Граница SRAM-кэш vs scratchpad — это граница между «железо решает, есть ли данные» и «компилятор знает, есть ли данные»
  • TPU использует scratchpad именно для того, чтобы программисту был доступен детерминированный latency — нет промахов кэша
  • GPU — это, по сути, много маленьких TPU, выложенных тайлами, со своими регистрами и warp-планировщиками
  • Большой систолический массив лучше амортизирует регистровый файл, чем много маленьких — но требует гонять данные через две длинных полосы векторных юнитов
  • Перенос данных в GPU между vector и matrix unit идёт через ~16 линий вместо 2, и в нём пропускная способность выше, но площадь дороже
  • Brain отличается от чипа неструктурированной разреженностью соединений нейронов — чип эксплуатирует структурную регулярность
  • Память и compute в мозге физически слиты — но это не такое уж преимущество над чипом, как кажется
  • Большая часть энергии в чипе тратится на переключение бит из 0 в 1 и обратно (dynamic/switching power), а не на статическое удержание
  • Если бы GPU работал на килогерцах вместо гигагерц — он был бы в 1000 раз энергоэффективнее, но и в 1000 раз медленнее, и проиграл бы экономику batch-обработки
  • Brain выигрывает в энергии не за счёт другого принципа, а за счёт того, что batch равен 1 — а GPU обслуживает batch=1000
  • FPGA полезен там, где детерминированный latency важнее throughput — например, в HFT у Jane Street
  • CPU существуют с детерминированным latency (Groq, ядро TPU), просто они «непривлекательны на рынке» — поэтому их почти не делают
  • Современные GPU/TPU/FPGA не очень похожи на классический фон-неймановский компьютер, но CPU всё ещё похож
  • На CPU всё равно есть ~1000-кратный параллелизм (100 ядер × 16-широкие векторы) — просто это незаметно из-за модели программирования
  • Внутри ядра CPU большая часть площади — это регистровые файлы и branch predictors, а не ALU
  • Maddox разрабатывает «делимый систолический массив» (slicable systolic array), который можно использовать и как большую, и как несколько маленьких матриц — попытка взять лучшее из TPU и GPU
  • Cruzo попал в Gold-tier semianalysis ClusterMAX, потому что заменяет нерабочий GPU-нод за <10 минут через предквалифицированные VM
  • Tensor cores возникли не «потому что AI», а потому что в старых CUDA-ядрах 78% площади уходило на коммуникацию вместо вычислений — это была инженерная необходимость
  • Граница allows для «сколько R-файла vs сколько MXU» — главное архитектурное решение чипа
  • Между двумя clock-доменами реально приходится считать вероятность сбоя — там есть метастабильность
  • TSMC PDK задаёт нижнюю границу разумного клок-цикла: дальше дробить уже бессмысленно, потому что и так помещается в один такт

Инсайты

  • Стоимость коммуникации, а не вычисления, доминирует на всех уровнях абстракции — от регистров до межсокетных шин; это сквозной принцип, который повторяется в виде «увеличь batch», «увеличь матрицу», «увеличь точность аккумулятора»
  • Квадратичный выигрыш по разрядности — фундаментальная причина, почему AI экономически работает на низкой точности, и почему любой переход на меньший формат даёт больше, чем кажется по линейной экстраполяции
  • Архитектурная иерархия — это иерархия амортизации: каждый уровень добавляется, чтобы амортизировать налог предыдущего уровня (MAC амортизирует gate, систолический массив амортизирует MAC, batch амортизирует систолический массив, datacenter амортизирует чип)
  • Pipelining — это размен latency на throughput, тот же принцип, что batch size в LLM-инференсе на уровне приложения
  • FPGA — это эмуляция ASIC-программной модели в перепрограммируемом железе, и налог на универсальность составляет ~10× по площади/энергии
  • CPU оптимизирован под предсказание будущего (branch prediction, кэш), а GPU/TPU — под параллельную обработку известного потока, поэтому архитектуры расходятся настолько сильно
  • Детерминизм и производительность — противоположные оптимизации: можно получить либо предсказуемый latency, либо высокий throughput, и рынок почти всегда выбирает второе
  • Энергопотребление чипа = частота × площадь переключения — поэтому при фиксированной задаче медленнее работающий чип всегда энергоэффективнее, но проигрывает в экономике обслуживания
  • Brain не «эффективнее» чипа принципиально — он просто работает с batch=1 на низкой частоте; те же законы dynamic power применимы и к нему
  • Архитектура чипа — это серия решений о размере: каждый компромисс сводится к «какой процент площади отдать на что», а не к «делать или не делать»

Цитаты

«to make sure that no step is too long, so the whole cycle of the clock of the whole chip will not be longer than necessary» — 43:28 Чтобы ни один шаг не был слишком длинным и весь тактовый цикл всего чипа не оказался длиннее необходимого

«almost the entire cost, such as 78%, belongs to the read and save of the register file» — 25:06 Почти вся стоимость, около 78%, приходится на чтение и запись регистрового файла

«square scaling with a width bit, which is very effective and is the only reason for which arithmetic low precision worked so well in neural networks» — 15:56 Квадратичное масштабирование по разрядности — это единственная причина, почему арифметика низкой точности так хорошо сработала в нейросетях

«first FPJ chip costs 10 thousand dollars, while the first ASIC chip costs 30 million dollars» Первый FPGA-чип стоит 10 тысяч долларов, а первый ASIC — 30 миллионов

«idea of the systolic table is to go through two levels of the loop up and build the entire loop into the equipment» — 26:12 Идея систолического массива — подняться на два уровня цикла вверх и встроить весь цикл в железо

«if you have a small party size, then every user can get their e. Kolejny token bardzo szybko, ale całkowita liczba tokenów» — 50:20 Если размер батча маленький — каждый пользователь получает следующий токен очень быстро, но общее число токенов в час будет ниже

«There are some strange exceptions to this. There are transitions between the clock domains, where you go from one clock to another and then you actually have to ask about this probability» — 42:41 Есть странные исключения — переходы между тактовыми доменами, где приходится реально считать вероятность сбоя

«if you look at what happens during the multiplication of the matrix, well, what is the multiplication of the matrix in a very short time, it is, well, well, it is the For-Nad-I-In-Nad-J loop» — 1:56 Если посмотреть, что происходит во время матричного умножения — это просто вложенный цикл по i, j, k

«It is also known as Compressor 3 to 2, because it collects 3 input bits and generates 2 output bits» — 7:08 Это также известно как «компрессор 3-в-2» — берёт 3 входных бита, выдаёт 2 выходных

«Cores are just much bigger and more complicated» — 1:08:37 Ядра просто гораздо больше и сложнее

«whole large area in the processor, which is ee just a whole lot of predictors that say ee when will be my next branch» — 1:09:26 Огромная область в процессоре — это просто куча предикторов, говорящих, где будет следующее ветвление

«If you never use RAM, then practically all programs would work 100 times slower» — 1:05:29 Если бы кэш никогда не использовался, программы работали бы в 100 раз медленнее

«It would be like, or even bigger, you should get even faster than you could think otherwise» — 15:21 Оно должно быть даже больше — вы получите быстрее, чем могли бы подумать

«in standard design of installed systems, it is margined so that there is a probability, but this is like many standard deviations» — 42:22 В стандартном дизайне закладывается маржа — вероятность сбоя есть, но это много стандартных отклонений

«GPU has many small TPUs arranged in tiles as a whole» — 1:17:15 GPU — это много маленьких TPU, выложенных тайлами

Факты

  • Maddox — стартап, проектирующий AI-чипы; Райнер Поп — CEO, ведущий подкаста выступает ангелом-инвестором
  • В классическом CUDA-ядре доля площади на пересылку данных регистрового файла — 78%
  • В систолическом массиве число полных сумматоров равно произведению разрядностей P×Q входных операндов
  • Стоимость N-входового мультиплексора на P битах — N×P вентилей
  • LUT на 4 входа в FPGA реализует любую булеву функцию через 16 битов конфигурации
  • FPGA медленнее ASIC примерно в 10 раз по площади/энергии
  • Стоимость первого FPGA — $10 000, первого ASIC tape-out — $30 млн
  • Старые TPU использовали систолические матрицы размером 128×128
  • На CPU параллелизм ~1000-кратный: ~100 ядер × ~16-широкие векторные юниты
  • В чипе ~100 миллиардов транзисторов
  • Маржа на клок-цикл — около 25% от такта в типичных дизайнах
  • Клок современных чипов — порядка 2 ГГц, у CPU выше — 4–6 ГГц
  • Кэш L1 быстрее DDR примерно в 2 раза (в SRT — но контекст указывает «100 раз медленнее без кэша», т.е. оценка спикера колеблется)
  • Cruzo попал в Gold-tier ClusterMAX от semianalysis (1 из ~5 из почти 100 GPU-облаков), заменяет нерабочий нод за <10 минут
  • TCO у Gold-tier поставщиков на 15% ниже, чем у Silver, при одинаковой цене GPU
  • Jane Street недавно подписала контракт на компьют на $6 млрд

Источники

  • NVIDIA B100 / B200 / B300 — упомянуты как примеры эволюции FP4/FP8-производительности
  • NV Sentinel — софт NVIDIA для мониторинга и автопочинки GPU
  • TSMC PDK — задаёт примитивы и нижнюю границу клок-цикла
  • Verilog — язык описания, из которого синтезируется размещение регистров
  • Google TPU — пример архитектуры с большими систолическими матрицами и scratchpad-памятью
  • Groq — упомянут как пример CPU/процессора с детерминированным latency
  • AMD — производитель FPGA (Xilinx)
  • Cursor — IDE, спонсор выпуска
  • Cruzo / semianalysis ClusterMAX — отчёт по классификации GPU-облаков
  • Jane Street — упомянуты Ron Minsky и Dan Pontorwo как собеседники по AI-теме; используют FPGA для HFT
  • Maddox slicable systolic array — публично обсуждаемая разработка компании Попа

Итог

AI-чипы — это история про то, как на каждом уровне абстракции инженер платит налог коммуникации, и вся эволюция от CUDA-ядер к тензорным ядрам, систолическим массивам и FP4 — это последовательность приёмов амортизации этого налога за счёт повышения гранулярности встроенной в железо операции.

readmint Pro

То, что вы только что прочитали — это саммари readmint

Оформите доступ — и получайте такой же разбор по любому своему видео. Вставляете ссылку, через 2–3 минуты готов пересказ с главными тезисами и цитатами. Без воды и без перемотки.

  • Безлимит саммари — сколько угодно видео
  • Главные тезисы и цитаты без воды
  • Приоритет в очереди обработки
  • Без рекламы и сторонних блоков
Получить такое же саммари
Доступ откроется сразу после оплаты — вставите ссылку и начнёте.

Или 4 900 ₽/год — доступ откроется сразу после оплаты.

Ещё с канала «Dwarkesh Patel»

Все видео