В данном разделе описывается настройка для запуска двух языковых моделей одновременно на одном сервере с несколькими GPU.
Когда это нужно
Запуск двух LLM контейнеров полезен когда:
У вас есть несколько GPU и вы хотите использовать их для разных моделей
Нужно запустить разные модели одновременно (например, одна для чата, другая для специализированных задач)
Требуется распределить нагрузку между несколькими моделями
Сервер с минимум 2 GPU NVIDIA
Каждая GPU должна иметь достаточно памяти для выбранной модели
Docker и Docker Compose установлены
NVIDIA Container Toolkit установлен
Шаг 1: Проверка доступных GPU
Убедитесь, что у вас есть минимум 2 GPU:
Ожидаемый результат: Вы должны увидеть минимум 2 GPU в списке.
Шаг 2: Раскомментирование второго LLM контейнера
Откройте файл docker-compose.yml и найдите закомментированный блок aiserver-llm-server2 (примерно строки 103-142).
Раскомментируйте весь блок, убрав символы # в начале каждой строки:
Шаг 3: Настройка портов
Убедитесь, что порты не конфликтуют:
aiserver-llm-server (первый контейнер): порт 3003:8000
aiserver-llm-server2 (второй контейнер): порт должен быть другим, например 3006:8000 или 3007:8000
В закомментированном блоке проверьте строку:
Шаг 4: Настройка GPU для каждого контейнера
Важно настроить, какая GPU будет использоваться каждым контейнером.
Для первого контейнера (aiserver-llm-server)
Обычно использует GPU 0 (по умолчанию). Проверьте переменные окружения в .env файле или в самом docker-compose.yml:
Для второго контейнера (aiserver-llm-server2)
В раскомментированном блоке найдите строку:
Убедитесь, что значение соответствует номеру второй GPU (обычно 1 для второй GPU).
Шаг 5: Настройка моделей
Убедитесь, что каждая модель настроена правильно:
Первый контейнер (aiserver-llm-server)
Использует настройки из .env файла или значения по умолчанию. Проверьте переменную:
Второй контейнер (aiserver-llm-server2)
В раскомментированном блоке найдите строку:
Измените на нужную модель, если требуется другая.
Шаг 6: Проверка конфигурации
Перед запуском проверьте конфигурацию:
Шаг 7: Запуск контейнеров
Ожидаемый результат: Вы должны увидеть два контейнера:
aiserver-llm-server (порт 3003)
aiserver-llm-server2 (порт 3006)
Шаг 8: Проверка работы
Ожидаемый результат:
Оба контейнера должны успешно запуститься
В nvidia-smi должны быть видны процессы на разных GPU
Логи не должны содержать критических ошибок
Настройка переменных окружения
Если нужно изменить настройки второго контейнера, отредактируйте блок environment в docker-compose.yml:
Возможные проблемы
Контейнер не запускается
Проблема: Второй контейнер не запускается или падает с ошибкой.
Решение:
Проверьте логи: docker logs aiserver-llm-server2
Убедитесь что GPU доступна: nvidia-smi
Проверьте что порт свободен: netstat -tuln | grep 3006
Проверьте что модель существует: ls -la llm-server/models/
Конфликт портов
Проблема: Ошибка "port is already allocated".
Решение:
Измените порт второго контейнера на свободный (например, 3007:8000)
Или остановите сервис, занимающий порт
Недостаточно памяти GPU
Проблема: Модель не загружается, ошибки памяти.
Решение:
Уменьшите LLM_GPU_MEMORY_UTILIZATION (например, до 0.7)
Используйте модели меньшего размера
Освободите память на GPU, остановив другие процессы
Оба контейнера используют одну GPU
Проблема: Оба контейнера используют GPU 0 вместо разных GPU.
Решение:
Убедитесь что LLM_CUDA_VISIBLE_DEVICES установлена правильно для каждого контейнера
Проверьте что переменная не переопределяется в .env файле
Перезапустите контейнеры после изменения настроек
Пример полной конфигурации
Пример настройки двух контейнеров в docker-compose.yml:
Дополнительные настройки
Использование разных моделей
Вы можете запустить разные модели в каждом контейнере:
Настройка памяти
Если у вас GPU с разным объемом памяти, настройте использование памяти для каждого контейнера:
Для мониторинга работы обоих контейнеров:
Ожидаемый результат: Оба контейнера должны работать стабильно, используя разные GPU.