Тестирование производительности видеокарт на примере больших языковых моделей с использованием Llama.cpp. llama.cpp.. llama.cpp. llm.. llama.cpp. llm. бенчмарки.. llama.cpp. llm. бенчмарки. Видеокарты.. llama.cpp. llm. бенчмарки. Видеокарты. искусственный интеллект.. llama.cpp. llm. бенчмарки. Видеокарты. искусственный интеллект. Машинное обучение.. llama.cpp. llm. бенчмарки. Видеокарты. искусственный интеллект. Машинное обучение. машинное+обучение.. llama.cpp. llm. бенчмарки. Видеокарты. искусственный интеллект. Машинное обучение. машинное+обучение. нагрузочное тестирование.

В последнее время большие языковые модели (LLM) становятся все более популярными, но для их эффективного запуска требуется значительная вычислительная мощность. Один из способов запуска LLM локально – использование библиотеки Llama.cpp. В этой статье мы рассмотрим, как тестировать производительность видеокарт для LLM с использованием инструмента llama-bench, входящего в состав Llama.cpp.

Дисклеймер: Почему Llama.cpp, а не Ollama?

Прежде чем мы приступим к тестированию, важно объяснить, почему мы используем Llama.cpp напрямую, а не Ollama. Ollama – это удобная надстройка, упрощающая установку и запуск LLM. Однако, она добавляет дополнительный слой абстракции, который приводит к снижению производительности и ограничивает контроль над настройками. Llama.cpp же напротив предоставляет прямой доступ к аппаратным ресурсам и позволяет максимально оптимизировать запуск LLM на вашей системе. Если ваша цель – получить максимальную производительность и точно настроить параметры, Llama.cpp – отличный выбор.

Подготовка к тестированию

  1. Установка Llama.cpp: Скачайте и установите Llama.cpp. Инструкции доступны на GitHub-странице проекта. Убедитесь, что вы выбрали версию, соответствующую вашей операционной системе и архитектуре (например, llama-b5535-bin-win-vulkan-x64 для Windows с Vulkan). Так же можно использовать пакетный менеджер Winget: winget install ggml.llamacpp.

  2. Загрузка GGUF модели: Вам потребуется GGUF-модель. Вы можете скачать их с Hugging Face (например, TheBloke/Llama-2-7B-GGUF). Выбирайте модель, соответствующую вашим требованиям к размеру и качеству.

  3. Подготовка скрипта: Создайте текстовый файл со скриптом для запуска llama-bench.

Запуск llama-bench

Вот пример скрипта, который можно использовать для тестирования:

llama-bench ^
	--repetitions 25 ^
	--delay 5 ^
	--n-prompt 512 ^
	--n-gen 512 ^
	--ubatch-size 512 ^
	--flash-attn 1 ^
	--cache-type-k q8_0,f16 ^
	--cache-type-v q8_0,f16 ^
	--model C:HuggingFaceTheBlokeLlama-2-7B-GGUFllama-2-7b.Q4_0.gguf

Разъяснение параметров:

  • --repetitions: Количество повторений теста.

  • --delay: Задержка между повторениями (в секундах).

  • --n-prompt: Длина входного запроса (в токенах).

  • --n-gen: Длина генерируемого текста (в токенах).

  • --ubatch-size: Размер пакета для обработки. Увеличение этого значения может повысить производительность, но требует больше видеопамяти.

  • --flash-attn: Включение Flash Attention для ускорения вычислений (если поддерживается вашей видеокартой).

  • --cache-type-k q8_0,f16: Тип кэша для ключей.

  • --cache-type-v q8_0,f16: Тип кэша для значений.

  • --model: Путь к GGUF-модели.

Запустите скрипт из командной строки. llama-bench выведет результаты, включая время процессинга (pp512) и генерации (tg512) текста в токенах в секунду (tokens/s).

Анализ результатов и сравнение

Результаты, полученные с помощью llama-bench, можно использовать для сравнения производительности разных видеокарт, моделей и настроек. Обратите внимание на генерацию токенов в секунду (tg) – чем выше это значение, тем быстрее работает LLM.

Полезный ресурс для сравнения производительности Llama.cpp с Vulkan: Performance of llama.cpp with Vulkan. Здесь другие пользователи делятся своими результатами, что позволяет получить представление о производительности различных конфигураций.

Запуск локального сервера с llama-server

Для более удобного взаимодействия с LLM можно запустить локальный сервер с использованием llama-server. Это позволит обращаться к модели по API и использовать веб-интерфейс для тестирования и экспериментов.

Пример скрипта:

llama-server ^
    --host 0.0.0.0 ^
	--port <port> ^
    --log-file %USERPROFILE%.llama.cppllama-server.log ^
	--threads 5 ^
    --n-gpu-layers 99 ^
	--ubatch-size 512 ^
	--ctx-size 32768 ^
	--flash-attn ^
	--cache-type-k q8_0 ^
	--cache-type-v q8_0 ^
    --alias "gemma3:27b-it-qat" ^
	--model C:HuggingFaceunslothgemma-3-27b-it-qat-GGUFgemma-3-27b-it-qat-UD-Q3_K_XL.gguf ^
    --repeat-penalty 1.0 ^
    --temp 1.0 ^
    --min-p 0.05 ^
    --top-k 64 ^
    --top-p 0.95

Разъяснение параметров:

  • --host: IP-адрес для сервера.

  • --port: Порт для сервера.

  • --log-file: Файл для записи логов.

  • --threads: Количество потоков CPU. Выставьте это значение по количеству ядер вашего CPU – 1.

  • --n-gpu-layers: Количество слоев модели, переносимых на GPU. Начинайте с максимального и уменьшайте это значение до тех пор, пока не поместите модель видеопамять.

  • --ubatch-size: Размер пакета для обработки.

  • --ctx-size: Размер контекста (в токенах). Этот параметр зависит от размера видеопамяти. Необходимо подбирать его так, чтобы общая память видеокарты не использовалась, так как это ведет к снижению производительности.

  • --flash-attn: Включение Flash Attention.

  • --cache-type-k: Тип кэша для ключей.

  • --cache-type-v: Тип кэша для значений.

  • --alias: Псевдоним для модели (личное предпочтение, я например использую как у Ollama).

  • --model: Путь к GGUF-модели.

  • --repeat-penalty--temp--min-p--top-k--top-p: Параметры генерации текста.

После запуска сервера вы сможете обращаться к модели по API или используя веб интерфейс http://localhost:<port>.

Моя конфигурация

Я использую видеокарту AMD RX 7800 XT 16GB и Llama.cpp с Vulkan. Vulkan был выбран вместо ROCm, поскольку производительность немного выше, и дросселя не так сильно шумят. Этот выбор позволил мне получить оптимальную производительность при работе с LLM.

Заключение

Тестирование производительности видеокарт для LLM с использованием llama-bench – это важный шаг для выбора оптимальной конфигурации. Llama.cpp предоставляет широкий спектр настроек, позволяющих добиться максимальной производительности на вашей системе. Не забывайте экспериментировать с параметрами и сравнивать результаты, чтобы найти наилучший вариант для ваших задач.

Полезные ссылки

P.S. Если вы используете NVIDIA GPU, замените Vulkan на CUDA-сборки Llama.cpp для максимальной производительности.

Автор: COBECT

Источник

Rambler's Top100