Pull to refresh

Comments 25

PinnedPinned comments

Хотелось бы еще разницу в токенах увидеть.

При обычном layer split скорость генерации почти не изменится, потому что карты передают данные строго по цепочке раз на токен

А при tensor split?

Имеется ввиду сам чип? Просто на 2080 есть же NVLink и к чему так заморачиваться?

у меня 3хCMP50hx и 1xRTX2080TI, у CMP50hx NVLink заблокирован.

Ясно. Я так и подумал.

На 2080 есть на Смр50 нету, физически есть, но драйвер говорит что нет.

На двух сокетах P2P через шину UPI между процессорами всегда будет узким местом при тензорном сплите, проще посадить ведущую пару карт на один корневой комплекс и гонять тяжелые слои внутри него, на межсокетную линку тогда останется выкинуть только редкий обмен по окончании эпохи

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

Спасибо за серию! Поделюсь результатом на смешанном комплекте: 2× CMP 50HX + CMP 90HX, два Xeon E5-2680 v4, Ubuntu 26.04, ядро 7.0.0-31, адаптированный смешанный драйвер NVIDIA 610.57.04. Compute unlock был сделан раньше; здесь проверяли PCIe, BAR1 и P2P.

Что получилось:

  • 90HX: Gen1 x1 → Gen2 x1. RAM→GPU: 0,181 → 0,364 ГБ/с; GPU→RAM: 0,213 → 0,418 ГБ/с. Физическая ширина осталась x1.

  • BAR1 на всех трёх картах: 128/128/256 MiB → 16 GiB на каждой. Это окно доступа, не увеличение объёма VRAM. Понадобился DSDT override: прошивка не описывала уже настроенные процессорами окна MMIOH. Сам BIOS и MMIOH-регистры не меняли.

  • Между двумя 50HX заработал BAR1 P2P: 1,37 ГБ/с в обе стороны против 0,82–0,83 ГБ/с через RAM. Они уже были на Gen2 x4. Для этого адаптировали BAR1-путь из обсуждения CMP50HX, на которое выше сослался LoDo.

Проверяли и cudaMemcpyPeerAsync, и CUDA-ядро, читающее память соседней карты, с проверкой каждого элемента. Основной замер — 32 MiB, прогрев и медиана пяти повторов; отдельно прошёл новый процесс с 256 MiB и десятью повторами. В скорости пути через RAM полезный объём учитывался один раз, время — сумма обеих передач.

Самый неприятный нюанс оказался в загрузке смешанного комплекта. На этой машине повторный probe уже инициализированных 50HX после reload драйвера заканчивался отказом GSP. Помогло временно удержать обе 50HX через driver_override до первого probe, выполнить Gen2-процедуру с перезагрузками модуля на одной 90HX, а затем впервые подключить 50HX. Такая автозагрузка успешно прошла два раза.

А вот 50HX↔90HX через CUDA P2P не заработали: во всех четырёх направлениях canAccessPeer=0, а прямая попытка cudaDeviceEnablePeerAccess возвращает cudaErrorPeerAccessUnsupported (217). При этом nvidia-smi topo -p2p r рисует OK. Причину окончательно не установили, поэтому утверждать, что смешанный P2P физически невозможен, не буду.

Все три карты прошли 10 минут совместной нагрузки FP16/FP32 с проверкой результатов по CPU и 360 матричных тестов llama.cpp. Во время нагрузочных тестов — без ошибок данных и новых Xid/AER. Температуры максимум 55/53/66°C при лимитах 158/158/225 W. Это пока короткая проверка, не многосуточный тест стабильности.

На этой машине повторный probe уже инициализированных 50HX после reload драйвера заканчивался отказом GSP. Помогло временно удержать обе 50HX через driver_override до первого probe, выполнить Gen2-процедуру с перезагрузками модуля на одной 90HX, а затем впервые подключить 50HX. Такая автозагрузка успешно прошла два раза

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

Откуда взялась 90hx, и что значит активировать на ней и подключить 50hx впервые? если вы пишете в системе две 50hx. вы подключаете pcie устройство на горячую после перезагрузки модуля?

