Ubuntu 24.04でWhisperXを動かす: Dockerによる環境構築


Ubuntu 24.04でWhisperXを動かす: Dockerによる環境構築

最近ローカルLLMにハマっているのだが、ひょんなことから「WhisperXで話者分離&字幕作成」をやってみようと思い立った。
ところが、RTX 4080を積んだ Ubuntu 24.04 環境で実行しようとすると libcudnn_cnn_infer.so.8 がないというエラーが発生。調べたところ、Ubuntu 24.04 では CUDA 11.8 + cuDNN 8 の組み合わせが直接インストールできない模様。

色々試した結果、DockerでUbuntu 22.04ベースの環境を作るのが一番スムーズだった。構築手順を備忘録として残す。

NVIDIA Container Toolkitのインストール

DockerからGPUを使うには、まず NVIDIA Container Toolkit をセットアップする。 手順は公式ドキュメント通り。以下、参考まで。

Terminal window
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

ベースイメージを取得

Ubuntu 22.04(Jammy)の最新イメージを取得する。

Terminal window
docker pull ubuntu:jammy-20250730

Dockerfile作成

以下のDockerfileを作成する。 CUDA 11.8 + cuDNN 8 をインストールし、WhisperXと依存ライブラリを入れる。 CUDA 12もcublasで求められるのでインストールする。

Dockerfile
FROM ubuntu:jammy-20250730
# コンテナ内のシステムを最新の状態に更新
RUN apt update && apt install -y --no-install-recommends \
build-essential \
software-properties-common \
wget \
gnupg \
git \
ffmpeg \
python3-pip \
ca-certificates
# NVIDIA CUDAリポジトリ追加 & CUDA 11.8 + cuDNN 8 + CUDA 12.3 インストール
RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb && \
dpkg -i cuda-keyring_1.0-1_all.deb && \
apt update && \
apt -y install cuda-11-8 libcudnn8 libcudnn8-dev cuda-12-3
# パス設定
ENV PATH="/usr/local/cuda-11.8/bin:${PATH}"
ENV LD_LIBRARY_PATH="/usr/local/cuda-11.8/lib64:/usr/local/cuda-12.3/lib64:${LD_LIBRARY_PATH}"
# WhisperX & pyannote.audioインストール
RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 && \
pip install whisperx && \
pip install "pyannote.audio"
# コンテナが起動した際のデフォルトコマンド
CMD ["/bin/bash"]

イメージのビルド

Terminal window
docker build -t ubuntu:whisperx .

WhisperXの実行

ホストに音声ファイルを用意して、コンテナから実行する。

例: /home/me/Documents/makesrt/audio.wav

Terminal window
docker run \
-v /home/me/Documents/makesrt:/root/makesrt \
--gpus all \
--rm \
-w /root/makesrt \
ubuntu:whisperx \
whisperx "audio.wav" \
--compute_type "float16" \
--device "cuda" \
--language "en"
--diarize \
--hf_token <HUGGINGFACE_TOKEN> \
--output_dir "./output" \
--output_format "all" \

オプション解説

  • -v: ホストとコンテナ間でディレクトリを共有
  • -w: ワーキングディレクトリ
  • --gpus all: GPUを全て利用
  • --diarize: 話者分離を有効化(要Hugging Face Token)
  • --compute_type "float16": RTX 4080などのGPUで高速化

これでWhisperXがGPUで実行される。CPUに比べて爆速。

まとめ

Ubuntu 24.04でWhisperXを動かそうとすると、CUDA/cuDNNのバージョン制約に引っかかる。

色々やりようはあると思うが、今回は Ubuntu 22.04ベースのDockerイメージを作ることで解決した。

  • ローカル環境を汚さない
  • GPUをフル活用できる
  • 他の環境でも再現性が高い

結論:やっぱりDockerは正義。


Author

me

入谷 史人

Scientist (Ph.D.), Programer, Web Developer, Guitarist, Photographer

more...