ТЕХНОЛОГИИ

Перенос сборки llama.cpp на другую GPU: compute capability и CUDA targets

В этом материале
ГЛАВНОЕ ЗА МИНУТУ

При переносе llama.cpp CUDA binary на другую GPU проверьте, для каких архитектур он собран.

При переносе llama.cpp CUDA binary на другую GPU проверьте, для каких архитектур он собран. Ошибка отсутствующего kernel image может быть связана с targets сборки, а не с поврежденными весами. Отдельно учитывайте CPU instruction set. Для воспроизводимого переноса сохраните compiler, Toolkit, CUDA architectures и GGML_NATIVE, затем проверьте executable на целевой машине. Одного совпадения имени бинарника и успешного копирования файла недостаточно.

Разделите host и device код

Приложение содержит CPU код и GPU kernels. Руководство сборки llama.cpp описывает CUDA и параметры архитектур, а также настройки native оптимизации. Сборка, адаптированная к CPU исходной машины, может оказаться непереносимой независимо от GPU. Поэтому диагностика должна различать отказ запуска host executable и ошибку при первом CUDA вычислении. Не переустанавливайте модель, если процесс не может выполнить инструкцию либо найти подходящий device kernel: файлы весов находятся на другом слое причины.

Проверьте состав CUDA targets

Руководство NVCC объясняет PTX, Cubin и возможность нескольких targets внутри binary. Native compilation не является универсальной гарантией переносимости. Сопоставьте compute capability целевых GPU с тем, что поддерживает конкретный Toolkit и что включено в сборку. Не добавляйте произвольный SM номер по названию поколения без проверки. Сохраните фактические CMake значения и сообщения compiler, чтобы отличать намеренно ограниченную сборку от случайного автоматического выбора оборудования исходного узла.

Пример manifest переноса

Создайте таблицу с host CPU target, Toolkit version, compiler, CMAKE_CUDA_ARCHITECTURES, GGML_NATIVE и перечнем целевых машин. Заполните ее результатом сборки, а не желаемой конфигурацией. Для каждого узла добавьте запуск справки, обнаружение backend и короткий функциональный запрос. Это схема проверки, не обещание поддержки любой архитектуры. Успешная справка подтверждает только часть host пути; она не запускает все GPU kernels, поэтому считать ее достаточным smoke test для inference было бы ошибкой.

Диагностическая развилка

Если executable не стартует, исследуйте host зависимости и CPU ISA. Если стартует, видит GPU, но падает на вычислении, проверьте CUDA targets и совместимость runtime. Если модель загружается, но нужная операция не поддерживается, найдите ограничения конкретного backend или model architecture. Не смешивайте эти случаи в одно общее сообщение «CUDA не работает». Сохраните первую содержательную ошибку и build metadata до повторной установки: новый случайный бинарник может скрыть причину и сделать дальнейшее сравнение невоспроизводимым.

Примите целевую сборку

После исправления повторите проверку на каждом заявленном классе устройств и сохраните checksum binary вместе с manifest. Отдельно измеряйте производительность: более широкая совместимость не гарантирует одинаковые kernels или скорость на всех GPU. При обновлении Toolkit повторите список поддерживаемых targets и сборку, поскольку набор допустимых архитектур меняется. Полезный итог показывает, какие машины действительно проверены, какие лишь планируются и какие исключены конкретным toolchain. Он не объявляет архитектурную совместимость по объему VRAM или бренду видеокарты. Такая запись позволяет следующему оператору выбрать правильный пакет и понять, когда нужен rebuild, вместо бесконечного перебора quantization файлов или изменения context, не связанных с отсутствующим кодом для целевого устройства.

Связанные материалы

Установка vLLM: как проверить GPU, драйвер и сборку; llama.cpp на Windows: сборка и проверка выбранного backend.

← Все материалы