Новая железка, старые грабли
Ты купил RTX 5060 Ti. В теории - зверь для локальных LLM. В практике - запускаешь llama.cpp и получаешь красивый краш с "CUDA illegal instruction". Карта вроде работает, игры запускаются, но нейросеть - нет. Знакомо? Это не твоя вина. Это классический случай, когда новое железо обгоняет софт.
Ошибка "illegal instruction" означает, что процессор (в данном случае - GPU) получил команду, которую не понимает. Как если бы ты заговорил на древнегреческом с современным подростком.
Почему это происходит именно с RTX 5060 Ti?
RTX 5060 Ti построена на архитектуре Blackwell. В ней есть новые инструкции CUDA, которых не было в предыдущих поколениях. Llama.cpp, особенно если ты скачал готовую сборку или компилировал её месяц назад, просто не знает об этих инструкциях.
Ситуация напоминает историю с прекращением поддержки Pascal, только наоборот - не софт отстал от железа, а железо ушло вперёд.
Диагностика: что сломалось и где
Прежде чем лезть в компиляцию, убедись, что проблема именно в этом. Запусти простой тест:
- Открой терминал
- Выполни nvidia-smi - убедись, что драйвер видит карту
- Проверь версию драйвера: должно быть 555.xx или выше
- Запусти nvcc --version - если установлен CUDA Toolkit
| Что проверяем | Ожидаемый результат для RTX 5060 Ti | Если не так |
|---|---|---|
| Драйвер NVIDIA | 555.xx или новее | Обновить через официальный сайт |
| CUDA Runtime | 12.4 или новее | Установить CUDA Toolkit 12.4+ |
| Compute Capability | 9.0+ | Перекомпилировать llama.cpp |
1 Обновляем всё, что можно обновить
Начни с самого простого. Зайди на сайт NVIDIA и скачай последние драйверы. Не через GeForce Experience - там часто отставание. Прямо с сайта, выбрав RTX 5060 Ti и свою ОС.
После установки драйверов перезагрузись. Серьёзно, не пропускай этот шаг. Я видел десятки случаев, когда проблема решалась обычной перезагрузкой после обновления драйверов.
2 Ставим правильный CUDA Toolkit
Если у тебя стоит CUDA Toolkit 11.x или даже 12.0-12.3 - удаляй. RTX 5060 Ti требует 12.4 как минимум. Качаем с официального сайта NVIDIA, выбираем версию под свою ОС.
Важный момент: не ставь CUDA Toolkit через apt-get в Ubuntu, если хочешь последнюю версию. Репозитории Ubuntu обычно отстают на несколько месяцев. Качай .run файл прямо с сайта NVIDIA.
3 Клонируем свежий llama.cpp
Если ты качал llama.cpp месяц назад - забудь. Удали старую папку полностью. Архитектура Blackwell появилась недавно, и поддержка добавлялась постепенно.
Открывай терминал и делай:
- Переходи в папку, где хочешь собрать проект
- Клонируем репозиторий: git clone https://github.com/ggerganov/llama.cpp
- Заходим внутрь: cd llama.cpp
- Обновляем до последней версии: git pull
4 Компилируем с правильными флагами
Вот здесь большинство ошибается. Нельзя просто сделать make. Нужно явно указать, для какой архитектуры компилируем.
Создаём папку для сборки:
- mkdir build
- cd build
Теперь самая важная команда. Запускаем cmake с указанием архитектуры:
- cmake .. -DCMAKE_CUDA_ARCHITECTURES="90" -DLLAMA_CUDA=ON
Ключевой момент: "90" - это Compute Capability 9.0 для Blackwell. Если указать "80" (для Ampere) или "75" (для Turing) - получишь ту самую illegal instruction.
После cmake запускаем сборку:
- make -j$(nproc)
Готово. В папке build/bin появится свежий бинарник llama.cpp, который понимает твою RTX 5060 Ti.
А если не помогло? Дополнительные проверки
Бывает, что всё сделал правильно, а ошибка остаётся. Тогда копаем глубже.
Проверка 1: Системные библиотеки
Убедись, что у тебя установлены все необходимые зависимости. В Ubuntu/Debian:
- sudo apt update
- sudo apt install build-essential cmake git
- sudo apt install libcurl4-openssl-dev
Проверка 2: Конфликт версий CUDA
Иногда в системе остаются старые версии CUDA. Проверь переменные окружения:
- echo $PATH - посмотри, нет ли там старых путей к CUDA
- echo $LD_LIBRARY_PATH - то же самое для библиотек
Если видишь пути к CUDA 11.x - удали их из .bashrc или .zshrc.
Проверка 3: Проблема с моделью
Редко, но бывает: проблема не в llama.cpp, а в конкретной модели. Попробуй скачать другую модель, желательно свежую. Некоторые старые квантования могут иметь проблемы с новыми архитектурами.
Кстати, о выборе моделей - у меня есть отдельный обзор для RTX 5080, но большинство рекомендаций подойдёт и для 5060 Ti.
Чего делать НЕ надо
Видел в интернете "советы", которые только усугубляют ситуацию. Запомни раз и навсегда:
- Не откатывай драйверы до старых версий. RTX 5060 Ti требует новых драйверов. Откат приведёт к другим ошибкам.
- Не используй флаг -DLLAMA_CUDA=OFF. Да, llama.cpp заработает на CPU, но зачем тогда тебе RTX 5060 Ti?
- Не качай готовые сборки с GitHub Releases. Они почти всегда скомпилированы для старых архитектур.
- Не игнорируй ошибки компиляции. Если cmake ругается на отсутствие CUDA - значит, не установил CUDA Toolkit.
Почему это происходит только с llama.cpp?
Справедливый вопрос. Игры работают, Blender рендерит, а llama.cpp - нет. Дело в том, что игры и большинство коммерческого софта используют драйверы высокого уровня. Llama.cpp же работает почти напрямую с CUDA, через низкоуровневые вызовы.
Это как разница между ездой на машине с автоматической коробкой (игры) и управлением гоночным болидом с механической КПП (llama.cpp). В первом случае система сама подстраивается под железо. Во втором - ты должен точно знать, какие передачи переключать.
Похожая ситуация бывает при сборке llama.cpp для нестандартного железа - там тоже нужно точно указывать архитектуру.
Что делать, если совсем ничего не помогает
Есть nuclear option. Полная очистка системы от всего NVIDIA и установка заново. Порядок действий:
- Удаляем все пакеты NVIDIA: sudo apt purge nvidia*
- Удаляем CUDA Toolkit: sudo rm -rf /usr/local/cuda*
- Чистим кэш apt: sudo apt autoremove
- Перезагружаемся
- Устанавливаем драйверы заново с сайта NVIDIA
- Устанавливаем CUDA Toolkit 12.4+
- Перекомпилируем llama.cpp как описано выше
Это радикально, но работает в 99% случаев.
Профилактика на будущее
Чтобы не сталкиваться с такими проблемами при следующем апгрейде:
- Всегда компилируй llama.cpp сам, не используй готовые бинарники
- При компиляции указывай несколько архитектур: "75;80;90" покрывает Turing, Ampere и Blackwell
- Подписывайся на репозиторий llama.cpp в GitHub - там появляются новости о поддержке новых архитектур
- Перед покупкой новой карты гугли "llama.cpp + название архитектуры" - смотри, есть ли уже поддержка
Кстати, если планируешь апгрейд на две карты, почитай про NVLink для RTX 3090 - многие моменты актуальны и для новых поколений.
Самая частая ошибка, которую я вижу: люди компилируют llama.cpp один раз и потом год используют одну и ту же сборку. Железо обновляется каждые 12-18 месяцев. Перекомпилируй llama.cpp хотя бы раз в полгода, даже если ничего не менял в системе.
А что с другими фреймворками?
Llama.cpp - не единственный, кто страдает от новых архитектур. TensorFlow, PyTorch, ONNX Runtime - у всех похожие проблемы. Разница в том, что у них обычно есть готовые wheels с поддержкой новых архитектур. С llama.cpp ты всё делаешь сам, поэтому и ответственность за совместимость лежит на тебе.
Если совсем надоело возиться с компиляцией, посмотри в сторону Ollama или текстовых веб-UI с автоматической сборкой. Но имей в виду: они добавляют оверхед, и производительность будет ниже, чем у нативно скомпилированного llama.cpp.
В конечном счёте, умение самостоятельно компилировать llama.cpp под своё железо - это скилл, который отделяет продвинутых пользователей локальных LLM от новичков. RTX 5060 Ti просто дала тебе повод этот скилл прокачать.