• XSS.stack #1 – первый литературный журнал от юзеров форума

Ии на ПК llama

Dread Pirate Roberts , так ты, все-таки, прикупил себе модифицированную 4090? )
да, я же писал
что 4090 с 48 гигабайтами памяти реально существуют - это инфа 100%, посмотри видео в моём посте выше, плюс на реддите несколько топиков с пруфами, и мне самому она скоро приедет
 
если не секрет, какая стоимость в американских мертвых президентах?
~3500
llava юзай лучше, текстовые смысла нет, столько памяти на гп не найдешь для запуска большой версии
это же вроде для распознавания изображений? мне именно генерация текста нужна, а не распознавание или генерация картинок.
 
ping Agent X

And the model we using it's hybrid combination of latest deepseek v3 + r1 model and we use llama v3 vision and hybrid mistral the datasets are 80b parameters

please tell how to make a hybrid out of two or three different models.
 
да, оказалось всё очень интересно: нужно сделать несколько настроек биоса и оси, и напрямую указывать лламе, что нужно использовать NUMA.

1) BIOS: enable memory interleaving
у моей конкретной мамки из вариантов только "Auto" и "Disabled", поэтому оставил "Auto".
как вариант, можно делать это на уровне оси, запуская программы через "numactl --interleave=all /path/to/llama-cli -m model -p prompt ...", но в моём случае это выдавало меньше tokens per second, чем просто ./llama-cli.

2) BIOS: set NUMA per socket to NPS4
по умолчанию или в режиме "Auto" этот параметр делает 1 ноду на процессор ("NPS1"), и вся память работает в одно(двух?)канальном режиме, поэтому и скорость генерации текста никакая. нужно выставлять этот режим в максимально возможное значение, в моём случае NPS4.

3) BIOS: set ACPI SRAT L3 as NUMA Domain
это создаёт ещё больше NUMA нод, в моём случае получилось то ли 16, то ли 32, уже не помню, но эта настройка сделала скорость генерации в десятки раз хуже, поэтому я вернул её обратно в Disabled.

4) OS: disable Linux NUMA balancing
а именно выполнить команду "echo 0 > /proc/sys/kernel/numa_balancing". лично я разницы в скорости не заметил, результаты в пределах погрешности, но у вас может сработать.

5) OS: дропать кэши перед запуском llamacpp
"echo 3 > /proc/sys/vm/drop_caches" от рута. так как я запускаю ламу от юзера, а не от рута, то сделал для удобства суидник, выполняющий эту команду.
оказалось, что на скорость генерации влияет "пустота" оперативной памяти - если не очистить память от старой модели перед загрузкой новой, то скорость генерации новой модели будет медленнее, чем предыдущей.

6) OS: запускать llamacpp с опцией "--numa distribute"
типа "./llama-cli --numa distribute -m Llama-3.3-70B-Instruct-Q4_K_M.gguf"

7) OS: уменьшить количество потоков llamacpp -t NN
если у процессора очень много ядер - 64 или больше - то начиная с определённого количества потоков лламы они начнут мешать друг другу. тридцатидвухъядерным это не грозит.
ещё очень желательно выключить в биосе виртуальные ядра - "HyperThreading" у интела или "SMT" у амд.

+ BIOS:
выключить HT/SMT (HyperThreading / Simultaneous MultiThreading)
выключить IOMMU
выключить любые упоминания шифрования памяти типа TSME и всякие защиты от RowHammer
+ OS:
выключить transparent hugepages
выключить ASLR / randomize_va_space
выключить NMI watchdog
выключить защиты от дыр в процессоре (mitigations=off) и все возможные LSM / Linux Security Modules

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

А почему ты смотришь на это так? Типа «всё должно быть на одной видюхе или машине»?

Можно взять несколько обычных компов с тем железом, что уже есть под рукой, раскидать веса модели между ними и соединить по локалке. Каждый узел тянет свой кусок, а вся модель работает как единое целое.

Тот же llama.cpp это умеет: гоняется в основном выход слоёв, а не весь массив весов. Да, это может немного замедлить работу, хотя зачастую это больше теоретическое, чем практическое замедление. Так что запустить DeepSeek 671B у себя дома сегодня - это не вопрос кучи денег на топовые GPU, а вопрос смекалки и сетевой инженерии.
 
