Это вторая статья про проект GoldenFloat. Первая была про φ-лестницу форматов и троичную «Сетунь». Здесь — про инструмент, который вырос из той работы: единый, машинно-проверяемый каталог форматов чисел, где у каждого формата есть точная разрядка битов, статус-метка и битовый отпечаток. И про главную дисциплину этой работы: у каждого формата есть честная статус-метка того, насколько он проверен — вплоть до границы, где формула ещё работает, а проверенного железа уже нет.
Любой, кто хоть раз дебажил несовпадение точности между двумя реализациями нейросети, знает это чувство: один и тот же matmul на двух устройствах даёт разный результат, и непонятно — это баг, или просто bf16 так округлил, или вообще другой формат подкрался. Инженеры на разных концах конвейера меряют один и тот же результат разными линейками — и корректная деталь читается как брак.
Идея каталога простая: сделать одну линейку с точными насечками. Для каждого числового формата — сколько бит на знак, экспоненту, мантиссу; чему равно смещение (bias); как кодируются inf, NaN, субнормальные; где лежит «якорная» точка 3.0. Не описание словами, а машинный источник истины (SSOT), из которого автоматически генерируются Markdown, JSON, Python, Rust, C — и даже RTL для кремния.
Препринт по каталогу: arXiv:2606.09686.

