Зачем вам это нужно, если есть облако?
Представьте, что ваш отдел аналитики целый день гоняет RAG-запросы по внутренней документации. Или ваша команда разработки использует код-генерацию для прототипов. Счет от OpenAI или Anthropic приходит на $2000, а вы не можете объяснить бухгалтерии, почему это "инфраструктура". Хуже того, вы не контролируете, куда уходят ваши файлы с финансовыми отчетами или исходным кодом.
Локальный сервер - это не про экономию (хотя она будет). Это про контроль. Вы решаете, какая модель работает, когда она обновляется и кто к ней имеет доступ. А доступ к файлам превращает вашу LLM из болтливого собеседника в настоящего аналитика, который знает всю вашу документацию.
Железо: собираем основу для монстра
Здесь нельзя ошибиться. Купите слабый процессор - будете ждать ответа модели 10 минут. Сэкономите на памяти - не запустите ничего крупнее 7B параметров. Выбор GPU вообще отдельная история.
1Процессор и платформа: почему Epyc 7313 - тихий убийца
Вам нужны ядра. Много ядер. Не для самой LLM (она в основном на GPU), а для всего остального: векторные базы данных, препроцессинг документов, несколько пользователей одновременно. AMD Epyc 7313 - это 16 ядер за разумные деньги. PCIe 4.0 lanes? 128 штук. Хватит на 4 GPU без всяких свитчей.
| Компонент | Рекомендация | Почему |
|---|---|---|
| Процессор | AMD Epyc 7313 | 16 ядер, много PCIe линий, низкое энергопотребление |
| Память | 256 ГБ DDR4 ECC | Для 70B моделей в CPU-режиме и кэширования файлов |
| Хранилище | 2× NVMe 2 ТБ в ZFS mirror | Скорость + отказоустойчивость для векторных БД |
2GPU: RTX 2000E Ada или V100? Серверная карта против бывшего короля
Вот где начинается настоящая драма. RTX 2000E Ada - новая, с 16 ГБ GDDR6, потребляет 70 Вт. V100 - старая легенда, 32 ГБ HBM2, жрет 300 Вт. Кажется, выбор очевиден? Не совсем.
- RTX 2000E Ada: Идеальна для инференса. Поддерживает все современные оптимизации (FP8, TensorRT-LLM). Тихая, не требует специального охлаждения. Но 16 ГБ - это предел для 70B моделей в 4-битной квантизации.
- V100: 32 ГБ - можно запускать 70B модели в 8-бите или даже несколько 13B одновременно. Но драйверы устаревают, поддержка в новых фреймворках постепенно исчезает. И она ГРЕЕТСЯ как печь.
Мой выбор? RTX 2000E Ada. Потому что через год вы захотите использовать Mistral 2, а она будет требовать CUDA 12.4, которую на V100 не поставить. Если же вам критично нужны 32 ГБ - смотрите в сторону RTX 4090, но с пассивным кулером и доработкой охлаждения в серверном корпусе.
Не берите игровые карты для 24/7 работы в сервере. У них нет ECC памяти, а после трех месяцев непрерывной работы RAG-запросов вы начнете получать случайные ошибки в ответах модели. Это не шутка - ошибки памяти в VRAM приводят к "галлюцинациям" на аппаратном уровне.
Proxmox: виртуализируем правильно
Установить Proxmox - это пять минут. Настроить его для AI-нагрузок - это два часа копания в настройках. Пропустите этот раздел - получите лаги при генерации текста.
3ZFS: не просто файловая система, а спасательный круг
При создании хранилища в Proxmox выбирайте ZFS. Не ext4, не LVM. ZFS. Почему? Потому что ваша векторная база данных будет делать миллионы мелких операций ввода-вывода. ZFS с кэшем в оперативной памяти (ARC) ускорит это в разы.
Настройки пула: raidz1 из двух дисков - это не RAID, это лучше. Включаем компрессию lz4 - модели сжатые, экономия места будет. Размер записи (recordsize) ставим 16K - под размер чанков в RAG.
4Сеть: изолируем трафик AI от всего остального
Создайте отдельный мост (vmbr1) для AI-виртуалки. Не пускайте его в интернет через NAT. Только прямой доступ к локальной сети. Зачем? Потому что когда ваша LLM-инфраструктура начнет скачивать 40-гигабайтную модель, она забьет канал всем остальным.
Настройте статический IP на этом мосту. Потом будет проще настраивать доступ к веб-интерфейсам.
Виртуальная машина: Ubuntu Server с характером
Не используйте LXC для GPU. Да, в статье про LXC и AMD я рассказывал про контейнеры, но с NVIDIA все сложнее. Драйверы требуют полного ядра, а не просто библиотек.
5Создание VM: параметры, которые влияют на производительность
- Тип процессора: Host. Без этого теряется 15% производительности на инструкциях AVX-512.
- Память: Минимум 64 ГБ. Выделяйте шарпами (hugepages) - это уменьшит латентность.
- Диск: VirtIO SCSI с кэшем writeback и SSD эмуляцией.
- Сеть: VirtIO, multiqueue включен.
6GPU Passthrough: черная магия, которая должна сработать
Самая нервная часть. Включаете IOMMU в биосе. В Proxmox находите PCI устройство вашей GPU. Ставите галочки "All Functions" и "PCI-Express". Добавляете в виртуальную машину.
Запускаете VM. Если видите в логах ошибку vfio - значит, нужно отключить драйвер nouveau на хосте. Черный экран вместо загрузки Ubuntu? Добавьте в параметры ядра виртуалки "video=efifb:off".
Перед тем как делать passthrough, проверьте, что GPU не используется хостовой системой. Выключите графический интерфейс Proxmox (если он есть) или переключите вывод на встроенную графику. Однажды я потратил полдня на поиски проблемы, а оказалось, что Proxmox "держал" карту для своей консоли.
Docker: упаковываем AI в контейнеры
Теперь внутри Ubuntu Server. Установите Docker и NVIDIA Container Toolkit. Без второго ваши контейнеры не увидят GPU.
7Доступ к файлам: монтируем, не копируем
Основная ошибка - копировать документы в контейнер. Не делайте так. Монтируйте директорию с хоста как volume. Но не просто монтируйте, а используйте опцию "cached" для больших директорий. Иначе производительность упадет при сканировании тысяч файлов.
Структура должна быть такой: на хосте в Proxmox смонтирован NFS/SMB share с вашими документами. Этот share проброшен в Ubuntu VM. Из VM он монтируется как volume в Docker-контейнер с AI-сервисом.
8Выбор стека: Ollama + OpenWebUI или что-то свое
Ollama - это просто. Скачиваете модель, запускаете, есть API. OpenWebUI - красивый интерфейс. Но если вам нужен серьезный RAG с индексацией, смотрите в сторону PrivateGPT или локально развернутого AnythingLLM. Только не пытайтесь запустить все сразу на одной карте - как в истории с RTX 4070 Super.
Мой совет: начните с Ollama. Настройте доступ к папке с документами через volume. Потом добавьте OpenWebUI для удобства. Когда поймете, как работает поток документов, переходите на более сложные системы.
Ошибки, которые свалят вашу систему через неделю
| Ошибка | Симптомы | Решение |
|---|---|---|
| Перегрев GPU в серверном корпусе | Троттлинг, падение производительности, случайные сбои | Установить принудительное охлаждение, ограничить power limit |
| ZFS съедает всю оперативную память | Система начинает свопиться, все тормозит | Настроить zfs_arc_max в /etc/modprobe.d |
| Docker volume с файлами работает медленно | Загрузка документов для RAG занимает минуты | Использовать ':cached' в опциях монтирования |
Вопросы, которые вы зададите через месяц
Можно ли добавить вторую GPU? - Можно, если на материнской плате есть слоты и блок питания тянет. В Proxmox делаете passthrough второй карты, в Docker настраиваете использование нескольких устройств. Но не ждите линейного роста производительности - не все фреймворки умеют балансировать нагрузку.
Как обновлять модели без простоя? - Создайте второй Docker-контейнер с новой версией, направьте на него тестовый трафик, потом переключите основной. Это проще, чем кажется, если использовать общий volume с моделями.
Почему RAG иногда возвращает ерунду? - Проверьте чанкинг. Слишком большие чанки - модель теряет суть. Слишком маленькие - не хватает контекста. И обязательно чистите текст от спецсимволов перед векторизацией.
Самое главное - не пытайтесь сделать идеально с первого раза. Соберите систему, которая работает. Запустите одну модель на одном GPU. Подключите доступ к папке с документами. Потом уже оптимизируйте, добавляйте мониторинг, настраивайте балансировку. Через полгода, когда вы поймете реальные нагрузки, можно будет думать о мульти-нод кластере. Но это уже совсем другая история.