Azureの仮想マシンを用いたNDLOCRのGradioアプリ構築
概要
以下の記事で、Azureの仮想マシンとNDLOCRを用いたGradioアプリについて紹介しました。
本記事では、このアプリの構築方法に関する備忘録です。
仮想マシンの構築
GPUを使用するにあたり、クォータの要求を行う必要がありました。
要求後、今回は「NC8as_T4_v3」を使用します。
Docker環境の構築
以下の記事を参考にします。
Secure Boot の無効化
以下のように記載されています。
Secure Boot を無効化しないと NVIDIA Driver が正しくインストールされない.
実際、無効化しなかった場合、以下の画面が表示され、前に進めませんでした。
以下で、Secure Bootを無効化します。
NVIDIA Driver のインストール
ubuntu-drivers コマンドのインストールを行い、インストール可能な NVIDIA Driver を確認する。
sudo apt-get update
sudo apt install ubuntu-drivers-common
ubuntu-drivers devices
以下が結果です。
vendor : NVIDIA Corporation
model : TU104GL [Tesla T4]
driver : nvidia-driver-535 - distro non-free recommended
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-470 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
recommendedをインストールします。
sudo apt install nvidia-driver-535
再起動後、以下を実行し、インストールを確認します。
Sun Dec 22 23:10:42 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 Tesla T4 Off | 00000001:00:00.0 Off | 0 |
| N/A 47C P8 10W / 70W | 2MiB / 15360MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
Docker のインストール
公式ドキュメントに従ってインストールします。
https://docs.docker.com/engine/install/ubuntu/
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
azureuser
を Docker Group に追加します。その後、Docker の再起動を行います。
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl restart docker
SSH で再接続する。
NVIDIA Container Toolkit のインストール
公式ドキュメントに従ってインストールします。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
Configuring Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
docker run --rm --gpus all nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04 nvidia-smi
==========
== CUDA ==
==========
CUDA Version 12.4.1
Container image Copyright (c) 2016-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license
A copy of this license is made available in this container at /NGC-DL-CONTAINER-LICENSE for your convenience.
Sun Dec 22 23:16:52 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.4 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 Tesla T4 Off | 00000001:00:00.0 Off | 0 |
| N/A 33C P8 9W / 70W | 2MiB / 15360MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
ドメイン設定
今回は作成するGradioアプリは、Traefikを用いてHTTPS 化します。
ここでは、Route53を用いて、仮想マシンのIPアドレスにドメインを設定します。
NDLOCRアプリの起動
ここまでが環境設定です。ここからNDLOCRアプリの起動を行います。
以下により、ソースコードをダウンロードします。
git clone --recursive https://github.com/ndl-lab/ndlocr_cli
cd ndlocr_cli
Gradioアプリのソースコードをダウンロード
以下でGradioアプリのソースコードを公開しています。
これをダウンロードして、所定の場所にコピーします。
git clone https://github.com/nakamura196/ndlocr2_gradio
cp -rp ndlocr2_gradio/* .
chmod 600 ./traefik/acme.json
その後、./traefik/traefik.yml
と./docker-compose.yml
内のドメイン名やメールアドレスを修正します。
そして、以下を実行します。
docker compose up
これにより、設定したURLで、Gradioアプリが起動します。以下が例です。
まとめ
不完全な部分もあるかと思いますが、NDLOCRアプリをGradioアプリ化等において、参考になりましたら幸いです。
Discussion