Ллама7б глупая. Если и ставить, то минимум 27. Пробовал дипсик27/32 - отвечает хорошо и правильно, инструкции понимает четко, но ОЧЕНЬ долго думает (32гб озу). Гемини7б тоже лажа, отвечает на одни и те же условия по разному (и неправильно)
 
Добиться максимального быстродействия на локалке можно только если использовать видеокарты.
2x3090, 2x4090 , Китайскую разработку 4090 48Гб, или просто использовать модель меньшего размера оптимизированную под конкретную задачу. Хотя, подозреваю, что и система с двумя Тесла P40 будет быстрее работать с большой моделью, чем вариант с использованием процессора и памяти

4090 (48) is a cool video card, but it is very expensive. If you use two such video cards, you can load a 96 GB model, with one such card the advantages are not so obvious.
 
4090 (48) is a cool video card, but it is very expensive. If you use two such video cards, you can load a 96 GB model, with one such card the advantages are not so obvious.

А кстати, сейчас набирает обороты тренд на разработку новых архитектур и моделей, которые можно эффективно не только запускать, но и обучать на относительно слабых графических картах.

Вместо громоздких универсальных моделей, требующих огромных ресурсов, всё больше внимания уделяется компактным, специализированным решениям - например, для обобщения текстов или удаления конфиденциальной информации и т.д. Такие модели не только быстрее и точнее в своих задачах, но и гораздо экономичнее в обучении и развертывании. Тенденция к созданию доступных и эффективных инструментов, способных работать даже на бюджетном оборудовании, растет, ведь это нужно людям.
 
Специализированные решения всё равно будут основаны на базовых моделях которые попали в сеть, потому большие модели для большинства применений интересней.
 
на реддите обсуждают выгрузку на GPU не целых слоёв (--n-gpu-layers), а их частей (--override-tensor), и похоже, что это прорыв: люди пишут об ускорении работы в 3-4 раза даже на калькуляторах уровня ноутбучных 2060.
суть: выполнять объёмные, но при этом простые, операции на процессоре, то есть оставлять их на CPU, а не offload-ить на GPU.

Idea: With llama.cpp and derivatives like koboldcpp, you offload entire LAYERS typically. Layers are comprised of various attention tensors, feed forward network (FFN) tensors, gates and outputs. Within each transformer layer, from what I gather, attention tensors are GPU heavy and smaller benefiting from parallelization, while FFN tensors are VERY LARGE tensors that use more basic matrix multiplication that can be done on CPU. You can use the --overridetensors flag in koboldcpp or -ot in llama.cpp to selectively keep certain TENSORS on the cpu.
10.61 TPS vs 3.95 TPS using the same amount of VRAM, just offloading tensors instead of entire layers:
Код:
  python ~/koboldcpp/koboldcpp.py --threads 10 --usecublas --contextsize 40960 --flashattention --port 5000 --model ~/Downloads/MODELNAME.gguf --gpulayers 65 --quantkv 1 --overridetensors "\.[13579]\.ffn_up|\.[1-3][13579]\.ffn_up=CPU"
  [18:44:54] CtxLimit:39294/40960, Amt:597/2048, Init:0.24s, Process:68.69s (563.34T/s), Generate:56.27s (10.61T/s), Total:124.96s
Offloading layers baseline:
Код:
 python ~/koboldcpp/koboldcpp.py --threads 6 --usecublas --contextsize 40960 --flashattention --port 5000 --model ~/Downloads/MODELNAME.gguf --gpulayers 59 --quantkv 1
  [18:53:07] CtxLimit:39282/40960, Amt:585/2048, Init:0.27s, Process:69.38s (557.79T/s), Generate:147.92s (3.95T/s), Total:217.29s
So, really how to?? Look at your GGUF's model info. For example, let's use: https://huggingface.co/MaziyarPanahi/QwQ-32B-GGUF/tree/main?show_file_info=QwQ-32B.Q3_K_M.gguf and look at all the layers and all the tensors in each layer.
Код:
  Tensor        Size    Quantization
  blk.1.ffn_down.weight         [27 648, 5 120]         Q5_K
  blk.1.ffn_gate.weight         [5 120, 27 648]         Q3_K
  blk.1.ffn_norm.weight         [5 120]         F32
  blk.1.ffn_up.weight   [5 120, 27 648]         Q3_K
In this example, overriding tensors ffn_down at a higher Q5 to CPU would save more space on your GPU that fnn_up or fnn_gate at Q3. My regex from above only targeted ffn_up on layers 1-39, every other layer, to squeeze every last thing I could onto the GPU. I also alternated which ones I kept on CPU thinking maybe easing up on memory bottlenecks but not sure if that helps.
1.png

