Docker ๋น ๋ฅธ ์์ ๊ฐ์ด๋ Ultralytics
์ด ๊ฐ์ด๋๋ Ultralytics ํ๋ก์ ํธ๋ฅผ ์ํ Docker ํ๊ฒฝ ์ค์ ์ ๋ํ ํฌ๊ด์ ์ธ ์๊ฐ ์ญํ ์ ํฉ๋๋ค. Docker๋ ์ปจํ ์ด๋์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ, ๋ฐฐํฌ ๋ฐ ์คํํ๊ธฐ ์ํ ํ๋ซํผ์ ๋๋ค. ํนํ ์ํํธ์จ์ด๊ฐ ๋ฐฐํฌ๋๋ ์์น์ ๊ด๊ณ์์ด ํญ์ ๋์ผํ๊ฒ ์คํ๋๋๋ก ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Docker Hub์ Ultralytics Docker ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ต ๋ด์ฉ
- NVIDIA ์ง์์ผ๋ก Docker ์ค์ ํ๊ธฐ
- Ultralytics ๋์ปค ์ด๋ฏธ์ง ์ค์น
- Docker ์ปจํ ์ด๋์์ Ultralytics ์คํ
- ์ปจํ ์ด๋์ ๋ก์ปฌ ๋๋ ํฐ๋ฆฌ ๋ง์ดํธ
์ ์ ์กฐ๊ฑด
- ์์คํ ์ Docker๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํ์ธ์. ์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ Docker ์น์ฌ์ดํธ์์ ๋ค์ด๋ก๋ํ์ฌ ์ค์นํ ์ ์์ต๋๋ค.
- ์์คํ ์ NVIDIA GPU๊ฐ ์๊ณ NVIDIA ๋๋ผ์ด๋ฒ๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
NVIDIA ์ง์์ผ๋ก Docker ์ค์ ํ๊ธฐ
๋จผ์ NVIDIA ๋๋ผ์ด๋ฒ๋ฅผ ์คํํ์ฌ ๋๋ผ์ด๋ฒ๊ฐ ์ ๋๋ก ์ค์น๋์๋์ง ํ์ธํฉ๋๋ค:
NVIDIA ๋์ปค ๋ฐํ์ ์ค์น
์ด์ ๋์ปค ์ปจํ ์ด๋์์ GPU ์ง์์ ํ์ฑํํ๊ธฐ ์ํด NVIDIA ๋์ปค ๋ฐํ์์ ์ค์นํด ๋ณด๊ฒ ์ต๋๋ค:
# Add NVIDIA package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(lsb_release -cs)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# Install NVIDIA Docker runtime
sudo apt-get update
sudo apt-get install -y nvidia-docker2
# Restart Docker service to apply changes
sudo systemctl restart docker
๋์ปค๋ก NVIDIA ๋ฐํ์ ํ์ธ
์คํ docker info | grep -i runtime
๋ฅผ ์ฌ์ฉํ์ฌ nvidia
๊ฐ ๋ฐํ์ ๋ชฉ๋ก์ ๋ํ๋ฉ๋๋ค:
Ultralytics ๋์ปค ์ด๋ฏธ์ง ์ค์น
Ultralytics ๋ ๋ค์ํ ํ๋ซํผ๊ณผ ์ฌ์ฉ ์ฌ๋ก์ ์ต์ ํ๋ ์ฌ๋ฌ Docker ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค:
- ๋์ปคํ์ผ: ๊ต์ก์ ์ด์์ ์ธ GPU ์ด๋ฏธ์ง์ ๋๋ค.
- ๋์ปคํ์ผ-arm64: ARM64 ์ํคํ ์ฒ์ ๊ฒฝ์ฐ, ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์ ๊ฐ์ ์ฅ์น์ ์ ํฉํฉ๋๋ค.
- Dockerfile-cpu: ์ถ๋ก ๋ฐ ๋น GPU ํ๊ฒฝ์ ์ํ CPU ์ ์ฉ ๋ฒ์ ์ ๋๋ค.
- ๋์ปคํ์ผ-์ ฏ์จ: NVIDIA Jetson ์ฅ์น์ ์ต์ ํ๋์์ต๋๋ค.
- ๋์ปคํ์ผ-python: ๊ฒฝ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ต์ํ์ Python ํ๊ฒฝ.
- ๋์ปคํ์ผ-์ฝ๋ค: ์ฝ๋ค๋ฅผ ํตํด ์ค์น๋ ๋ฏธ๋์ฝ๋ค3 ๋ฐ Ultralytics ํจํค์ง๋ฅผ ํฌํจํฉ๋๋ค.
์ต์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด
# Set image name as a variable
t=ultralytics/ultralytics:latest
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t
๋์ปค ์ปจํ ์ด๋์์ Ultralytics ์คํ
Ultralytics ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t
๊ทธ๋ฆฌ๊ณ -it
ํ๋๊ทธ๋ ์์ฌ TTY๋ฅผ ํ ๋นํ๊ณ stdin์ ์ด์ด๋์ด ์ปจํ
์ด๋์ ์ํธ ์์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ์ปจํ
์ด๋์ --ipc=host
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก์ธ์ค ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ์ ํ์์ ์ธ ํธ์คํธ์ IPC ๋ค์์คํ์ด์ค๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ --gpus
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ
์ด๋๊ฐ ํธ์คํธ์ GPU์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
ํ์ผ ์ ๊ทผ์ฑ ๊ด๋ จ ์ฐธ๊ณ ์ฌํญ
์ปจํ ์ด๋ ๋ด์์ ๋ก์ปฌ ๋จธ์ ์ ํ์ผ๋ก ์์ ํ๋ ค๋ฉด Docker ๋ณผ๋ฅจ์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t
๊ต์ฒด /path/on/host
๋ฅผ ๋ก์ปฌ ์ปดํจํฐ์ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก์ /path/in/container
๋ฅผ Docker ์ปจํ
์ด๋ ๋ด๋ถ์ ์ํ๋ ๊ฒฝ๋ก๋ก ์ค์ ํฉ๋๋ค.
์ถํํฉ๋๋ค! ์ด์ Docker์์ Ultralytics ์ ์ฌ์ฉํ ์ ์๋๋ก ์ค์ ๋์์ผ๋ฉฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ค๋น๊ฐ ๋์์ต๋๋ค. ๋ค๋ฅธ ์ค์น ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด Ultralytics ๋น ๋ฅธ ์์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.