JustForWorld commited on
Commit
a292ff4
·
1 Parent(s): 8f1ad8c

revert: to the 8b2e214

Browse files
Files changed (2) hide show
  1. Dockerfile +24 -57
  2. video_assembler.py +1 -1
Dockerfile CHANGED
@@ -1,13 +1,13 @@
1
  # ==============================
2
- # Финальная, Проверенная Версия Dockerfile с GPU-ускорением FFmpeg
3
  # ==============================
 
4
  FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-devel
5
 
6
  # ==============================
7
  # Переменные окружения
8
  # ==============================
9
- ENV DEBIAN_FRONTEND=noninteractive \
10
- PIP_CACHE_DIR=/data/.cache/pip \
11
  HF_HOME=/data/.cache/huggingface \
12
  OMP_NUM_THREADS=1 \
13
  YOLO_CONFIG_DIR=/data/.cache/ultralytics \
@@ -16,86 +16,53 @@ ENV DEBIAN_FRONTEND=noninteractive \
16
  FORCE_CUDA=1 \
17
  PYTHONUNBUFFERED=1
18
 
19
- # !!! Ключевое исправление для Runtime !!!
20
- # Добавляем путь к библиотекам драйвера NVIDIA в LD_LIBRARY_PATH.
21
- # Это позволит ffmpeg найти libnvidia-encode.so.1 во время выполнения.
22
- ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}
23
-
24
  # ==============================
25
- # Компиляция FFmpeg из исходного кода с поддержкой NVENC
26
  # ==============================
27
- # 1. Устанавливаем все зависимости для сборки
28
  RUN apt-get update && apt-get install -y --no-install-recommends \
