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

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

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

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

Требуется наличие видеокарты NVIDIA с установленными драйверами. Для работы приложения необходимы следующие компоненты: - Утилиты NVIDIA версии 550-server. - Комплект CUDA Toolkit. - Компилятор GCC. - Пакет ffmpeg. - Docker с поддержкой NVIDIA (nvidia-docker2).

Приложение запускается на порту 7860. Для работы веб-интерфейса через прокси требуется доступ к портам 80 и 443 для Nginx и Certbot.

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

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

  • /opt/hallo3 — каталог с исходным кодом приложения, клонированный из репозитория.
  • /opt/hallo3/pretrained_models — директория для хранения предобученных моделей, загружаемых из Hugging Face.
  • /opt/miniconda3 — корневая директория установки Miniconda.
  • /opt/miniconda3/envs/hallo — среда выполнения Python для приложения.
  • /root/nginx — каталог конфигурации для Docker-контейнера Nginx.
  • /root/nginx/compose.yml — файл конфигурации Docker Compose для прокси-сервера.
  • /data/nginx/user_conf.d — директория для пользовательских конфигурационных файлов Nginx.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для Nginx и Certbot.
  • /etc/letsencrypt — точка монтирования для сертификатов SSL (через том nginx_secrets).

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

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

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

    sudo apt update
    sudo apt upgrade -y
    

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

    sudo apt install gcc -y
    

  3. Установка CUDA Toolkit и ключей репозитория NVIDIA:

    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/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
    

  4. Настройка переменных окружения для 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
    

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

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

  6. Установка Miniconda в директорию /opt/miniconda3:

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    bash /tmp/Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3
    

  7. Добавление Miniconda в системный путь и инициализация:

    echo 'export PATH="/opt/miniconda3/bin:$PATH"' >> /etc/profile.d/conda.sh
    /opt/miniconda3/bin/conda init
    

  8. Клонирование репозитория приложения:

    git clone https://github.com/fudan-generative-vision/hallo3 /opt/hallo3
    

  9. Создание и настройка среды Python:

    /opt/miniconda3/bin/conda create -n hallo python=3.10 -y
    source /opt/miniconda3/etc/profile.d/conda.sh
    conda activate hallo
    cd /opt/hallo3
    pip install -r requirements.txt
    pip install gradio
    

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

    sudo apt install ffmpeg -y
    /opt/miniconda3/envs/hallo/bin/pip install huggingface-hub
    

  11. Загрузка предобученных моделей:

    source /opt/miniconda3/etc/profile.d/conda.sh
    conda activate hallo
    /opt/miniconda3/envs/hallo/bin/huggingface-cli download fudan-generative-ai/hallo3 --local-dir /opt/hallo3/pretrained_models
    

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

Для работы прокси-сервера используется Docker Compose. Конфигурация хранится в файле /root/nginx/compose.yml.

Файл конфигурации содержит следующие параметры: - Образ контейнера: jonasal/nginx-certbot:latest. - Режим сети: host. - Переменные окружения: CERTBOT_EMAIL=hkadm@hostkey.com. - Монтирование тома nginx_secrets в /etc/letsencrypt для хранения сертификатов. - Монтирование директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d для конфигураций.

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

cd /root/nginx
docker compose up -d

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

Прокси-сервер Nginx развернут в Docker-контейнере с поддержкой автоматического получения SSL-сертификатов через Certbot.

Конфигурация прокси-сервера включает: - Перенаправление трафика на порт 7860 локального хоста. - Использование пользовательской конфигурации из директории /data/nginx/user_conf.d. - Поддержка HTTPS через сертификаты Let's Encrypt.

В конфигурационном файле прокси-сервера добавляется директива пересылки запросов:

proxy_pass http://127.0.0.1:7860;
Эта директива размещается внутри блока location /.

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

Запуск приложения hallo3 выполняется из директории /opt/hallo3 с активированной средой Conda:

source /opt/miniconda3/etc/profile.d/conda.sh
conda activate hallo
cd /opt/hallo3
python hallo3/app.py

Процесс запускается в фоновом режиме. Приложение слушает порт 7860.

Для управления контейнером прокси-сервера используются команды Docker Compose: - Запуск: docker compose up -d в директории /root/nginx. - Остановка: docker compose down. - Перезапуск: docker compose restart.

Обновление приложения требует повторного клонирования репозитория, обновления зависимостей в среде Conda и перезапуска процесса Python.

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