Обзор развертывания CogVideoX-5b на сервере¶
Предварительные требования и базовые условия¶
Для успешного развертывания приложения CogVideoX-5b сервер должен соответствовать следующим требованиям:
-
Операционная система: Ubuntu 22.04 LTS.
-
Привилегии: Для установки и конфигурации требуется доступ root.
-
Оборудование: NVIDIA GPU с поддержкой CUDA toolkit.
-
Сеть: Доступ к общедоступному интернету для загрузки репозиториев и зависимостей.
-
Порты: Порт 443 (HTTPS) для внешнего доступа и порт 7860 для внутренней коммуникации сервисов.
FQDN конечной панели¶
Приложение доступно через следующий формат полного доменного имени (FQDN):
cogvideo<Server ID>.hostkey.in:443
Структура файлов и каталогов¶
Приложение и файлы его конфигурации организованы в следующих каталогах:
-
/opt/CogVideo: Основной каталог, содержащий исходный код приложения, виртуальное окружение Python и скрипты инференса. -
/opt/CogVideo/env: Каталог виртуального окружения Python, содержащий установленные пакеты. -
/root/nginx: Каталог, содержащий конфигурацию Docker Compose для обратного прокси-сервера. -
/root/nginx/compose.yml: Файл Docker Compose для сервиса Nginx и Certbot. -
/data/nginx/user_conf.d: Каталог, содержащий файлы конфигурации для конкретного сайта в Nginx. -
/etc/systemd/system/cogvideo.service: Файл юнита сервиса Systemd.
Процесс установки приложения¶
Приложение развертывается с помощью специального скрипта установки и виртуального окружения Python. Процесс включает следующие шаги:
-
Обновление пакетов системы и установка стека Linux Hardware Enablement (HWE) для Ubuntu 22.04.
-
Установка компилятора GCC и набора инструментов NVIDIA CUDA.
-
Конфигурация переменных окружения для CUDA в файле
~/.bashrc. -
Загрузка модулей ядра NVIDIA и проверка доступа к GPU.
-
Установка Docker и NVIDIA-Docker2 для поддержки GPU внутри контейнеров.
-
Клонирование репозитория CogVideo с
https://github.com/THUDM/CogVideo.gitв/opt/CogVideo. -
Создание виртуального окружения Python 3.10 в
/opt/CogVideo/env. -
Установка зависимостей Python, включая PyTorch с поддержкой CUDA 11.8 и
moviepy.
Права доступа и безопасность¶
Безопасность и контроль доступа управляются следующими механизмами:
-
Приложение работает от имени пользователя
rootчерез сервис Systemd. -
Внешний доступ ограничен настроенным FQDN через HTTPS (порт 443).
-
Внутренний трафик маршрутизируется от обратного прокси-сервера к приложению через localhost на порту 7860.
Контейнеры Docker и их развертывание¶
Для запуска обратного прокси-сервера Nginx и управления SSL-сертификатами используется контейнер Docker. Развертывание управляется через docker compose в каталоге /root/nginx.
-
Image:
jonasal/nginx-certbot:latest -
Service Name:
nginx -
Restart Policy:
unless-stopped -
Network Mode:
host -
Volumes:
-
nginx_secrets(external): Монтируется в/etc/letsencryptдля хранения сертификатов. -
/data/nginx/user_conf.d: Монтируется в/etc/nginx/user_conf.dдля пользовательских конфигураций сайтов. -
Environment:
-
CERTBOT_EMAIL: Установлен в значениеhkadm@hostkey.com.
Прокси-серверы¶
Обратный прокси-сервер Nginx отвечает за завершение SSL-соединений и передачу трафика приложению.
-
SSL/Certificates: Автоматически управляются Certbot через контейнер Docker
nginx-certbot. -
Configuration Location:
/data/nginx/user_conf.d/cogvideo<Server ID>.hostkey.in.conf. -
Proxy Pass: Настроен для пересылки запросов на
http://127.0.0.1:7860. -
External Path: Путь
/отображается в корень внутреннего приложения.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и каталоги данных находятся в следующих местах:
-
/etc/systemd/system/cogvideo.service: Определение сервиса Systemd. -
/root/nginx/compose.yml: Конфигурация Docker Compose для прокси-сервера. -
/data/nginx/nginx-certbot.env: Переменные окружения для контейнера Nginx. -
/opt/CogVideo/requirements.txt: Зависимости пакетов Python. -
/opt/CogVideo/inference/gradio_composite_demo/cogstudio.py: Основной скрипт точки входа.
Доступные порты для подключения¶
В развертывании используются следующие порты:
-
Порт 443: Трафик HTTPS для внешнего доступа пользователей.
-
Порт 7860: Внутренний порт коммуникации для интерфейса Gradio, используемого приложением CogVideoX-5b.
Запуск, остановка и обновление¶
Приложение управляется как сервис Systemd с именем cogvideo. Используйте следующие команды для управления сервисом:
-
Запуск сервиса:
systemctl start cogvideo -
Остановка сервиса:
systemctl stop cogvideo -
Перезапуск сервиса:
systemctl restart cogvideo -
Включение при загрузке:
systemctl enable cogvideo -
Проверка статуса:
systemctl status cogvideo
Чтобы обновить конфигурацию прокси-сервера Nginx или сертификаты, выполните следующую команду из каталога /root/nginx: docker compose up -d
Чтобы перезагрузить Systemd после изменения файла сервиса: systemctl daemon-reload