Распределение веса модели в памяти двух видеокарт в stable-diffusion.cpp
Современные диффузионные модели генерации изображений класса DiT (Diffusion Transformers), например, FLUX, для комфортной работы требуют больших массивов видеопамяти (десятки ГБ VRAM). Поэтому их локальный запуск на видеокартах прошлых поколений подчастую является невозможным или трудно реализуемым. Попытка запустить мало-мальски приличную по размеру и возможностям модель на одной карте с объемом 6 ГБ приводят либо к критической ошибке нехватки памяти (Out of Memory, OOM), либо к катастрофическому падению скорости из-за постоянной откачки слоев в системную оперативную память (SysMEM fallback) по относительно медленной шине PCI-Express. В статьях «stable-diffusion.cpp — отличная альтернатива ComfyUI» и «Генерация картинок в zimage-turbo на 6GB видеокарте» были рассмотрены некоторые возможности инференс-движка stable-diffusion.cpp по генерации изображений. При дальнейшем, более глубоком…
Генерация картинок в zimage-turbo на 6GB видеокарте
В предыдущей статье «stable-diffusion.cpp — отличная альтернатива ComfyUI» подробно рассматривались особенности компиляции, тонкой настройки и развёртывания проекта sd.cpp в среде Linux на примере дистиллированной DiT-модели Z-Image-Turbo и гибридной связки из серверного ускорителя Nvidia Tesla V100 и бытовой видеокарты GeForce GTX 1660 Ti. Настоящий материал развивает эту тему и призван ответить на практический вопрос: насколько эффективно современный инференс-движок на базе библиотеки GGML справляется с генерацией изображений на аппаратных конфигурациях начального уровня, лишённых специализированных тензорных ядер (Tensor Cores). В качестве основного вычислительного узла в статье рассматривается та же Nvidia GeForce GTX 1660 Ti с 6GB VRAM (архитектура Turing). Физический объём её видеопамяти накладывает жёсткие ограничения: в него способны уместиться лишь легковесные квантованные…
stable-diffusion.cpp — отличная альтернатива ComfyUI
При использовании нейросетей для работы с картинками, видео и музыкой часто используется окружение ComfyUI. Это заслуживающий доверия инструмент, позволяющий работать со сложными многоузловыми пайплайнами, ControlNet-цепочками, используя кастомные ноды сообщества и визуальный дебаг. Благодаря этому ComfyUI фактически не имеет сравнимой по функционалу альтернативы. Если пользователю не нужен столь богатый набор опций, доступный в ComfyUI, но нужно по максимуму «выжать соки» из своего оборудования, можно задействовать программу stable-diffusion.cpp от разработчика, известного на github под ником leejet: stable-diffusion.cpp — это движок инференса без визуального конструктора пайплайнов, схожий с llama.cpp, прекрасно подходящий для локальной AI-генерации и обработки изображений/видео и подобных задач, но менее требовательный к VRAM и подходящий для серверного inference. Основные отличия stable-diffusion.cpp…
Настройка AI-воркера распределенной сети llama.cpp на видеокартах AMD с Vulkan
На компьютере с видеокартами AMD с Vulkan (например, Radeon RX570 8GB) можно не обращать внимание на совместимость gcc с CUDA Runtime, задействуя самую новую версию компилятора. Собираем llama.cpp на воркере (под управлением gentoo linux): git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp cmake -B build -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release -DGGML_RPC=ON -DCMAKE_C_FLAGS="-O3 -march=native -pipe" -DCMAKE_CXX_FLAGS="-O3 -march=native -pipe" && cmake --build build --config Release -j$(nproc) -- The CXX compiler identification is GNU 15.3.0 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done CMAKE_BUILD_TYPE=Release -- Found Git: /usr/bin/git (found version "2.54.0")…
Запуск llama.cpp в распределенном режиме по локальной сети
Запуск llama.cpp в распределенном режиме по локальной сети позволяет без лишних затрат увеличить доступный для запуска AI-моделей объем памяти, объединив вычислительные мощности (CPU и/или GPU) нескольких компьютеров для инференса одной модели. При инференсе можно будет задействовать видеокарты разных архитектур и производителей, на компьютерах-воркерах могут быть установлены любые операционные системы. Преимуществом такого способа является сохранение полной пропускной способности шины PCI-E, которая урезается до минимума в multi-GPU системах. Для распределенных вычислений на воркерах сети запускается ggml-rpc-server, создаваемый по умолчанию при сборке llama.cpp (подробнее в статьях Компиляция и работа с llama.cpp для GPU Nvidia в linux и Запуск AI-моделей в llama.cpp на AMD Radeon RX470 8GB с Vulkan в gentoo). Во время работы…
Разгон и даунвольтинг видеокарт Nvidia в Linux
Чтобы управлять на видеокартах Nvidia мощностью, разгоном по памяти и ядру, а также скоростью вращения вентиляторов в linux часто используют утилиты nvidia-settings, nvidia-smi и команды: sudo nvidia-smi -pm 1sudo nvidia-smi -i 0 -pl 100sudo nvidia-settings -a '[gpu:0]/GPUFanControlState=1'sudo nvidia-settings -a '[fan:0]/GPUTargetFanSpeed=35'sudo nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[3]=450'sudo nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffset[3]=130'sudo nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1' В этом случае скорость вращения вентиляторов устанавливается на заданное значение, которое не всегда является оптимальным. В простое видеокарты создают лишний шум, происходит выработка ресурса подшипников, а в режиме максимальной нагрузки на GPU, наоборот, такого потока воздуха может не хватать. Для решения проблемы можно использовать скрипт, задействующий библиотеку nvml. При этом можно будет добиться не только управления частотами и скоростью вращения fan,…
llama.cpp на двух компьютерах через прямое соединение
Для увеличения доступного объема VRAM при локальных AI-вычислениях можно использовать распределённый инференс больших моделей между двумя машинами, соединёнными патч-кордом напрямую (без свитча), через встроенный RPC-backend llama.cpp. Он специально создан для распараллеливания инференса одной нейросети на нескольких компьютерах (технология pooling VRAM — запуск моделей, которые не влезают в память одной видеокарты). В режиме rpc одна машина выступает координатором (запускает llama-cli или llama-server), другая — вычислительным узлом (rpc-server), который просто исполняет операции над тензорами по сети. При этом слои модели распределяются между локальными GPU и удалёнными узлами. Важно понимать ограничения такой «солянки»: Это не настоящий tensor-parallelism с overlap вычислений и передачи данных, здесь каждый слой считается последовательно, и пока узел B не…
ComfyUI генерирует чёрный квадрат/артефакты вместо изображения. Что делать?
Иногда после успешного прохождения цикла генерации в ComfyUI вместо ожидаемого изображения появляется чёрный квадрат, серый шум, сильные цветовые артефакты или полностью испорченная картинка. Пример сбоя (промпт: «A fashion photography work full of surreal romanticism, using a low-angle upward shooting composition, with a clear light blue sky as the background, and the visual focus concentrated on the fantasy blue vegetation and the model walking through it»): Генерация «Черного Квадрата» Малевича вместо желаемого промта: Подобные ошибки могут возникать из-за следующих причин: Чтобы исправить генерацию цветового шума/черных квадратов вместо желаемого изображения можно использовать следующие способы: Рекомендуется использовать надёжный VAE, например: Кроме того, можно попробовать добавить Load VAE → VAEDecode из стандартных официальных нод,…
«Никелирование» llama.cpp на компьютере с несколькими GPU Nvidia
Программное окружение llama.cpp является одним из лучших инструментов для работы с локальными AI-моделями. Сообщество активно развивает проект: регулярно появляются новые оптимизации, поддержка аппаратных ускорений и рост скорости инференса. Одной из «фишек» llama.cpp является поддержка практически любых видеокарт, а также возможность распределения больших AI-моделей на нескольких видекоартах. В этом случае большое влияние на скорость проведения вычислений оказывает полоса пропускания общей шины памяти, то, насколько быстро производится обмен данными между GPU, CPU и RAM компьютера. Упрощенная формула для расчета скорости инференса в зависимости от пропускной способности памяти: Реальная скорость проведения вычислений ниже теоретической, зависит от bandwidth памяти и скорости interconnect между картами. Из-за различных задержек система выдает около 60–90% от максимума. Для…
Отключение USB‑контроллеров и аудио-устройств видеокарт для освобождения ресурсов шины PCI-E в Linux
Для ускорения инференса в multiGPU-системе критически важно обеспечить максимальную пропускную способность обмена между видеокартами по шине PCI-E. Для этого можно отключить все неиспользуемые устройства, подключенные к ней, например, аудио, а также обычно неиспользуемые VirtualLink USB-контроллеры видеокарт (работают через DisplayPort на VR-устройствах). Снижение нагрузки на шину PCI-E, уменьшение потребления ресурсов, отключение ненужных драйверов улучшит стабильность и производительность системы, что особенно важно в мульти-GPU конфигурациях. Изучить информацию о подключении видеокарт Nvidia к шине PCI-E можно по команде: lspci | grep -E "USB|Audio" | grep -i nvidia 01:00.1 Audio device: NVIDIA Corporation TU116 High Definition Audio Controller (rev a1)01:00.2 USB controller: NVIDIA Corporation TU116 USB 3.1 Host Controller (rev a1)01:00.3 Serial bus controller:…



