Согласен, ведь две 50hx должны были дать 100hx, где-то потерялись 10hx

Всего три видюхи, одна 90 и две 50

Мне удалось p2p судя по параметрам тестов активировать на CMP 50hx 20gb + rtx 4070 12 gb, в режиме x8 с разделением слотов x8/x8 непонятно дало ли что то, возможно +4 токена плюсом выползло. Ещё надо посмотреть на модели которая 1 к 1 на видеокартах помещается, там пик был 65. @iatethelogsсори что заставил дополнительно покопаться, видимо затык где то в другом месте.

Хм. Сделал ещё один тест и обнаружил что nccl при попытке использовать p2p ложится наглухо. Или я наворотил что то не так, ну или что то надо ещё. Возможно по этому не видно толком приростов.

попробуйте через мой софт. только чуть позже. я в софт вставил описанный способ с mailbox, а с LLM он не работает. нужно переводить на обмен через BAR1. я это сделал, только в софт еще не добавил. прироста так же не дало нихрена, хотя фактически данные шли именно через p2p и именно через BAR1. в сочетании с тем что tensor split режет prefill в несколько раз с условных 5-8 тыс. т/с до 700-800, пророст генерации в 3-4 токена выглядит смешно и жалко. но, как добавлю в софт - маякну, попробуйте на 50hx. @Mefix37

Я использовал решение xrip , сделав форк, применив патчи из предложения от https://github.com/xrip/cmp50hx-unlock/issues/14 но слегка по другому, пересобрал патчи на основе issues14, и накатил патч из 615 https://github.com/aikitoria/open-gpu-kernel-modules с адаптацией к 610.43.03 но только для https://github.com/aikitoria/open-gpu-kernel-modules/blob/c8bff5400e2fc8bda4cb9a141fb596aad607a35f/patch-libcuda-p2p.py#L4 вроде ток он был нужен для используемой мной связки и возможно я тут жестко накосячил, был уже третий час ночи, кормил дочь, и жонглировал дипсиком и локальной моделью. Я пользуюсь сейчас llama.cpp думал ещё ninfere попробовать, vllm не пробовал. Потому что пока p2p нет, и смысла не было особо. Вы для 50 hx и гибридный p2p тоже будете подливать/подлили?

xrip со мной идти на контакт особо не пошел, когда я патчи писал для 90hx, поэтому за его реализацию ничего не могу сказать.

Мне не принципиально, просто объяснил что откуда брал, т.к. пока не понятно дает ли что то, тем-более в моем случае с такой гетерогенной системой. У меня вообще желание добить до конца взять актуальное решение и разобраться с адаптацией под новые драйвера, в моем случае я на этом же пк ещё играю, тем-более в будущих драйверах может ещё что накопают, а применить решение от новых драйверов к старым может быть невозможно. Теплится надежда что может быть и rt на CMP 50hx разлочат а не фиктивные циферки напишут, хотя это маловероятно.

Циферки скорости - это круто! А что с целостностью данных? Проверена? :)

обязательно. что вдули - то и выдули. я даже указывать не стал.

Рад за Вас, но не от всего сердца)))

Раньше cmp90 покупал по 4-5к рублей. Они даром никому были не нужны. А сейчас и за 10к живые встречаются не так уж часто

кому интересно, платформа на зеонах как у автора может gen 2 разблокировать на N штук cmp90hx параллельно, у меня получилось в районе 5 минут в сумме на 5 карт. На одну карту уходят те же 5 минут, так что масштабируется метод скорее всего неограниченно. Все 37 регистров, включая gen 2, поддержку игровых нагрузок и т.д. Нейронки крутятся, игры играются на уровне 3070-3080.

Использовать можно EFI анлокер, который есть в сети уже несколько месяцев, на картах параллельно его запускать через vfio-pci. Работает гарантированно и за const время. Без варварства pwner с гонками и выгрузками модуля.

Sign up to leave a comment.

Articles