Перейти к содержанию

Обзор развертывания CogVideo на сервере

Предпосылки и предварительные требования

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu версии 22.04. Требуется наличие видеокарты NVIDIA с установленными драйверами для поддержки вычислений CUDA.

Необходимы права суперпользователя (root) для выполнения операций установки и конфигурации. Приложение использует следующие порты и сервисы: - Порт 7860 для интерфейса Gradio. - Доступ к сети для загрузки репозиториев и пакетов. - Наличие Docker для запуска прокси-сервера Nginx с поддержкой SSL.

Структура файлов и каталогов

Основные компоненты приложения и конфигурации размещаются в следующих директориях:

  • /opt/CogVideo — корневая директория приложения, содержащая исходный код и виртуальное окружение Python.
  • /opt/CogVideo/env — виртуальное окружение Python с установленными зависимостями.
  • /root/nginx — директория для конфигурации Docker Compose прокси-сервера.
  • /data/nginx/user_conf.d — директория с пользовательскими конфигурационными файлами Nginx.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для настройки Nginx и Certbot.
  • /etc/systemd/system/cogvideo.service — файл конфигурации системного сервиса.

Процесс установки приложения

Установка выполняется вручную или через скрипт, который подготавливает систему, устанавливает драйверы и зависимости.

  1. Обновление системы и установка базовых пакетов:

    sudo apt update
    sudo apt upgrade -y
    

  2. Установка компилятора GCC и компонентов CUDA:

    sudo apt install gcc -y
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${RELEASE_VERSION}/x86_64/cuda-keyring_1.1-1_all.deb
    sudo dpkg -i cuda-keyring_1.1-1_all.deb
    sudo apt update
    sudo apt install cuda-toolkit -y
    sudo apt install nvidia-cuda-toolkit -y
    

  3. Настройка переменных окружения для CUDA в файле ~/.bashrc:

    echo 'export PATH="/sbin:/bin:/usr/sbin:/usr/bin:${PATH}:/usr/local/cuda/bin"' >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64\${LD_LIBRARY_PATH:+:\${LD_LIBRARY_PATH}}' >> ~/.bashrc
    source ~/.bashrc
    

  4. Инициализация модулей ядра NVIDIA:

    sudo rmmod -f nouveau
    sudo nvidia-smi
    nvcc -V
    

  5. Установка Docker и модуля nvidia-docker2:

    sudo apt install -y nvidia-docker2
    sudo systemctl restart docker
    

  6. Клонирование репозитория CogVideo:

    git clone https://github.com/THUDM/CogVideo.git /opt/CogVideo
    

  7. Создание и настройка виртуального окружения Python 3.10:

    python3.10 -m venv /opt/CogVideo/env
    /opt/CogVideo/env/bin/pip install --upgrade pip
    

  8. Установка зависимостей из файла requirements.txt:

    /opt/CogVideo/env/bin/pip install -r /opt/CogVideo/requirements.txt
    

  9. Установка PyTorch с поддержкой CUDA 11.8:

    /opt/CogVideo/env/bin/pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 --index-url https://download.pytorch.org/whl/cu118
    

  10. Установка дополнительных пакетов:

    /opt/CogVideo/env/bin/pip install moviepy==1.0.3
    

Контейнеры Docker и их запуск

Для обеспечения работы прокси-сервера и получения SSL-сертификатов используется контейнер Nginx с Certbot.

Конфигурация контейнера описана в файле /root/nginx/compose.yml.

Запуск контейнера выполняется командой:

docker compose up -d
в директории /root/nginx.

Контейнер использует образ jonasal/nginx-certbot:latest и работает в режиме network_mode: host.

Прокси серверы

Прокси-сервер Nginx настроен для перенаправления трафика на локальный порт 7860, где работает приложение CogVideo.

Конфигурация прокси-сервера находится в файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf.

В блоке location / добавлена директива:

proxy_pass http://127.0.0.1:7860;

Сертификаты SSL управляются через Certbot, данные хранятся в томе nginx_secrets, который монтируется в /etc/letsencrypt внутри контейнера.

Настройки прав

Права на файлы и директории устанавливаются следующим образом:

  • Директория /root/nginx имеет права 0755, владелец root, группа root.
  • Файл /root/nginx/compose.yml имеет права 0644, владелец root, группа root.
  • Скрипт установки /tmp/install_script.sh имеет права 0755.
  • Сервис cogvideo запускается от имени пользователя root.

Запуск, остановка и обновление

Управление приложением осуществляется через системный сервис cogvideo.

Запуск сервиса:

sudo systemctl start cogvideo

Остановка сервиса:

sudo systemctl stop cogvideo

Перезапуск сервиса:

sudo systemctl restart cogvideo

Проверка статуса сервиса:

sudo systemctl status cogvideo

Включение автозапуска при загрузке системы:

sudo systemctl enable cogvideo

Обновление конфигурации сервиса после изменения файла /etc/systemd/system/cogvideo.service:

sudo systemctl daemon-reload

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×