Оглавление
Зачем вообще каталог форматов
За последние десять лет зоопарк числовых форматов в машинном обучении вырос взрывообразно. Раньше хватало float32 и float16. Потом появились bfloat16, TF32, FP8 в двух вариантах (E4M3 и E5M2), FP6, FP4, микромасштабируемые MXFP-форматы с общей экспонентой, NF4 из мира QLoRA, posit’ы, takum’ы, логарифмические LNS. У каждого — свой компромисс «диапазон против точности», свои правила округления, свои граничные случаи.
Проблема в том, что спецификации этих форматов разбросаны по статьям, стандартам и кодовым базам, и нередко противоречат друг другу даже внутри одной библиотеки. Классический пример: что делает FP8 E4M3 при переполнении на кодировании? По одной конвенции (tt-metal, AMD) — насыщается до максимума 448.0; по другой (JAX, TPU) — уходит в NaN. Стандарт OCP MX разрешает оба варианта. И пока вы не зафиксируете, какой именно у вас, «совпадает ли результат» — вопрос не проверяемый, а вкусовой.
Каталог отвечает на это так: один файл-спецификация, из которого всё остальное выводится механически. Если спека и сгенерированный декодер разойдутся — это ловит CI, а не человек на ревью.
Что внутри: 83 формата в 13 кластерах
На момент написания статьи живой источник истины (specs/numeric/formats_catalog.t27) содержит 83 формата, сгруппированных в 13 кластеров. Вот разбивка (число проверено на свежем клоне репозитория — это важно, и ниже я объясню почему):
Кластер | Кол-во | Что внутри |
|---|---|---|
GoldenFloat | 22 | φ-семейство GF2…GF1024 + гибриды (GF+LNS, MXGF) (arXiv:2606.05017) |
HistoricalVendor | 10 | IBM HFP, VAX (F/D/G/H), Cray, Microsoft MBF |
PositUnumIII | 8 | Posit8…64, takum8…64 (Hunhold 2024) |
IntegerFixed | 8 | INT4…INT128, Q-формат, BCD |
MlLowPrecision | 7 | bfloat16, TF32, FP8 (E4M3/E5M2), FP6, FP4 |
Ieee754Binary | 5 | binary16/32/64/128/256 |
Theoretical | 4 | minifloat, Unum I/II, tapered FP |
Lns | 4 | логарифмические LNS-8…64 |
CompressionTrick | 4 | block FP, shared-exponent, per-channel scale, stochastic rounding |
Microscaling | 3 | MXFP8/6/4 (общая экспонента E8M0) (Rouhani 2023) |
Ieee754Decimal | 3 | decimal32/64/128 |
ExtendedFloat | 3 | x87 FP80, double-double, quad-double |
QuantTuned | 2 | NF4 (Dettmers 2023), AFP |
Разрядность охватывает диапазон от 2 бит (балансная троичность GFTernary) до 1024 бит (GF1024 — крайняя ступень φ-лестницы). Каждая строка несёт не только s/e/m/bias, но и поле phi_distance — насколько разбиение формата близко к тому, что диктует золотое сечение через тождество φ² + φ⁻² = 3.
Важная оговорка про слово «golden». Это стандартный отраслевой термин — эталонное значение, с которым сравнивают результат (как эталонный метр в палате мер и весов). Его используют NVIDIA, Intel, все инженеры HDL и ML. Это не моё изобретение и не чьё-то ещё — каталог просто говорит на том же языке.
Статус-метки: главная честность каталога
Если бы я ставил одну вещь в центр всего проекта — это была бы дисциплина статус-меток. Каждый формат в каталоге несёт честный ярлык того, насколько он проверен:
Статус | Кол-во | Что означает |
|---|---|---|
Verified | 51 | Проверен против эталона (стандарт или ml_dtypes) |
Historical | 12 | Исторический формат (IBM, VAX, Cray…), для полноты |
Experimental | 11 | Спека + частичная реализация, без полного покрытия |
Open | 9 | Только спецификация, выведенная из правила; без RTL |
Вот это — суть. И здесь проходит самая важная честная граница каталога: где правило e = round((N−1)/φ²) ещё является работающим железом, а где оно уже становится гипотезой. GF16 проверен вплоть до кремния (FPGA 35/35 тестов, 323 МГц на Artix-7, кремниевый якорь). Для ступеней GF48…GF256 написан RTL, но кремния под ними нет. А GF512 и GF1024 — это уже чистая экстраполяция правила: у них в SSOT прямо стоит пометка (extrapolation, no RTL), и я не делаю вид, что они проверены. Подробно эту лестницу зрелости я разбираю ниже.
Эта честность стоит дороже, чем красивые цифры. В каталоге значение 0.1 в bfloat16 показано с ненулевой ошибкой — потому что 0.1 в bf16 не представимо точно. Прятать это означало бы испортить саму линейку.
Граница RTL: где правило перестаёт быть железом
Это самая честная часть статьи. φ-семейство построено на одном правиле: для ширины N бит число бит экспоненты e = round((N−1)/φ²), мантисса m = N − 1 − e, сдвиг bias = 2^(e−1) − 1. Правило красивое и применимо к любой ширине. Но «формат описан правилом» и «формат работает в железе» — это разные уровни зрелости, и я не имею права их путать.
Вот лестница зрелости φ-ступеней — ровно так, как она есть в репозиториях сегодня:
Уровень зрелости | Ступени | Что реально есть |
|---|---|---|
Проверено вплоть до кремния | GF16 | RTL + FPGA 35/35 @ 323 МГц + кремниевый якорь |
RTL + бенчмарк (Verified) | GF8, GF12, GF32, GF64 | файлы |
RTL написан, кремния нет (Open / Exp) | GF6, GF10, GF14, GF20, GF24, GF48, GF96, GF128, GF256 |
|
Чистая экстраполяция, RTL НЕТ (Open) | GF512, GF1024 | только спека; файлов |
Главный честный парадокс здесь — GF1024. По метрике близости к φ это лучшая ступень лестницы (phi_distance ≈ 0.0006), и именно она наименее проверена: ни одной строки Verilog. В SSOT её use_case буквально записан как (extrapolation, no RTL). Красивая метрика не повышает уровень зрелости — и каталог это показывает, а не прячет.
И RTL, который есть, — не декорация. Умножитель GF256 в начале июня переписали после реального бага: произведение мантисс было на 2 бита у́же, чем нужно, и 1.0 × 1.0 давало 0.5. Это нашли, потому что под форматом есть железо, которое можно прогнать. Под GF512/GF1024 такого железа пока нет — поэтому они и помечены честно.
Якорь 0x47C0: одна точка проверки на всех
У каталога есть единая «реперная точка». Она вытекает из того же тождества: φ² + φ⁻² = 3 = L₂ (второе число Люка). Если посчитать dot4(1, 2, 3, 4) в формате GF16, бит-в-бит получается значение с отпечатком 0x47C0. Этот якорь проносится без изменений через все реализации — от JSON-векторов до RTL-декодеров на кремнии (проект Corona). Любое расхождение в этой одной точке означает, что где-то линейка сбита.
Это механическая проверка «одинаковости», а не доказательство превосходства. И тут важная оговорка, которую я держу жёстко: φ-семейство заслуживает место в каталоге широтой охвата и связностью тулчейна, а не тем, что каждая ступень бьёт конкурента. takum (Hunhold, 2024) — стоящий контрпример, и он не спрятан: он лежит в каталоге рядом со всеми.