2.png


подробнее: https :// old.reddit.com/r/LocalLLaMA/comments/1ki7tg7/dont_offload_gguf_layers_offload_tensors_200_gen/

всё вышесказанное актуально только для случаев запуска БЯМ на CPU+GPU вместе, когда модель не влезает целиком в VRAM видюхи.
если БЯМ целиком влезает в VRAM, тогда в запуске частей на CPU смысла нет.
 
Последнее редактирование:
на реддите обсуждают
Ключевое слово обсуждают
А будет ли Рабочая реализация этой идеи или нет? Хотя даже с моим ресурсами на это всё равно, а с твоей картой должно быть и подавно
 
Ключевое слово обсуждают
а дальше третьего слова читал? :D в районе 20-го слова написано, что другие люди подтверждают ускорение, а примерно через 200 слов написано, как определить, какие слои оставлять на CPU.
а с твоей картой должно быть и подавно
к сожалению, даже минимальное участие CPU в инференсе больших (по размеру) моделей настолько сильно роняет скорость, что я решил запускать только маленькие модели, которые полностью влезают в VRAM.
точнее, когда у тебя видеокарта уровня "калькулятор" и ты в принципе можешь запускать только маленькие модели, то разница между 4 и 10 тпс значительна, а когда маленькая модель полностью влезает в GPU и выдаёт 40 тпс, а большая не влезает и на комбинации GPU+CPU выдаёт 10 тпс, то скорее предпочтёшь запускать маленькую, зато быстро.

а так как хочется запускать и относительно большие модели, то я решил не мелочиться и купить ещё одну видеокарту, но в этот раз помощнее и сделанную не в китайском подвале :D а учитывая ненулевой шанс нажить себе приключений из-за импорта "оборудования, имеющего в себе функции шифрования", которое таможенники могут захотеть оставить себе, я планирую слетать в дружественную страну, там выкинуть родную нвидиевскую коробку и привезти только саму видюху в ручной клади.
 
кстати, благодаря БЯМ не только художники и дизайнеры всё, но и переводчики тоже: Gemma3 27B очень хорошо переводит, и распознаёт текст с мыльных джипегов лучше, чем Tesseract.
этим можно пользоваться вместо Google Lens, хоть и менее удобно - сфоткал текст, ужал картинку, загрузил в llama-server, подождал, получил перевод. думаю, уже скоро сделают полноценный аналог с переводом картинки с камеры в реальном времени.
подробнее про запуск графической модели: https://github.com/ggml-org/llama.cpp/blob/master/docs/multimodal/gemma3.md
 
на реддите обсуждают
koboldcpp
Этой штуке года 2 уже. С той частотой выхода новых моделей, которая есть, подобная экономия памяти, работающая только на старых моделях выглядит не нужной.
 
Этой штуке года 2 уже. С той частотой выхода новых моделей, которая есть, подобная экономия памяти, работающая только на старых моделях выглядит не нужной.
koboldcpp - это запускатор БЯМ, как llamacpp, или ollama, или vLLM, или десяток других софтин. ты сам решаешь, насколько старую модель с её помощью загружать.
 
а дальше третьего слова читал? :D в районе 20-го слова написано, что другие люди подтверждают ускорение, а примерно через 200 слов написано, как определить, какие слои оставлять на CPU.
и всё это относится к обсуждают, Реализация - это рабочий софт

.
 
Последнее редактирование:
к сожалению, даже минимальное участие CPU в инференсе больших (по размеру) моделей настолько сильно роняет скорость,
а так как хочется запускать и относительно большие модели, то я решил не мелочиться и купить ещё одну видеокарту,
для меня всё что помещается в 48gb - относительно большая модель,
модель которая помещается в 24gb и работает на одной видеокарте отвечает шустрее, чем модели которые загружают и вторую, более медленную карту. Значит ответы квантованной модели на 48gb у тебя должны выскакивать как чёртик из табакерки , Скорость работы китайца и основана на прямом доступе gpu к памяти. Ты сравнивал ответы модели, которую можешь запустить локально и облачного дипсика ? Что не устраивает?
может потренироваться на кроликах и прикупив условную 3090, расширить возможности на 24gb и посмотреть как работает китаец в тандеме, всё же про железо отбивает свою стоимость, только на крупных медиа проектах, но тебе видней
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх