golang

DeepSeek на железе за 45к

  • понедельник, 24 февраля 2025 г. в 00:00:04
https://habr.com/ru/articles/885056/

Джарвис — мечта многих гиков. Однако будем объективны: мы реально все ближе к его появлению. Я бы не очень хотел, чтобы все мои запросы передавались на серверы OpenAI, DeepSeek, Anthropic и других компаний. Ну и ещё с лета начал свою домашнюю рубрику — ЭЭЭЭКСПЕРИМЕНТЫ на домашнем сервере.

Я хотел собрать домашнюю станцию с полностью самостоятельной, self-hosted LLM моделью и настроить всё под себя. Однако я не знал, какой мощности сервер нужен, чтобы получить адекватную работоспособность. Практически не найти в сети нужные тесты, бенчмарки и эксперименты, так что, немного погрустив, нашел в шкафу свой старый добрый Intel NUC и понял — он и будет моим тестовым стендом!

Кратко по железу:

  • i5 8259U — 4 ядра, 8 потоков

  • 32 GB памяти — DDR4 2400

  • SSD 980 — NVMe 512 GB

В целом просто неплохая рабочая станция. Памяти достаточно, чтобы вместить в себя среднюю модель, а вот процессор, конечно же, слабоват. Однако я решил, пока не будут известны необходимые ресурсы для запуска больших моделей, посижу на этом 🙂

Однако пока экспериментировал, наткнулся на интересную статью, где парень разворачивал DeepSeek на своем железе. Прочитав её, я, конечно, взгрустнул, так как стоимость такого железа заставила бы прилично разориться. Однако статья меня вдохновила рассказать вам, как будет себя вести компьютер не за 30.000 долларов, а за 450 долларов! В общем, приступаем к обзору 🙂

Какие есть варианты запустить на сервере свою LLM?

Но как развернуть-то модели? На Hugging Face лежат тонны моделей на любой вкус и цвет, но чтобы запустить их, я совсем не хотел возиться с Python, да и хотелось что-то +/- подходящее для запуска на домашнем сервере без какой-либо серьезной настройки.

Поискав, нашел два варианта, в целом, оба хорошие, но немного разные и под разные задачи. Мы глубоко в них не будем копаться, лишь верхнеуровнево обсудим.

LocalAI

Безумно гибкий инструмент для локальной развертки моделей для разных задач. С одной стороны, он дает обратно совместимое OpenAI API, но помимо этого также дает API для других задач:

  1. Генерация текста

  2. Конвертация текста в аудио

  3. Транскрипция аудио в текст

  4. Генерация изображений

  5. Использование функций OpenAI

  6. Генерация эмбеддингов для векторных баз данных

  7. Работа с ограниченными грамматиками

  8. Загрузка моделей напрямую с Huggingface

  9. Доступ к Vision API для работы с изображениями

  10. Управление хранилищем данных

  11. Ренкинг (оценка релевантности и ранжирование результатов)

  12. P2P Inference (использование распределенной обработки данных)

И объективно, инструмент-то классный, но мне показалось, что оверкилл (ну и я его потестил, он, как мне показалось, не так хорошо работает, еще и сложнее в настройке).

Ollama

А вот тут гибкости не так много. Из преимуществ он также предоставляет обратно совместимое OpenAI API, но он гораздо проще с точки зрения конфигурации, а также очень прост в настройке и запуске. Фактически, он просто предоставляет возможности генерации текста и vision, чего, на самом деле, вполне хватит на большинство задач.

Но какую модель мы можем запустить на таком железе-то?

Тут принцип простой: фактически для корректной работы модель нужно умещать в памяти (RAM) — и тут все просто. У Ollama очень удобный сервис, фактически они вдохновлялись работой у Dockerhub — создали свой modelhub (кстати, ребята даже сделали свою альтернативу Dockerfile — Modelfile для конфигурирования моделей).

И дальше упираемся только в объем нашей памяти, а именно — на моем стенде всего 32GB памяти.

И с учетом моей прошлой статьи подумал, почему бы не взять в итоге сразу DeepSeek-r1 снова? Но флагманская версия весит аж полтерабайта, от чего, конечно же, явно ее не удастся запустить на моем железе. :D Но!

У них есть вариант на 32B, весящий всего 20GB, но по тестам не сильно уступающий флагманским моделям.

В общем, выбор был очевиден, а теперь самое интересное, на что она способна то?

Скорость оставляет желать лучшего... Фактически мы достигли скорости в районе 1 токена в секунду, что и в статье.

Но раз уже стенд был собран, не хотелось останавливаться и решил проверить, а какую скорость удастся получить на других моделях? В итоге нашел интересную модель, SmoLLM/2, которая фактически оптимизирована для работы на системах с ограниченным числом ресурсов, так что скорость ответа оказалась действительно неплохой. :D

Выводы

В общем, эксперимент получился интересным, но явно еще не законченным. Я планирую еще добавить несколько моделей и узнать их результат, однако мощности совсем не хватает (да и просто памяти тоже), от чего я задумался над идеей обновить свой домашний сервер на Minisforum. Однако мой Intel NUC, верой и правдой служивший столько лет, хочется отдать в добрые руки, так что я решил его разыграть среди подписчиков своего канала.

Ну и если ты хочешь чуть раньше видеть некоторые новости, а также увидеть тесты self-hosted LLM уже на minisforum, то милости прошу в канал. :)