Блог создается при поддержке Failover Bar и Anarchic Pro

AI GPU для нищебродов

November 26, 2024 . 7 минут на чтение статьи

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

С этим вопросом я вышел в интернет и обнаружил, что на Avito цены на GPU A100 начинаются от миллиона рублей, H100 может стоить произвольное значение от полутора до четырех миллионов, цены на H200 начинаются от 5 миллионов. Столько денег у меня сейчас нет.

Что касается картинок, проще всего было бы купить месячнуюю подписку на какую-нибудь Midjourney. Но результаты работы этих нейронок довольно однообразны и узнаваемы. Часть контента вообще нельзя обсуждать - в особенности это касается всего, что связано с NFW (эротическим контентом), который публичные нейронки обрабатывать отказываются.

Что касается генерации текста, нет такой Pro подписки на ChatGPT или Claude, лимиты которой разработчик бы не потратил за считаные минуты. Можно купить API, но тут уже закончится кошелёк.

Значит, нужно идти другим путём.

Сразу оговорюсь, что никакого GPU я все еще не купил. Но в результате небольшого исследования были получены важнейшие разведданные, которыми и будут раскрыты ниже по тексту. Здесь и далее, стоимости будут приводиться на самый конец 2024 года.

Нищекарты

Какие у нас есть видеокарты с 24G оперативной памяти, и сколько они стоят?

NVIDIA Tesla K80

  • VRAM: 24 GB (12 GB на один GPU, два GPU внутри карты)
  • GPU: более чем в 6 раз медленней, чем RTX4090
  • Архитектура: Kepler (2014)
  • Стоимость: Самая дешевая карта на рынке, около 15 т.р.
  • Нюанс: Урезанная поддержка FP16 и старая версия CUDA — не нужна для современных LLM

NVIDIA Quadro P6000

  • VRAM: 24 GB
  • GPU: в 2.5 раз медленней, чем RTX4090
  • Архитектура: Pascal (2016)
  • Стоимость: Лютый оверпрайс, около 80 т.р. За эти деньги можно купить две RTX3080
  • Нюанс: Более свежая CUDA, чем в K80. Все очень плохо с энергоэффективностью

NVIDIA Tesla P40

  • VRAM: 24 GB
  • GPU: в 3 раз медленней, чем RTX4090
  • Архитектура: Pascal (2016)
  • Стоимость: Лучшая цена по соотношению цена-качество. Около 30-40 тысяч рублей
  • Нюанс: Изначально предназначалась для инференса, поддерживает CUDA 11, идеально подходит для старых и мелких LLM. Важно, что аппаратный NVLink не поддерживается, многоядерный сетап достигается программными средствами

NVIDIA Tesla V100

  • VRAM: 16-32 GB (в зависимости от конфигурации)
  • GPU: в 3 раз медленней, чем RTX4090
  • Архитектура: Volta (2017)
  • Стоимость: Очень сложно найти в продаже. Из-за этого стоит произвольные деньги. Но легко можно предположить, что настоящая стоимость — около 200к. Это стоимость, примерно равная с 4090 24g (250 тысяч рублей), но за более медленную видеокарту с устаревшей архитектурой
  • Нюанс: Нормально подходит для FP16 и современных LLM

NVIDIA Quadro RTX 8000

  • VRAM: 48 GB
  • GPU: в 2 раз медленней, чем RTX4090
  • Архитектура: Turing (2018)
  • Стоимость: От 400 тысяч. Работает в 2 раза медленней RTX4090, стоит в два раза больше. Но и памяти в два раза больше. Поэтому, сравнивать её стоит с комплектом из двух RTX4090, здесь они наравне
  • Нюанс: Отлично подходит для почти любых современных задач

NVIDIA Titan RTX

  • VRAM: 24 GB
  • GPU: в 2 раз медленней, чем RTX4090
  • Архитектура: Turing (2018)
  • Стоимость: 70 тысяч. Раскупилены коллекционерами и людьми, умеющими считать деньги
  • Нюанс: Очень популярная карта для ML у всех, кто нашел, где ее купить

NVIDIA RTX 4090 24G

  • VRAM: 24 GB
  • GPU: быстрее всех карт из этого списка
  • Архитектура: Ada Lovelace (2022−2024)
  • Стоимость: 250 тысяч
  • Нюанс: Текущий золотой стандарт для "домашних" ML задач

Королева нищекарт: Tesla P40

Давным-давно, в другой галактике, это была одна из первых и лучших карт, специально предназначенных для машинного обучения на серверах. 24 GB GDDR5 VRAM — это тяжело и надежно. Но это было в 2016, а потом прошло 8 лет.

План

Очевидный план в том, чтобы воткнуть в один компьютер 4 штуки P40. По объему VRAM (хоть и раздельному) такое решение приближается к полноценным картам типа H100, которые стоят многие миллионы.