29
- build-essential \
30
- yasm \
31
- cmake \
32
- libtool \
33
- libc6-dev \
34
- unzip \
35
- wget \
36
- git \
37
- libgl1 \
38
- libglib2.0-0 \
39
- espeak-ng \
40
- nasm \
41
- libx264-dev \
42
- libx265-dev \
43
- libnuma-dev \
44
- libvpx-dev \
45
- libfdk-aac-dev \
46
- libmp3lame-dev \
47
- libopus-dev \
48
  && rm -rf /var/lib/apt/lists/*
49
 
50
- # 2. Компилируем и устанавливаем FFmpeg в одном RUN-слое для надежности
51
- RUN mkdir -p /tmp/ffmpeg_sources && \
52
- cd /tmp/ffmpeg_sources && \
53
- # Получаем новейшие заголовки из официального репозитория GitHub
54
- git clone https://github.com/FFmpeg/nv-codec-headers.git && \
55
- cd nv-codec-headers && make install && cd .. && \
56
- # Получаем новейший стабильный исходный код FFmpeg
57
- wget https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.bz2 && \
58
- tar xjf ffmpeg-7.0.1.tar.bz2 && \
59
- cd ffmpeg-7.0.1 && \
60
- # Конфигурируем, собираем и устанавливаем
61
- ./configure \
62
- --enable-gpl \
63
- --enable-nonfree \
64
- --enable-shared \
65
- --enable-nvenc \
66
- --enable-cuda-nvcc \
67
- --enable-libnpp \
68
- --extra-cflags="-I/usr/local/cuda/include" \
69
- --extra-ldflags="-L/usr/local/cuda/lib64" && \
70
- make -j$(nproc) && \
71
- make install && \
72
- ldconfig && \
73
- # Очищаем временные файлы, чтобы уменьшить размер образа
74
- cd / && rm -rf /tmp/ffmpeg_sources
75
-
76
  # ==============================
77
  # Установка Python зависимостей
78
  # ==============================
79
  WORKDIR /app
80
  COPY requirements.txt .
81
 
 
82
  RUN pip install --upgrade pip setuptools wheel && \
83
- pip install --no-cache-dir "flash-attn==2.5.8" --no-build-isolation && \
84
- pip install --no-cache-dir -r requirements.txt
 
 
85
 
86
  # ==============================
87
  # Копируем код и кэшируем модели
88
  # ==============================
89
  COPY . .
90
 
 
91
  RUN useradd -m -u 1000 appuser && \
92
  mkdir -p /data/.cache && \
93
  chown -R appuser:appuser /app /data
94
 
 
95
  USER appuser
96
 
97
  # --- Кэшируем модели от имени appuser ---
 
98
  RUN iopaint download --model lama
 
 
 
 
 
 
 
99
  RUN echo "y" | python -c "from TTS.utils.manage import ModelManager; mm = ModelManager(); mm.download_model('tts_models/multilingual/multi-dataset/xtts_v2')"
100
 
101
  # ==============================
 
1
  # ==============================
2
+ # Финальная, Проверенная Версия Dockerfile
3
  # ==============================
4
+
5
  FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-devel
6
 
7
  # ==============================
8
  # Переменные окружения
9
  # ==============================
10
+ ENV PIP_CACHE_DIR=/data/.cache/pip \
 
11
  HF_HOME=/data/.cache/huggingface \
12
  OMP_NUM_THREADS=1 \
13
  YOLO_CONFIG_DIR=/data/.cache/ultralytics \
 
16
  FORCE_CUDA=1 \
17
  PYTHONUNBUFFERED=1
18
 
 
 
 
 
 
19
  # ==============================
20
+ # Системные зависимости
21
  # ==============================
 
22
  RUN apt-get update && apt-get install -y --no-install-recommends \
23
+ git \
24
+ libgl1 \
25
+ libglib2.0-0 \
26
+ espeak-ng \
27
+ build-essential \
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  && rm -rf /var/lib/apt/lists/*
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  # ==============================
31
  # Установка Python зависимостей
32
  # ==============================
33
  WORKDIR /app
34
  COPY requirements.txt .
35
 
36
+ # Обновляем pip и ставим flash-attn отдельно, так как он требует сборки
37
  RUN pip install --upgrade pip setuptools wheel && \
38
+ pip install --no-cache-dir "flash-attn==2.5.8" --no-build-isolation
39
+
40
+ # Ставим все остальные зависимости из нашего "железобетонного" списка
41
+ RUN pip install --no-cache-dir -r requirements.txt
42
 
43
  # ==============================
44
  # Копируем код и кэшируем модели
45
  # ==============================
46
  COPY . .
47
 
48
+ # Создаем пользователя ДО кэширования, чтобы кэш принадлежал ему
49
  RUN useradd -m -u 1000 appuser && \
50
  mkdir -p /data/.cache && \
51
  chown -R appuser:appuser /app /data
52
 
53
+ # Переключаемся на non-root пользователя
54
  USER appuser
55
 
56
  # --- Кэшируем модели от имени appuser ---
57
+ # iopaint Lama
58
  RUN iopaint download --model lama
59
+
60
+ # Coqui TTS XTTS-v2
61
+ # Мы скачиваем модель в режиме CPU (gpu=False), чтобы избежать ошибки AssertionError
62
+ # во время сборки. В рантайме модель все равно будет подхвачена на GPU,
63
+ # так как в logic.py мы передаем gpu=(self.device == "cuda").
64
+ # Используем ModelManager для того, чтобы ТОЛЬКО скачать файлы, не загружая их в память.
65
+ # Это предотвратит OOM Killer во время сборки.
66
  RUN echo "y" | python -c "from TTS.utils.manage import ModelManager; mm = ModelManager(); mm.download_model('tts_models/multilingual/multi-dataset/xtts_v2')"
67
 
68
  # ==============================
video_assembler.py CHANGED
@@ -95,7 +95,7 @@ def assemble_video_with_narration(image_contents: list, audio_chunks: list, outp
95
  final_video.write_videofile(
96
  output_path,
97
  fps=24,
98
- codec="h264_nvenc",
99
  audio_codec="aac",
100
  temp_audiofile="temp-audio.m4a",
101
  remove_temp=True,
 
95
  final_video.write_videofile(
96
  output_path,
97
  fps=24,
98
+ codec="libx264",
99
  audio_codec="aac",
100
  temp_audiofile="temp-audio.m4a",
101
  remove_temp=True,