«Я тебя завалю, если ещё раз упомянешь AI», — писал автор нашумевшей статьи. В самом деле, хайп вокруг ИИ всем надоел. Но мы всё-таки рискнём поговорить о том, какую LLM поставить на своём сервере и зачем.
Сразу упомянем, что на серверах RUVDS установлены видеокарты NVIDIA Quadro P4000 (на фото). Карты довольно слабенькие, так что подойдут скорее для проектов в образовательных целях и т. д. Тем более что под VPS выделяется максимум 1 ГБ видеопамяти. Но даже в таких спартанских условиях можно запустить LLM.
Кстати, о VPS с видеокартой. Несколько лет назад мы уже писали о сферах их применения и даже проводили тесты. Всё это можно найти здесь.
▍ Что установить?
Инструмент llamafile позволяет упаковать любую LLM в один исполняемый файл, пригодный для транспортировки и запуска на любом сервере. Инструмент объединяет в себе llama.cpp и Cosmopolitan Libc.
Для примера можно скачать исполняемый llama-файл для модели LlaVA (современная модель с чатом и распознаванием картинок): llava-v1.5-7b-q4.llamafile (4,29 ГиБ). Потом просто открываем терминал и даём разрешение на запуск (однократно):
chmod +x llava-v1.5-7b-q4.llamafile
Потом запускаем:
./llava-v1.5-7b-q4.llamafile
Теперь LLM доступна для общения через браузер по адресу http://localhost:8080/.
Под Windows то же самое, только предварительно нужно переименовать файл в
.exe
.В репозитории llamafile много файлов для прочих LLM, если не хочется создавать файл самому, например:
Модель | Размер | Лицензия | Файл |
---|---|---|---|
LLaVA 1.5 | 3,97 ГБ | LLaMA 2 | llava-v1.5-7b-q4.llamafile |
TinyLlama-1.1B | 2,05 ГБ | Apache 2.0 | TinyLlama-1.1B-Chat-v1.0.F16.llamafile |
Mistral-7B-Instruct | 3,85 ГБ | Apache 2.0 | mistral-7b-instruct-v0.2.Q4_0.llamafile |
Phi-3-mini-4k-instruct | 7,67 ГБ | Apache 2.0 | Phi-3-mini-4k-instruct.F16.llamafile |
Mixtral-8x7B-Instruct | 30,03 ГБ | Apache 2.0 | mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile |
llamafile
работают вообще без GPU. Оптимизация для CPU была одной из целей при разработке проекта.Ниже указана производительность двух LLM в
llamafile-0.7
на компьютере/сервере Intel Core i9-14900K ($530) с памятью 6400 MT/s RAM без использования GPU:Промпты токенов/с |
Eval токенов/с |
Модель | Тип данных весов |
---|---|---|---|
63 | 12 | Mistral 7b | q8_0 |
50 | 7 | Mistral 7b | f16 |
406 | 67 | TinyLlama 1.1B | q8_0 |
407 | 42 | TinyLlama 1.1B | f16 |
На мощных процессорах Ryzen Threadripper PRO 7995WX производительность вывода и оценки в 5−7 раз выше, чем на Intel Core i9-14900K, тоже без использования GPU.
Для селфхоста предлагается много других разнообразных инструментов. Например, опенсорсная программа Khoj работает и с онлайновыми моделями типа GPT4, и с локальными LLM вроде llama3. После установки на сервере доступ к ней возможен из Obsidian, Emacs, десктопного приложения, через веб или WhatsApp. Система решает стандартный набор задач: отвечает на вопросы, проводит поиск в интернете, принимает для обработки документы в разных форматах, позволяет настроить агентов. См. онлайн-демо — такой же интерфейс можно установить на своём сервере.
Для запуска моделей рекомендуют использовать программное обеспечение Ollama. Через него запускаются Llama 3, Phi 3, Mistral, Gemma 2 и другие модели.
Под Linux программа Ollama устанавливается скриптом:
curl -fsSL https://ollama.com/install.sh | sh
Как вариант, вместо Ollama можно установить LM Studio.
В любом случае, специалисты рекомендуют брать VPS с большим количеством оперативной памяти: минимум 64 ГБ RAM для модели размером 70B. Хотя для маленькой модели 7B хватит и 16 ГБ.
▍ VPS с GPU
В конфигураторе RUVDS можно добавить видеопамять к серверу. Опция доступна только под Windows Server 2016 на мощных ядрах в дата-центре Rucloud.
Максимально можно заказать 1 ГБ видеопамяти:
На сервере сразу начинается установка операционной системы:
После начала работы сервера запустим на нём консоль PowerShell, из которой и будем устанавливать необходимые инструменты для работы с LLM (об этом ниже).
Как мы уже упоминали, в дата-центрах физически используются видеокарты NVIDIA Quadro P4000.
Характеристики NVIDIA Quadro P4000:
-
Графический процессор: GP104.
-
Память: GDDR5 8 ГБ, интерфейс 256 бит, пропускная способность до 243 ГБ/с.
-
Ядра CUDA: 1792.
- Энергопотребление: 105 Вт.
Как видим, видеокарта довольно слабая. Вопрос в том, какие LLM потянет эта GPU, тем более максимально можно заказать 1 ГБ видеопамяти. Можно сказать, что мы запускаем модели практически на чистом CPU, без видеокарты.
▍ LLM для слабых серверов и ПК
PowerInfer — производительная LLM, которая работает на простом ПК или сервере с обычной GPU вроде NVIDIA RTX 4090.
Опенсорсная модель для генерации видео OpenSora тоже неплохо чувствует себя на потребительских GPU: например, на GeForce RTX 3090 можно генерировать видеоролики до 240p и 4 с. Генерация занимает примерно 30 для двухсекундного видео и около минуты для четырёхсекундного.
Неплохо для домашней видеокарты, но на инстансе RUVDS она вряд ли запустится. Хотя никто не мешает вам попробовать — 3 дня для теста сервера мы даём бесплатно всем новым клиентам.
Говорят, что на выделенном сервере с 128 ГБ RAM без видеопамяти технически возможно запустить даже Code Llama 70B (ассистент для программирования). Если видеопамять вообще отсутствует, вывод модели будет крайне медленным, примерно одно слово в минуту. Скорость работы моделей на различном оборудовании можно оценить на сайте Artificial Analysis. Но у нас в максимальной конфигурации можно выбрать VPS только с 16 ГБ.
Так что в нашей реальности придётся запускать модели размером 7B, а не 70B. Можно посмотреть варианты модели Mistral и TinyLlama, в том числе перечисленные выше. У них минимальные требования к оперативной и видеопамяти.
Вообще, самые маленькие модели работают даже на смартфонах (например, Gemini Nano на смартфоне Pixel 8 Pro).
▍ Установка LLM
Итак, есть несколько способов установки LLM на свой ПК/сервер. Они довольно простые.
Самый простой способ. Скачиваем исполняемый файл
llamafile
для любой модели. Например, mistral-7b-instruct-v0.2.Q4_0.llamafile
(3,9 ГБ) для модели Mistral-7B-Instruct. Переименуем его в .exe
— и запускаем на исполнение:.\mistral-7b-instruct-v0.2.Q4_0.exe
В браузере автоматически открывается страница с веб-интерфейсом локальной LLM (встроенный веб-сервер доступен по адресу http://localhost:8080/):
Альтернативный способ. Устанавливаем LM Studio, где в графическом интерфейсе выбираем модели для локальной установки:
LM Studio тоже включает в себя HTTP-сервер, который запускается на локалхосте и доступен для внешних подключений (кнопка «Local Server» на левой панели).
На нашей конфигурации VPS запускаются модели Mistral 7B Instruct, Stable Code Instruct 3B и другие.
Сервер Stable Code Instruct 3B:
Сервер Mistral 7B Instruct:
После запуска сервера к API можно подключаться по адресу
http://195.133.49.54:1234
, в зависимости от IP-адреса сервера и установленного рабочего порта.▍ Сравнение моделей
Актуальный рейтинг LLM см. на Chat Arena, на данный момент в него входит 115 моделей:
Рейтинг составляется по итогам P2P-битв (сравнений) между моделями. На диаграммах показан винрейт:
… и P2P-результаты в каждой паре:
Это самый популярный рейтинг. Кроме него есть ещё HuggingFace, OpenCompass и др.
На Хабре в ноябре 2023 года писали, что модель Mistral 7B LoRA лучше всех (из бесплатных) справляется с русскими текстами без дообучения.
▍ Зачем хостить LLM на своём сервере
Зачем хостить LLM на своём сервере? Например, можно установить там собственного ИИ-помощника для программирования вроде Tabby. В отличие от Copilot, он работает на своём хостинге и поэтому не представляет угрозы для безопасности, может принимать приватные данные и не будет использовать ваш код для обучения и подсказок другим людям.
Есть множество опенсорсных решений для поднятия своих ИИ-систем и обработки своих данных. Например, платформа MindSB, которая позволяет развёртывать, обслуживать и настраивать модели в режиме реального времени, используя данные из БД, векторных хранилищ или приложений, для создания корпоративных ИИ-приложений с использованием универсальных инструментов, уже знакомых разработчикам. В целом, это мощная платформа для создания корпоративных приложений.
Ну или просто запустить свою ИИ-девушку, которая будет доступна 24 часа в сутки с любого вашего устройства. Как вариант, предоставить такой сервис другим людям. Это первая фантазия, которая приходит в голову.
Упомянутая русскоязычная модель Mistral 7B LoRA выполняет все типичные задачи:
- генерация текста;
- генерация кода;
- вопрос-ответ;
- чат (беседа);
- аналитические задачи;
- классификация;
- обработка текста;
- исправление ошибок;
- перевод;
- суммаризация;
- поиск информации;
- извлечение структурированной информации;
- и т. д...
Правда, придётся немного потрудиться, чтобы запустить её конкретно на нашем VPS. Можно попробовать самостоятельно упаковать кастомную версию Mistral 7B LoRA в
llamafile
.Telegram-канал со скидками, розыгрышами призов и новостями IT ?
Комментарии (13)
ciuafm
24.07.2024 09:37Честно говоря статью неосилил. Может кто-то подсказать, для работы обученной сети на 4/8@3.0 64 ГБ процессоре нужно ли возится с подключением GPU 1060 6ГБ которая есть или это ничего не изменит в плане производительности?
Dominux
24.07.2024 09:37Процессоры бесполезны для подобных задач, графические ускорители применяются для этого чаще всего. Есть также TPU и NPU, ещё больше подходящие для данных целей, но сервера с ними предоставляются лишь бигтехом, вроде GCP и AWS
inkelyad
24.07.2024 09:37Процессоры бесполезны для подобных задач, графические ускорители применяются для этого чаще всего.
А вот, кстати, насколько бесполезны? Если у меня есть сетка в условные 500 слоев, я загружу эту сетку в 500 штук ну... RasberryPi в режиме слой-на-железку --- то что получится?
Shannon
24.07.2024 09:37Единственное что важно - это пропускная способность памяти.
Допустим у вас 512гб памяти, память работает на 50гб/с (2х канальная ddr4), а модель имеет размер 500гб, то вы получите скорость 0.1 токен в секунду, так как веса модели будет обходиться 10 секунд при такой скорости и таком размере. Если модель весит 50гб, и память 50гб/с, то вы получите 1 t/s и т.д.
Именно поэтому в профессиональных GPU не DDR6, а HBM, достигающая 3-4 Тб/с у H100.
Dominux
24.07.2024 09:37А вот, кстати, насколько бесполезны? ... RasberryPi в режиме слой-на-железку --- то что получится?
-
Там важно распораллеливание вычислений. И если CPU-bound занимает по ядру, то у обычных CPU обычно ядер 1-24 (не знаком особо с кол-вом ядер в расбери, но думаю там на порядки хуже, чем даже на офисном ПК, что уж говорить о ПК с хорошими процами)
И того десяток ядер CPU против тысяч CUDA-ядер в GPU. Что будет эффективнее?
Кол-во инструкций CPU-ядра слишком большое для операций перемножения матриц, в итоге ядра сами по себе используются менее оптимальнее. В этом плане, кстате, сам GPU проигрывает TPU, т.к. тоже содержит лишние инструкции
Ниже уже написали про пропускную способность памяти, повторяться не буду, просто выделю как пункт
условные 500 слоев
Не знаю нейронок на 500 слоев, знаю на десятки слоев, да и те - обучаются уже точно не на своих машинах и серверах, а крупными компаниями, которые могут позволить себе огромные инфраструктуры для таких вычислений. Плюс, слои разные бывают, те же трансформеры обычно не содержат много слоев, но при этом демонстрируют результаты в разы превосходящие предыдущие поколения NLP, использовавших порой десятки слоев LSTM или GRU для более глубокого анализа контекста. При этом трансформеры требуют тех же огромных вычислительных мощностей для обучения, недаром ходят шутки про Илона, который говорит, что для обучения GPT-5 не хватит всей энергии человечества за пол года или год
-
Stanislavvv
24.07.2024 09:37Не знаю насчёт 500 слоёв и RPi, а вот та же нейросетка whisper на сервере с 48 ядрами еле-еле дотягивает до того, чтобы преобразовать звук в текст в реалтайма. При использовании видеокарты nvidia A4000 (не самая мощная в линейке, просто такую поставили под задачу) преобразует на скорости порядка 6:1 контейнером, которому отдали на всякий случай два ядра и, похоже, тормозит там не преобразование, а получение записи из хранилища.
Pol1mus
24.07.2024 09:37+2Забавный факт, яндексгпт через апи стоит в 84 раза дороже чем gpt 4o mini, а гигачат и вовсе в 111 раз. Есть ли какой то смысл гонять ллм локально с такими ценами.
SnakeSolid
24.07.2024 09:37+2Да, если не хотите делиться своими данными или нет возможности работать с ChatGPT. Я для своих проектов локальную ollama на своем компе держу, пока всем доволен.
piton369
24.07.2024 09:37Интересно, а какие проекты?
SnakeSolid
24.07.2024 09:37+1Поиск по документам, перевод комментариев в коде (с китайского на английский), перефразирование в разных стилях, генератор фраз и продолжение диалога для знакомств. Еще хочу свою локальную читалку перевести на нормализацию текста с помощью LLM, чтобы от кучи правил преобразования избавиться.
YuryVl
24.07.2024 09:37Добрый день! Возможно ли эту модель дополнительно обучить, например специализированно на перевод инструкции к лекарствам?
Hidon
у вас на первой картинке как будто не p4000, а gt210(у ней как раз гиг памяти), только написали quadro. или вы там что, делите мощность одной видяхи уровня переделанной 1060/недоделанной 1070 на много vps? и за такое кто-то ещё и деньги платит?