LINUX.ORG.RU

А есть где-то описание форматов кодирования нейро данных?

 ,


0

1

Вот эти все 2-3-4-5 бит. Понять как работает nvfp4/nvfp8 я могу но найти описание сжатых форматов не смог.

Хочу их добавить в текстурные блоки чтоб встроенный GPU мог делать говновозные шедевры если я пробьюсь куда нибудь типа yadro или Элвиса и он доживет до производства.

если я пробьюсь куда нибудь типа yadro или Элвиса

а как поживает ВАКовская статья? )) Не приняли? Теперь нужно в ядро биться?… Эххъ…

Лор полон непризанных гениев и это прекрасно 🤣

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)

Хочу их добавить

Они уже устарели )
Сейчас последний писк - тернарное кодирование, чтобы операции над -1,0,1 можно было делать сложением вместо умножения.

GAMer ★★★★★
()
Ответ на: комментарий от aol

Какой ты токсичный и злопамятный, однако. Ссылка на материал всего-то двумесячной давности. У меня вон тоже статья с начала лета лежит на очереди к рецензенту, я особо не тороплюсь. И почему человек должен только над одной идеей работать?

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Да там идея такая что ее можно на пальцах описать. Я подумал и забил.

Идея в том что для спинлока не надо ничего писать или читать. Нужно просто взять линейку кэша по правилам х86 и не отдавать ее пока спинлок не снимется или пока не пройдет 64 инструкции(например). Даже память под спинлок выделять не надо.

Это как LR/SC но вместо уведомительного характера где нужен цикл, тупо инициируется забор линейки кэша как при записи а на запросы дай обратно ядро отвечает погоди чуть позже.

ckotctvo
() автор топика
Последнее исправление: ckotctvo (всего исправлений: 1)
Ответ на: комментарий от PeleWin

Дак это я знаю. Добавить эти форматы в блок текстурирования дело вообще плевое. Даже умножать не надо как int/uint.

Но я не нашел описания всяких 2х и 3х битных форматов. Теоретически можно сколхозить самому из BISE-кодирования но зачем

ckotctvo
() автор топика

Конкретно в каждой модели смотреть, читать исходники ядер llama.cpp / vllm и других, в целом про квантизацию почитать, она по большому счёту оптимизация и несёт потери достоверности начиная с некоторой средней битности. Там часто уже индексное кодирование по блокам, то есть матрица на самом деле int, а реальная палитра float чисел сбоку стоит, причём для каждой части большой матрицы своя палитра. В железе операции над малобитными числами есть только в совсем-совсем свежих карточках.

neumond ★★
()

Я не знаю какого психиатра посоветовать. Но знаю что он нужен. Как ты собрался свой GPU делать (на секундочку нет ни одного GPU из гаража, все сделаны за очень-очень много денег огромным коллективом людей), тем более если ты не можешь разобраться с квантованием и вычислениями с плавающей точкой. Ладно бы ты делал GPU из 1990 года. Но нет, замах то на передовое железо.

Лучше упорись не в GPU тогда, а в чисто вычислительный модуль для нейронок. Это хотя и очень сложно (не думаю что в одно рыло возможно, но с ИИ кто знает что можно будет через 10 лет сделать одному), но всяко проще.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)
Ответ на: комментарий от neumond

Это уже сжатые форматы получаются. Только там есть два граничных значения или в astc две пары. Если так подумать то можно тупо сделать недокодек astc, я его пытался реализовать но сломался на шизохешировании и плавающей интерполяции.

А само декодирование блока это 4 таблицы поиска(rom по сути) и немного логики. Но все таки хочется определенности.

ckotctvo
() автор топика
Ответ на: комментарий от peregrine

Какой GPU? Частично навеян архитектурой radeon hd, 4x4 блока с 16 алушками и 1024 регистрами на каждую алушку. Алушки тупо взяты из модельки процессора- там simd-блок из них сделан. 32кб кэш кода, 32кб LDS, плюс блок растеризации. Говно GPU но! Нам же никто не продаст ip-корку mali или кала от imgtec. А для того чтоб куда-то продать изделие видеовыход нужен. Цель - low end.

на 28нм вроде как 80квадратов занимает. Для встройки пойдет. У меня нет цели урыть нвидию. Просто затычка. Но с ИИ. Потому что оказалось что покупатель может захотеть продукт где не будет отдельной видяхи(mxm с 16гб редкость). И память дорогая. Надо что-то придумать чтоб не распаковывать иишницу на ходу

ckotctvo
() автор топика
Ответ на: комментарий от ckotctvo

Сжатие текстур и матрицы нейросетей решают разные задачи, к ним разный паттерн доступа и разные точки оптимизации. Кодек сделать конечно можно, но зачем? Все эти форматы устаревают не успев зарелизиться, итоговый отбор формата идёт по каждой нейросети отдельно, в зависимости насколько её выдача начинает плыть от того или иного сжатия.

neumond ★★
()
Ответ на: комментарий от ckotctvo

Так они нужны трём с половиной разработчикам llama.cpp, и то, большую часть этих форматов они сами же и придумывают, когда пытаются пережать посильнее существующие нейросети. Пользователи только поверхностно, дай бог про fp16/fp8 читают, как у них там отрезали мантиссы и экспоненты, дальше резко переключаются на замеры насколько нейросеть отупела и сколько она весит.

neumond ★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария