Домашний сервер на Tesla V100 32 ГБ для локальных моделей
Автор собрал домашний сервер на старой Tesla V100 32 ГБ и провёл замеры скорости локальных моделей до 120 млрд параметров. Часть первоначальных выводов оказалась ошибками измерения.
Автор с Хабра собрал домашний сервер для запуска локальных языковых моделей на старой серверной видеокарте Tesla V100-SXM2 на 32 ГБ с архитектурой Volta (compute capability 7.0), подключённой через переходную плату SXM2 → PCIe. По его оценке, карта до сих пор стоит примерно как современная видеокарта среднего класса, но объёма её памяти хватает, чтобы целиком разместить модель на 30 млрд параметров, а с дополнительными ухищрениями — и модель на 120 млрд параметров.
Стенд работал под управлением Ubuntu 26.04 с драйвером NVIDIA 580, процессором на 4 ядра и 30 ГБ оперативной памяти (позже автор докупил до 96 ГБ для отдельного эксперимента). Тестирование велось на двух движках с одними и теми же файлами GGUF: Ollama 0.34.2 и отдельно собранном llama.cpp с CUDA 12.9 и флагом CMAKE_CUDA_ARCHITECTURES=70. Скрипты и сырые результаты опубликованы в репозитории github.com/DmNep/llm-bench-v100.
Автор подчёркивает, что локальный запуск моделей в его проектах был нужен не ради экономии на подписке, а из соображений приватности и пропускной способности. В одном из проектов требовалось восстановить данные 1С из повреждённого файла базы после шифровальщика, и там были настоящие персональные данные живых людей, поэтому агентам по умолчанию давали работу со структурами и идентификаторами, а не со сводными таблицами. В другом проекте локально распознавался звук видеозаписи с голосовыми пояснениями, чтобы аудио не уходило в облако.
Методика замеров учитывала типичные ошибки: в каждом прогоне использовался случайный текст и случайный идентификатор в начале, чтобы кэш промпта Ollama не превращал чтение запроса в мгновенное. Размер запроса брался из поля prompt_eval_count ответа сервера, а не оценивался по словам, генерация фиксировалась на 128 токенах без случайности, итоговое число — медиана из трёх повторов. Для llama.cpp использовался эндпоинт /completion с полями tokens_evaluated и timings и отключённым кэшем промпта.
Сравнение движков показало, что на плотных моделях с кэшем f16 скорость генерации почти одинакова: QAT-версия Gemma и llama3.2:1b отличаются на 1–5%. Заметные расхождения возникают там, где отличаются настройки: на Qwen3-30B с большим окном Ollama быстрее, и разрыв растёт с длиной запроса (минус 17% на 1K и минус 49% на 67K), что автор связывает с использованием q8_0-кэша в llama.cpp. При этом llama.cpp честно возвращал ошибку, когда запрос не влезал в окно, тогда как Ollama молча обрезала его вдвое.
Отдельно автор отмечает недостоверность части цифр Ollama: для одного тега она показывала 2,1 ГБ памяти при весе файла 20,4 ГБ и скорость 56 токенов в секунду, что выше физического предела плотной 31B-модели на 900 ГБ/с (около 44 токенов в секунду). Тот же файл на llama.cpp дал 30 токенов в секунду и 23,7 ГБ видеопамяти, что выглядит правдоподобно. Причину расхождения выяснить не удалось, и автор призывает читателей критически относиться к чужим замерам без проверки методики.
Материал подготовлен ИИ-редакцией «Сигнала» как пересказ публикации первоисточника. Фактическую точность и подробности проверяйте по оригиналу.