Но есть проблемки.

Требования к питанию

P40 жрет 250w. Рекомендуется иметь блок питания хотя бы с тройным превышением - x2 + процессор. Для четырех карт нужен внушительный блок на 3000w, который будет стоить от 20 тысяч рублей.

Для подключения нужен специальный коннектор, который объединяет два PCI кабеля в один, получая те самые 250W. Гуглится по словам "CPU 8 (Pin) Male to Dual PCIe 8 Pin Female Adapter".

Охлаждение

P40 — это серверное железо, поэтому на него не установлено активное охлаждение, как на геймерских видеокартах. По задумке, хорошее централизованное охлаждение должно стоять в корпусе сервера.

Нюанс в том, что эти старенькие GPU работают под максимальной нагрузкой. Придется прикрутить какой-нибудь нормальный вентилятор или даже водянку.

В интернете продаются различной хитроумности решения, которые можно нагуглить по словосочетанию "охлаждение nvidia p40 купить". Приспосабливать эти штуки к корпусу GPU или корпусу системного блока всё равно придется самостоятельно.

Материнская плата

Нам нужна материнская плата с 4 равсположенными рядом слотами PCEe Gen 3.0 x16.

Сэкономлю вам время на игру в "Что Где Когда": в нотации магазина DNS это записывается как "материнская плата 4xPCI-Ex16". Проблема в том, что стоят они от 20 тысяч. И в продаже есть карты только для самых современных процессоров (таких как Threadripper третьего поколения со слотом sTRX4, который сам себе обойдется в пол-миллиона рублей).

Еще пара вещей. На материнке должен быть чип PLX или что-то подобное для управления линиями, чтобы не упереться в пропускную способностью. Хорошо, если все слоты PCI-Ex физически стоят рядом параллельно и на примерно равном расстоянии. На случай, если вы купите более современные карты, и возможно, на них будет NVLink. Есть куча странных материнских плат, где слоты параллельные, но между ними километровое расстояние, заполненное цветными лампочками и радиаторами.

Итого: материнскую плату и процессор тоже придется искать и покупать на каких-то складах древностей. Например, можно посмотреть на серверные материнки с китайскими процессорами Xeon с Алиэкспресса.

Корпус

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

Одна из опций - взять серверный корпус. К сожалению, серверный корпус дико шумит, и ему полагается стоять в шумоизолирующей серверной стойке. Стойка стоит внушительных денег, весит тонну, с непривычки собирается сутки, и занимает кучу места в доме. Поверьте человеку, у которого стоит такая стойка, и который хочет ее выбросить сразу же, как появится такая возможность.

Придется изворачиваться и с линейкой перепробовать кучу обычных домашних корпусов.

Софт

Скорей всего, софт неидеально заточен на использование нескольких GPU. Тот же ComfyUI не умеет в многоядерность. Его форк StableSwarm UI — уже умеет, но максимально тупо, распараллеливание идет на уровне отдельных больших задач, а не внутри одной задачи.

Под капотом у них PyTorch. Если вы что-то понимаете в разработке под Python — вы могли бы неплохо помочь и себе, и сообществу, добавив в ComfyUI эффективную утилизацию железа. На элементарном уровне, можно использовать DataParallel и тому подобное: model = torch.nn.DataParallel(model, device_ids=[0, 1]).

Конечно, нужно включить NVIDIA MPS/NCCL. Установить CUDA toolit, NCCL. Запустить nvidia-cuda-mps-control, запустить MPS-сервер и выделить ресурсы. Прописать в переменных окружения export NCCL_DEBUG=INFO и export NCCL_P2P_DISABLE=0.

Это какая-то достаточно широкая тема. Вы наверняка разбираетесь в ней лучше, поэтому на этом мои рекомендации заканчиваются.

Тем не менее, аппаратного NVLink от всей этой софтовой эквилибристики не появится. Если нужен NVLink, стоит посмотреть на RTX 2080 Ti или Tesla V100.

Выводы

NVIDIA P40 кажется хорошей идеей, если ты гоняешь маленькие модельки, готов пройти сквозь технические трудности и жить рядом с большим шумным системным блоком, жрущим кучу электроэнергии. Мы живем не в Европе, поэтому с электроэнергией у нас проблем нет. Чего не скажешь о шуме.

Другой путь — это купить одну-две карты NVIDIA RTX4090 24Gb.

Третий — дождаться выхода следующей "народной" карты для AI, которую Nvidia должны скоро выпустить. Не то, чтобы они были обязаны, но спрос на "домашнее" применение AI слишком велик.

Я продолжаю наблюдение и в следущих статьях, или нашем Telegram-канале обязательно сообщу о выбранном пути.



🍺 Поблагодарить автора

Не забывайте подписаться на наши ресурсы, там есть ништяки: