Как-то не то ты говоришь, CPU как раз параллелится как с частичной, так и с полной загрузкой ядер, так что мгновенно сжирает и 8/16 потоков и 64гб памяти у меня на минике.
Параллелится Dataloader и некоторые другие вычисления. Что тоже важно. Перемножение матриц в PyTorch на CPU не параллелится. Практически или device='cuda' или в однопоток. https://pytorch.org/docs/stable/distributed.html#which-backend-to-use - как бы можно мультиCPU, но это надо отдельно заморочиться. То есть, вот есть у объектов PyTorch (тензоров) параметр device, который на практике обычно принимает значение или 'cpu' или 'cuda' (возможно с номером видеокарты). Если cpu - работает однопоток и никакого параметра типа jobs, указывающего сколько потоков использовать (применяется в других библиотеках) нет. Хочется многопоток - так просто оно не работает.
Ерунда про соотношение, особенно на древних GPU, получишь на llama3.1 8b каких-нибудь 5-7tok/sec на 1070, аналогично и на этом CPU
Не ерунда, разница в скорости вполне ощутимая. На 1070 может не сотни, но раз в 10 будет. Но вообще это еще и это от задачи (программы) зависит, не все сильно нагружают GPU.
Условно, 0 ватт на видеокарте дадут такой же выхлоп, как 50 ватт NPU на x86.
Так как на GPU (вулкан, куда, рокм) прекрасно модели работают, а NPU лишь теоретическая тема с минимум костыльных моделей для для Windows 11 (по крайней мере о amd)
Вся суть именно в том, что ты либо ложишь всю систему под нагрузкой и оно разряжается за час работы, либо оно с той же скоростью (на m1 max) работает незаметно.
т.е. разница как между бенчмарком и чем-то, чем ты можешь пользоваться и делать что-то ещё.
NPU там значительно поменялся в m3 и m4, оттуда у меня цифр нет.
Чел, там главное чтоб видеопамяти хватало. Но тут такое дело - на любую более-менее современную видяшку можно вкорячить квантованную модельку для генерации картинок (не обучения), иногда даже можно ещё слой обучить чтоб подтюнить модельку под твои хотелки. Но вот беда - чем меньше памяти, тем хуже результат. Скажем на 6 гигах видеопамяти результаты так себе. На 24 терпимо. Чтоб хорошо было надо больше.
А что уже 16 гигов видяшки всего 64 стоит? Я что-то проспал?
radeon vii с hbm2 памятью сейчас за 17к можно взять на авито. Ещё есть (был) rtx 3090 за 55к с 24GB (сейчас под 70к). Так что, я уже насчитал 3 человек желающих. Ещё 97 и можно ЛОР-ый GPU кластер для LLM поднять за недорого. С меня блоки питания и райзеры на pcie x1 с мат платой на 12 слотов вроде. Плюс физическое место установки.
х1 нафиг, в отличие от майнинга в multi-gpu сетапах на LLM больше трафика по шине и более критичен лейтенси. Я брал 16x->x4x4x4x4 райзер, и туда P40 втыкал.
Особенно будет заметно, если ллама 405b подымать, что полностью во VRAM не влезет и будет динамически слои туда-сюда гонять.
Я не разбираюсь, но теоретически годятся те видокарты где много VRAM и которые выполняют 2х операций над bf16/fp16 (в сравнении с классическими fp32 используемых в тригонометрических преобразованиях). Т.е. числа с пониженной точностью, у которых в два раза меньше разрядов можно молотить в два раза быстрее. В случае 3d 16-ти разрядные числа бы давали много артефактов (постоянный Z-fighting и прочее), но такие вычисления годятся для нейронок.
Упомянутая здесь nvidia 1070 по этой причине не годится (как и вся 1000-я серия), она конечно будет выполнять математику но в два раза медленнее чем могла бы будь в ней поддержка fp16.
Я тут частично от нечего делать занялся этой вашей наукой и в числе прочего «поигрался» с ИИ (хотя это и не моя тема). На моём далеко не топовом ноуте сабж бегает довольно шустро.
Там есть нюанс, что по x4 линку в отличие от x1 еще ниже latency (я по крайней мере на эту грешу).
Я сильно это не профилировал, но в сетапе когда 2 P40 были подключены по x16 линку, а одна по x1 через райзер, одну проще было выкинуть и положить остатки на CPU. В итоге из-за этого я и добывал с матами себе пару 16->4x4 райзеров с тао и варганил орочью нейроферму.
Особенно тогда не вдавался в детали, решил что сразу перестрахуюсь и на x4 посажу.
«Позвольте, — взовьётся внимательный читатель, решивший буква в букву следовать нашему руководству, — какой смысл, имея 8-Гбайт видеокарту, выкачивать даже урезанную модель, если она всё равно занимает 17,2 Гбайт?» — а именно таков размер предлагаемого Comfy.Org файла flux1-dev-fp8.safetensors. Дело, однако, в том, что в ComfyUI (как, кстати, с некоторых пор и в Forge) реализована возможность «склейки» оперативной памяти компьютера с видеопамятью — бесшовно для исполняемых в этих рабочих средах программ, но, конечно же, с обеспечением куда менее высокой производительности, чем если бы модель целиком умещалась в видеоОЗУ. Тем не менее на нашей тестовой системе в настоящее время установлено 24 Гбайт оперативной памяти, так что суммарный с видеопамятью доступный объём составляет 32 Гбайт, — этого, строго говоря, хватит и для неусечённой по точности FP16-версии FLUX (в чём мы чуть позже ещё убедимся).
реализована возможность «склейки» оперативной памяти компьютера с видеопамятью
Там не все так просто. Насколько я помню GGUF формат модели такое поддерживает. А обычные модели для генерации картинок они все в .safetensors. То есть возможность теоретическая есть, но по факту оно так работать у тебя не будет.
хватит и для неусечённой по точности FP16-версии FLUX
FLUX распространяется в GGUF, остальные модели я в таком формате не видел.
Вышедшее летом 23 года обновление драйверов Nvidia версии 536.40 включило использование Общей памяти графического процессора (то есть оперативной памяти, которая играет роль «памяти подкачки» для памяти GPU) для вычислений на GPU. Это позволяет избегать ошибки нехватки памяти, однако, когда заканчивается память GPU и начинает использоваться оперативная, скорость генерации падает до 50 раз (чем больше памяти, тем медленнее) из-за необходимости многократной пересылки данных между оперативной памятью и памятью GPU.