Облачный сервер для хостинга LLM в Европе: руководство по AI и GDPR
Собственный хостинг большой языковой модели даёт полный контроль над тем, какие данные попадают в модель, где они обрабатываются и кто имеет к ним доступ. Для европейского бизнеса это не только вопрос затрат, но и требование соответствия. Любой запрос, содержащий персональные данные жителей ЕС, по GDPR должен обрабатываться под юрисдикцией ЕС.
Это руководство описывает оборудование, нужное для продакшен-хостинга LLM, как выбирать между размерами модели и уровнями квантования и какие фреймворки обслуживания лучше работают на облачной инфраструктуре ЕС.
Почему юрисдикция ЕС важна для хостинга LLM
Когда пользователи работают с LLM - задают вопросы, просят пересказать документы, генерируют текст, - эти запросы часто содержат имена, адреса почты, вопросы о здоровье и другие персональные данные. Отправка таких запросов в размещённый в США API означает, что персональные данные покидают юрисдикцию ЕС на каждом обращении, а это создаёт постоянный риск по соответствию.
Собственный хостинг на облачном сервере DCXV в ЕС означает, что весь инференс остаётся в границах ЕС. Никакой трансатлантической передачи данных, никакой опоры на стандартные договорные условия и никакой зависимости от практик обработки данных у сторонней компании. Для медицинских, юридических и финансовых приложений в Европе собственная инфраструктура LLM в ЕС - практичный путь к соответствию GDPR.
Сетевая задержка тоже играет роль. Собственная LLM в Праге или Франкфурте добавляет 5-15 мс к пути инференса в вашем приложении. Та же модель через точку API в США добавляет 80-120 мс на вызов, а этого достаточно, чтобы испортить впечатление в чат-интерфейсах и помощниках, работающих в реальном времени.
Выбор размера модели и квантования
Подходящая модель зависит от сценария и доступного оборудования:
- Модели 7B (квантование Q4, около 4 ГБ VRAM) - подходят для пересказа, классификации, вопросов и ответов по документам. Работают на одном потребительском GPU или на CPU-сервере с большим числом ядер.
- Модели 13B (квантование Q4, около 8 ГБ VRAM) - лучше рассуждают, точнее следуют инструкциям. Нужен GPU среднего уровня (RTX 3090 или 4090) либо 2 меньших GPU.
- Модели 34B (квантование Q4, около 20 ГБ VRAM) - качество близко к GPT-3.5. Нужен один GPU с большим объёмом VRAM (A100 40 ГБ) или два GPU по 24 ГБ.
- Модели 70B (квантование Q4, около 40 ГБ VRAM) - класс GPT-4 для многих задач. Нужен A100 80 ГБ или два A100 40 ГБ в тензорном параллелизме.
Квантование (INT4 или INT8 через GGUF либо GPTQ) снижает требования к VRAM в 2-4 раза при умеренной потере качества - приемлемо для большинства продакшен-сценариев.
Минимальные требования к серверу для хостинга LLM
- Обслуживание на CPU (модель 7B Q4) - 16 vCPU, 32 ГБ RAM, 200 ГБ NVMe SSD
- Начальный GPU (7B-13B, один RTX 4090) - 8 vCPU, 32 ГБ RAM, 24 ГБ VRAM, 500 ГБ NVMe
- Средний GPU (34B Q4, один A100 40 ГБ) - 16 vCPU, 64 ГБ RAM, 40 ГБ VRAM, 1 ТБ NVMe
- Высокий GPU (70B Q4, A100 80 ГБ) - 16 vCPU, 128 ГБ RAM, 80 ГБ VRAM, 2 ТБ NVMe
Рекомендуемая конфигурация DCXV
Облачные серверы DCXV дают серверы в ЕС с GPU под хостинг LLM на сертифицированной по Tier III инфраструктуре с приватной сетью:
- Сервер с GPU, 24 ГБ VRAM - модели 7B-13B в FP16 или 34B в INT4, для помощников в SaaS и внутренних ассистентов
- Сервер с GPU, 80 ГБ VRAM - модели 70B в INT4 или 34B в FP16, для продакшен-API высокого качества
- Сервер на CPU, 32-64 ГБ RAM - модели 7B в INT4 через llama.cpp, для фоновой обработки и пакетных задач
Напишите на sales@dcxv.com о наличии GPU и чтобы обсудить тензорный параллелизм на нескольких GPU для более крупных моделей.
Команды для быстрой установки
# Вариант 1: обслуживание через Ollama (самое простое, CPU и GPU)
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable --now ollama
# Загрузка модели и публикация как API
ollama pull llama3.1:8b
# Публикация в приватной сети:
# Добавьте в /etc/systemd/system/ollama.service:
# Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl daemon-reload && sudo systemctl restart ollama
# Проверка
curl http://10.0.0.5:11434/api/chat -d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Summarize GDPR in 3 bullet points"}]
}'
# Вариант 2: vLLM для обслуживания на GPU с высокой пропускной способностью (API, совместимый с OpenAI)
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-8B-Instruct \
--host 10.0.0.5 \
--port 8000 \
--tensor-parallel-size 1 \
--max-model-len 8192 \
--gpu-memory-utilization 0.90 \
--served-model-name llama3-8b
# Проверка клиентом, совместимым с OpenAI
curl http://10.0.0.5:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "llama3-8b", "messages": [{"role": "user", "content": "Hello"}]}'
# Вариант 3: сервер llama.cpp для CPU или GPU (наименьший расход памяти)
sudo apt install -y build-essential cmake libcurl4-openssl-dev
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# Сборка с поддержкой GPU (CUDA)
cmake -B build -DGGML_CUDA=ON
# Или только CPU с AVX-512:
cmake -B build -DLLAMA_AVX512=ON
cmake --build build --config Release -j $(nproc)
# Обслуживание модели в формате GGUF
./build/bin/llama-server \
--model /models/llama-3.1-8b-instruct-q4_k_m.gguf \
--host 10.0.0.5 \
--port 8080 \
--ctx-size 8192 \
--n-gpu-layers 35 \
--parallel 4
Какую среду обслуживания выбрать
Команды выше показывают два способа обслуживать одни и те же веса, и выбор здесь не про качество: все они запускают одну и ту же модель. Он про то, что происходит, когда второй запрос приходит раньше, чем закончился первый:
| Среда | Одновременные запросы | Где работает лучше | Когда выбирать |
|---|---|---|---|
| Ollama | В очереди, по одному | CPU или один GPU | Внутренние инструменты, по одному пользователю, поднимается быстрее всего |
| llama.cpp | В очереди, небольшими партиями | CPU, веса в GGUF | Совсем нет GPU или пакетная работа на ночь |
| vLLM | Непрерывная пакетная обработка | Только GPU | Много пользователей делят один GPU и вам важна пропускная способность |
| TGI | Непрерывная пакетная обработка | Только GPU | Вы уже работаете на стеке Hugging Face |
Разрыв больше, чем кажется. GPU, обслуживающий по одному запросу, большую часть жизни ждёт память, поэтому среда с пакетной обработкой способна обслужить на той же карте в несколько раз больше пользователей без каких-либо изменений в модели. Поэтому цифры для CPU и для GPU ниже - это не одно и то же измерение в другом масштабе, а разные формы работы.
Ожидаемые показатели производительности
vLLM на RTX 4090 (24 ГБ VRAM), Llama 3.1 8B FP16:
- Генерация на один запрос - 80-120 токенов в секунду
- Пакетная пропускная способность (8 одновременных запросов) - 400-700 токенов в секунду суммарно
- Время до первого токена - 150-300 мс
vLLM на A100 80 ГБ, Llama 3.1 70B INT4:
- Генерация на один запрос - 25-40 токенов в секунду
- Пакетная пропускная способность (4 одновременных) - 100-180 токенов в секунду суммарно
- Время до первого токена - 300-600 мс
llama.cpp на CPU (16 vCPU), 8B Q4_K_M:
- Скорость генерации - 18-30 токенов в секунду
- Время до первого токена - от 800 мс до 2 с
Это ожидания для оборудования такого класса, а не измерения из нашей лаборатории. Считайте их отправной точкой для расчёта и измеряйте собственную нагрузку: реальные цифры зависят от ваших данных, ваших запросов и вашей настройки гораздо сильнее, чем от провайдера.
Итог
Собственный хостинг LLM на облачной инфраструктуре ЕС - самый надёжный путь к соответствующему GDPR AI в продакшене. Выбирайте размер модели по требованиям к качеству и бюджету, используйте квантование, чтобы снизить потребность в VRAM, и берите vLLM для продакшен-обслуживания на GPU или llama.cpp для гибкости на CPU. DCXV даёт серверы с GPU и хранение данных в ЕС, которые нужны, чтобы запускать LLM в масштабе с соблюдением требований.
