4-битный AI
В связи с релизом gpt-oss с 4-битным форматом, объяснение этого формата проще показать в виде перечисления, чем длинной простыни рассуждений.
4-битный float (MXFP4) позволяет записать следующие числа:
{-6.0, -4.0, -3.0, -2.0, -1.5, -1.0, -0.5, -0.0, 0.0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0}
И вот вся AI вот на этом типе данных и держится. С учётом потерянного полубита в районе нуля, чую я, что троичные форматы не за горизонтом... Ну или, в этом контексте, base15. Объективная экономия 6%. Если только кто-то научится их быстро умножать и складывать...
4-битный float (MXFP4) позволяет записать следующие числа:
{-6.0, -4.0, -3.0, -2.0, -1.5, -1.0, -0.5, -0.0, 0.0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0}
И вот вся AI вот на этом типе данных и держится. С учётом потерянного полубита в районе нуля, чую я, что троичные форматы не за горизонтом... Ну или, в этом контексте, base15. Объективная экономия 6%. Если только кто-то научится их быстро умножать и складывать...

no subject
no subject
no subject
2. MXFP4 содержит 15 различных значений и AI'ке, кажется, достаточно этого для какой-то работы.
no subject
no subject
no subject
no subject
no subject
1. Свести к общему показателю (в данном случае он и так общий)
2. Сложить мантиссы: 0.75+0.75 = 1.5
3. Нормализовать: 1.5 = 0.75*2^1
Итого вьіходит 0.75*2^2, т.е. 3.
no subject
Вероятно, есть какая-то табличка соответствия бинарного представления закодированому флоату. К которой нужно обращаться на каждій чих. Разве нет?
no subject
Имеем:
- 1 бит знака
- 2 бита показателя
- 1 бит мантиссы.
При этом мантисса у нас почти всегда нормализованная (т.е. старший бит "1"), поэтому реально мантисса 2 бита, из которых хранится младший, а старший подразумевается. Подразумевается он всегда 1, кроме наименьшего значения показателя - тогда мантисса денормализованная, и старший бит подразумевается 0. Т.е. мантисса может принимать значения 0.75, 0.5, 0.25, 0 (последние два - только в случае денормализации). Или, эквивалентно, можно считать это значениями 3,2,1,0, изменив соответственно интерпретацию показателя.
В итоге имеем (для положительных чисел):
- показатель 00: денормализованная мантисса, коэффициент 2, значения мантиссы 0.0 и 0.25 дают нам числа 0.0 и 0.5
- показатель 01: нормализованная мантисса, коэффициент 2, значения мантиссы 0.5 и 0.75 дают нам числа 1.0 и 1.5
- показатель 10: нормализованная мантисса, коэффициент 4, значения мантиссы 0.5 и 0.75 дают нам числа 2.0 и 3.0
- показатель 11: нормализованная мантисса, коэффициент 8, значения мантиссы 0.5 и 0.75 дают нам числа 4.0 и 6.0
Если интерпретировать мантиссу как 0-3 вместо 0.0 - 0.75, то показатели надо, соответственно, интерпретировать как 0.5 - 2 вместо 2 - 8.
no subject
z0 = z2 = x0 & x1 & ~x2 & ~x3 & y0 & y1 & ~y2 & ~y3
z1 = z3 = ~(x0 & x1 & ~x2 & ~x3 & y0 & y1 & ~y2 & ~y3)
Другие варианты добавятся дизъюнктивно из других вычислений всех возможных входных пар, после чего формулы будет можно упростить через вынеcение общего за скобки.
no subject
z0 = ~z1 = z2 = ~z3 = (x0 & x1 & ~x2 & ~x3 & y0 & y1 & ~y2 & ~y3)
или более существенное?
no subject
no subject
no subject
no subject
no subject
Да.
>Сложная вычислительная задача?
Зависит от размера модели и конкретной задачи.
no subject
no subject
Вот обучение модели с последующим её остругиванием - может быть и HPC.
no subject
Допустим, запустили задачу в agentic mode с subagents и она пишет код бегает часы, а то и дни.
Общего назначения кластер там, или H200 в потолок перемножением матриц загружена, это вопрос деталей реализации. Просто нужно перемножить 8e+18 матриц и всё тут. Чем быстрее, тем лучше.
no subject
Если, грубо говоря, у тебя рабочее множество помещается в память одной машины - это один коленкор. Если нет и тебе нужно творчески его распределять по нодам кластера - совершенно другой.