Связь с IEEE P3109
Рабочая группа IEEE P3109 стандартизирует семейство 8-битных форматов для машинного обучения. В каталоге есть cross-walk — одностраничная карта, которая сопоставляет семейство P3109 binary8 (p1…p7) с индексами каталога. Это не заявление о соответствию стандарту — это справочник для разработчиков, который сама рабочая группа может проверить и поправить. Там, где есть расхождение, каталог уступает Lean-формализации FLoPS (arXiv:2602.15965).
Это сознательная позиция: входить не с требованием «примите нас», а с проверяемой информацией, которую можно сверить.
Что это даёт на практике
Самое прямое применение — арбитр при расхождении точности. Когда один и тот же расчёт даёт разные результаты на двух устройствах (классическая боль: PCC падает с 0.99 до 0.93 при другой блокировке редукции), бит-точный эталон формата отвечает на вопрос «чей результат корректен» механически, а не на глаз.
Второе применение — кодоген под новое железо. Из одной спеки выводятся декодеры на нужном языке, включая RTL. Цепочка SSOT → кодоген → RTL → кремний целиком механическая; CI-гейт rom_readback ловит любое расхождение между спекой и тем, что реально лежит в ПЗУ декодера на чипе.
Третье — общий словарь. Когда вы и ваш собеседник из другой команды называете один и тот же формат одинаково, с одинаковой разрядкой и одинаковым поведением на границах, исчезает целый класс споров «у нас не так».
Честные ограничения
Чтобы статья не превратилась в рекламу, перечислю прямо:
Проверка кремнием — пока только GF16. Для GF48…GF256 RTL написан, но не в кремнии; GF512 и GF1024 — чистая экстраполяция правила без RTL. Самая близкая к φ ступень (GF1024) — наименее проверенная.
Кремний Corona — это законченный дизайн (RTL + GDS + формальная верификация + cocotb), а не отлитый чип. Проверено в симуляции и формально; кремний впереди.
φ-семейство не заявлено как «лучше всех». Место в каталоге — за широту и связность, не за победу по каждой ступени. takum в каталоге как стоящий контрпример.
Каталог — это инструмент и дисциплина, а не финальное слово. Линейка хороша ровно настолько, насколько честны её насечки — поэтому я и показываю, где они сейчас сбиты.
Источники и материалы:
Препринт каталога: arXiv:2606.09686
GoldenFloat (φ-семейство): arXiv:2606.05017
SSOT каталога: gHashTag/t27 · formats_catalog.t27
takum (контрпример): Hunhold 2024 · arXiv:2412.20273
OCP Microscaling: Rouhani 2023 · arXiv:2310.10537
NF4 / QLoRA: Dettmers 2023 · arXiv:2305.14314
FLoPS (P3109 формализация): arXiv:2602.15965
Аффилиация: Trinity S³AI (независимый исследовательский коллектив). ORCID: 0009-0008-4294-6159. Контакт: admin@t27.ai (асинхронно).






















