μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

Docker λΉ λ₯Έ μ‹œμž‘ κ°€μ΄λ“œ Ultralytics

Ultralytics 도컀 νŒ¨ν‚€μ§€ λΉ„μ£Όμ–Ό

이 κ°€μ΄λ“œλŠ” Ultralytics ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•œ Docker ν™˜κ²½ 섀정에 λŒ€ν•œ 포괄적인 μ†Œκ°œ 역할을 ν•©λ‹ˆλ‹€. DockerλŠ” μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 개발, 배포 및 μ‹€ν–‰ν•˜κΈ° μœ„ν•œ ν”Œλž«νΌμž…λ‹ˆλ‹€. 특히 μ†Œν”„νŠΈμ›¨μ–΄κ°€ λ°°ν¬λ˜λŠ” μœ„μΉ˜μ— 관계없이 항상 λ™μΌν•˜κ²Œ μ‹€ν–‰λ˜λ„λ‘ ν•˜λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ Docker Hub의 Ultralytics Docker 리포지토리λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

도컀 이미지 버전 도컀 ν’€

ν•™μŠ΅ λ‚΄μš©

  • NVIDIA μ§€μ›μœΌλ‘œ Docker μ„€μ •ν•˜κΈ°
  • Ultralytics 도컀 이미지 μ„€μΉ˜
  • CPU λ˜λŠ” GPU μ§€μ›μœΌλ‘œ 도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ Ultralytics μ‹€ν–‰ν•˜κΈ°
  • Docker와 ν•¨κ»˜ λ””μŠ€ν”Œλ ˆμ΄ μ„œλ²„λ₯Ό μ‚¬μš©ν•˜μ—¬ Ultralytics 탐지 κ²°κ³Ό ν‘œμ‹œν•˜κΈ°
  • μ»¨ν…Œμ΄λ„ˆμ— 둜컬 디렉터리 마운트

μ „μ œ 쑰건

  • μ‹œμŠ€ν…œμ— Dockerκ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”. μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šμ€ 경우 Docker μ›Ήμ‚¬μ΄νŠΈμ—μ„œ λ‹€μš΄λ‘œλ“œν•˜μ—¬ μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‹œμŠ€ν…œμ— NVIDIA GPU 및 NVIDIA λ“œλΌμ΄λ²„κ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

NVIDIA μ§€μ›μœΌλ‘œ Docker μ„€μ •ν•˜κΈ°

λ¨Όμ € NVIDIA λ“œλΌμ΄λ²„λ₯Ό μ‹€ν–‰ν•˜μ—¬ λ“œλΌμ΄λ²„κ°€ μ œλŒ€λ‘œ μ„€μΉ˜λ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€:

nvidia-smi

NVIDIA 도컀 λŸ°νƒ€μž„ μ„€μΉ˜

이제 Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œ GPU 지원을 ν™œμ„±ν™”ν•˜κΈ° μœ„ν•΄ NVIDIA Docker λŸ°νƒ€μž„μ„ μ„€μΉ˜ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€:

# 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

Docker둜 NVIDIA λŸ°νƒ€μž„ 확인

μ‹€ν–‰ docker info | grep -i runtime λ₯Ό μ‚¬μš©ν•˜μ—¬ nvidia κ°€ λŸ°νƒ€μž„ λͺ©λ‘μ— λ‚˜νƒ€λ‚©λ‹ˆλ‹€:

docker info | grep -i runtime

Ultralytics 도컀 이미지 μ„€μΉ˜

Ultralytics λŠ” λ‹€μ–‘ν•œ ν”Œλž«νΌκ³Ό μ‚¬μš© 사둀에 μ΅œμ ν™”λœ μ—¬λŸ¬ Docker 이미지λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€:

  • λ„μ»€νŒŒμΌ: GPU 이미지, κ΅μœ‘μ— μ΄μƒμ μž…λ‹ˆλ‹€.
  • λ„μ»€νŒŒμΌ-arm64: ARM64 μ•„ν‚€ν…μ²˜μ˜ 경우, 라즈베리 νŒŒμ΄μ™€ 같은 μž₯μΉ˜μ— μ ν•©ν•©λ‹ˆλ‹€.
  • λ„μ»€νŒŒμΌ-cpu: CPU-μΆ”λ‘  및GPU ν™˜κ²½μ΄ μ•„λ‹Œ μ „μš© λ²„μ „μž…λ‹ˆλ‹€.
  • λ„μ»€νŒŒμΌ-젯슨: 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 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

만 μ‚¬μš©ν•˜μ—¬ CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

GPU μ‚¬μš©

# 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에 μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ Ultralytics μ‹€ν–‰

Ultralytics 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

만 μ‚¬μš©ν•˜μ—¬ CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

GPU μ‚¬μš©

# 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 μ»¨ν…Œμ΄λ„ˆμ—μ„œ κ·Έλž˜ν”½ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(GUI) μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ν•˜κΈ°

맀우 μ‹€ν—˜μ  - μ‚¬μš©μžκ°€ λͺ¨λ“  μœ„ν—˜ λΆ€λ‹΄

λ‹€μŒ 지침은 μ‹€ν—˜ λ‹¨κ³„μž…λ‹ˆλ‹€. X11 μ†ŒμΌ“μ„ Docker μ»¨ν…Œμ΄λ„ˆμ™€ κ³΅μœ ν•˜λ©΄ 잠재적인 λ³΄μ•ˆ μœ„ν—˜μ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 이 μ†”λ£¨μ…˜μ€ ν†΅μ œλœ ν™˜κ²½μ—μ„œλ§Œ ν…ŒμŠ€νŠΈν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ λ‹€μŒ μ‚¬μš© 방법에 λŒ€ν•œ λ¦¬μ†ŒμŠ€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”. xhost(1)(2).

DockerλŠ” 주둜 λ°±κ·ΈλΌμš΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό CLI ν”„λ‘œκ·Έλž¨μ„ μ»¨ν…Œμ΄λ„ˆν™”ν•˜λŠ” 데 μ‚¬μš©λ˜μ§€λ§Œ κ·Έλž˜ν”½ ν”„λ‘œκ·Έλž¨λ„ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Linux μ„Έκ³„μ—μ„œλŠ” 두 가지 μ£Όμš” κ·Έλž˜ν”½ μ„œλ²„κ°€ κ·Έλž˜ν”½ λ””μŠ€ν”Œλ ˆμ΄λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€: X11 (X Window μ‹œμŠ€ν…œμ΄λΌκ³ λ„ 함)κ³Ό Waylandμž…λ‹ˆλ‹€. μ‹œμž‘ν•˜κΈ° 전에 ν˜„μž¬ μ‚¬μš© 쀑인 κ·Έλž˜ν”½ μ„œλ²„λ₯Ό ν™•μΈν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ μ•Œμ•„λ³΄μ„Έμš”:

env | grep -E -i 'x11|xorg|wayland'

X11 λ˜λŠ” Wayland λ””μŠ€ν”Œλ ˆμ΄ μ„œλ²„μ˜ μ„€μ • 및 ꡬ성은 이 κ°€μ΄λ“œμ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚©λ‹ˆλ‹€. μœ„μ˜ λͺ…령이 아무것도 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ κ³„μ†ν•˜κΈ° 전에 μ‹œμŠ€ν…œμ—μ„œ μž‘λ™ν•˜λŠ” 것뢀터 μ‹œμž‘ν•΄μ•Ό ν•©λ‹ˆλ‹€.

GUI둜 Docker μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ν•˜κΈ°

예

GPU μ‚¬μš©
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.

X11을 μ‚¬μš©ν•˜λŠ” 경우 λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ Docker μ»¨ν…Œμ΄λ„ˆκ°€ X11 μ†ŒμΌ“μ— μ•‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host $t

이 λͺ…령은 DISPLAY ν™˜κ²½ λ³€μˆ˜λ₯Ό 호슀트의 λ””μŠ€ν”Œλ ˆμ΄μ— λ§€ν•‘ν•˜κ³ , X11 μ†ŒμΌ“μ„ λ§ˆμš΄νŠΈν•˜κ³ , 호슀트의 λ””μŠ€ν”Œλ ˆμ΄μ— .Xauthority νŒŒμΌμ„ μ»¨ν…Œμ΄λ„ˆμ— μΆ”κ°€ν•©λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆμ˜ xhost +local:docker λͺ…λ ΉμœΌλ‘œ Docker μ»¨ν…Œμ΄λ„ˆκ°€ X11 μ„œλ²„μ— μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Wayland의 경우 λ‹€μŒ λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t

이 λͺ…령은 DISPLAY ν™˜κ²½ λ³€μˆ˜λ₯Ό 호슀트의 λ””μŠ€ν”Œλ ˆμ΄μ— μ„€μ •ν•˜κ³ , Wayland μ†ŒμΌ“μ„ λ§ˆμš΄νŠΈν•˜κ³ , Docker μ»¨ν…Œμ΄λ„ˆκ°€ Wayland μ„œλ²„μ— μ•‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

GUI와 ν•¨κ»˜ Docker μ‚¬μš©

이제 Docker μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ κ·Έλž˜ν”½ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ‹€μŒ CLI λͺ…령을 μ‹€ν–‰ν•˜μ—¬ YOLOv8 λͺ¨λΈμ˜ μ˜ˆμΈ‘μ„ μ‹œκ°ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

yolo predict model=yolov8n.pt show=True
ν…ŒμŠ€νŠΈ

Docker 그룹이 X11 μ„œλ²„μ— μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” κ°„λ‹¨ν•œ 방법은 λ‹€μŒκ³Ό 같은 GUI ν”„λ‘œκ·Έλž¨μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. xclock λ˜λŠ” xeyes. λ˜λŠ” Ultralytics 도컀 μ»¨ν…Œμ΄λ„ˆμ— μ΄λŸ¬ν•œ ν”„λ‘œκ·Έλž¨μ„ μ„€μΉ˜ν•˜μ—¬ GNU-Linux λ””μŠ€ν”Œλ ˆμ΄ μ„œλ²„μ˜ X11 μ„œλ²„μ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό ν…ŒμŠ€νŠΈν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ ν™˜κ²½ λ³€μˆ˜λ₯Ό λ‹€μŒκ³Ό 같이 μ„€μ •ν•΄ λ³΄μ„Έμš”. -e QT_DEBUG_PLUGINS=1. 이 ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜λ©΄ 디버깅 정보λ₯Ό 좜λ ₯ν•  수 μžˆμ–΄ 문제 ν•΄κ²° ν”„λ‘œμ„ΈμŠ€μ— 도움이 λ©λ‹ˆλ‹€.

Docker GUIλ₯Ό μ™„λ£Œν•˜λ©΄

μ•‘μ„ΈμŠ€ κΆŒν•œ μ·¨μ†Œ

두 경우 λͺ¨λ‘ μž‘μ—…μ΄ λλ‚˜λ©΄ Docker κ·Έλ£Ήμ—μ„œ μ•‘μ„ΈμŠ€ κΆŒν•œμ„ μ·¨μ†Œν•˜λŠ” 것을 μžŠμ§€ λ§ˆμ„Έμš”.

xhost -local:docker
ν„°λ―Έλ„μ—μ„œ 이미지 κ²°κ³Όλ₯Ό λ°”λ‘œ ν™•μΈν•˜κ³  μ‹ΆμœΌμ‹ κ°€μš”?

단말기λ₯Ό μ‚¬μš©ν•˜μ—¬ 이미지 κ²°κ³Όλ₯Ό λ³΄λŠ” 방법은 λ‹€μŒ κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.


μΆ•ν•˜ν•©λ‹ˆλ‹€! 이제 Dockerμ—μ„œ Ultralytics 을 μ‚¬μš©ν•  수 μžˆλ„λ‘ μ„€μ •λ˜μ—ˆμœΌλ©° κ°•λ ₯ν•œ κΈ°λŠ₯을 ν™œμš©ν•  μ€€λΉ„κ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ„€μΉ˜ 방법을 μ•Œμ•„λ³΄λ €λ©΄ Ultralytics λΉ λ₯Έ μ‹œμž‘ λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

자주 λ¬»λŠ” 질문

Dockerμ—μ„œ Ultralytics 섀정은 μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?

Docker둜 Ultralytics 을 μ„€μ •ν•˜λ €λ©΄ λ¨Όμ € μ‹œμŠ€ν…œμ— Dockerκ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”. NVIDIA GPU , NVIDIA Docker λŸ°νƒ€μž„μ„ μ„€μΉ˜ν•˜μ—¬ GPU 지원을 ν™œμ„±ν™”ν•©λ‹ˆλ‹€. 그런 λ‹€μŒ λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ Docker Hubμ—μ„œ μ΅œμ‹  Ultralytics Docker 이미지λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€:

sudo docker pull ultralytics/ultralytics:latest

μžμ„Έν•œ λ‹¨κ³„λŠ” Docker λΉ λ₯Έ μ‹œμž‘ κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

λ¨Έμ‹  λŸ¬λ‹ ν”„λ‘œμ νŠΈμ— Ultralytics Docker 이미지λ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ 이점이 μžˆλ‚˜μš”?

Ultralytics 도컀 이미지λ₯Ό μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ μ»΄ν“¨ν„°μ—μ„œ λ™μΌν•œ μ†Œν”„νŠΈμ›¨μ–΄μ™€ 쒅속성을 λ³΅μ œν•˜μ—¬ μΌκ΄€λœ ν™˜κ²½μ„ 보μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” νŒ€ κ°„ ν˜‘μ—…, λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄μ—μ„œ λͺ¨λΈ μ‹€ν–‰, μž¬ν˜„μ„± μœ μ§€μ— 특히 μœ μš©ν•©λ‹ˆλ‹€. GPU 기반 ꡐ윑의 경우 Ultralytics μ—μ„œ λ‹€μŒκ³Ό 같은 μ΅œμ ν™”λœ Docker 이미지λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. Dockerfile 일반적인 GPU μ‚¬μš© 및 Dockerfile-jetson NVIDIA Jetson μž₯치용. 탐색 Ultralytics 도컀 ν—ˆλΈŒ μ—μ„œ μžμ„Έν•œ λ‚΄μš©μ„ ν™•μΈν•˜μ„Έμš”.

GPU 을 μ§€μ›ν•˜λŠ” Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œ Ultralytics YOLO 을 μ‹€ν–‰ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?

λ¨Όμ € NVIDIA Docker λŸ°νƒ€μž„μ΄ μ„€μΉ˜ 및 κ΅¬μ„±λ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 그런 λ‹€μŒ λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ GPU μ§€μ›μœΌλ‘œ Ultralytics YOLO 을 μ‹€ν–‰ν•©λ‹ˆλ‹€:

sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest

이 λͺ…령은 GPU μ•‘μ„ΈμŠ€ κΆŒν•œμ΄ μžˆλŠ” Docker μ»¨ν…Œμ΄λ„ˆλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ Docker λΉ λ₯Έ μ‹œμž‘ κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

λ””μŠ€ν”Œλ ˆμ΄ μ„œλ²„κ°€ μžˆλŠ” Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œ YOLO 예츑 κ²°κ³Όλ₯Ό μ‹œκ°ν™”ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?

Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œ GUIλ₯Ό μ‚¬μš©ν•˜μ—¬ YOLO 예츑 κ²°κ³Όλ₯Ό μ‹œκ°ν™”ν•˜λ €λ©΄ Dockerκ°€ λ””μŠ€ν”Œλ ˆμ΄ μ„œλ²„μ— μ•‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. X11을 μ‹€ν–‰ν•˜λŠ” μ‹œμŠ€ν…œμ˜ 경우 λͺ…령은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host ultralytics/ultralytics:latest

Waylandλ₯Ό μ‹€ν–‰ν•˜λŠ” μ‹œμŠ€ν…œμ—μ„œλŠ” λ‹€μŒμ„ μ‚¬μš©ν•©λ‹ˆλ‹€:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host ultralytics/ultralytics:latest

μžμ„Έν•œ λ‚΄μš©μ€ Docker μ»¨ν…Œμ΄λ„ˆ μ„Ήμ…˜ 의 GUI(κ·Έλž˜ν”½ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€) μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

둜컬 디렉터리λ₯Ό Ultralytics Docker μ»¨ν…Œμ΄λ„ˆμ— λ§ˆμš΄νŠΈν•  수 μžˆλ‚˜μš”?

예, 둜컬 디렉터리λ₯Ό Ultralytics 도컀 μ»¨ν…Œμ΄λ„ˆμ— λ§ˆμš΄νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. -v ν”Œλž˜κ·Έ:

sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

ꡐ체 /path/on/host λ₯Ό 둜컬 μ»΄ν“¨ν„°μ˜ 디렉터리와 /path/in/container λ₯Ό μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ μ›ν•˜λŠ” 경둜둜 μ„€μ •ν•©λ‹ˆλ‹€. 이 섀정을 μ‚¬μš©ν•˜λ©΄ μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ 둜컬 파일둜 μž‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ λ‹€μŒμ˜ κ΄€λ ¨ μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”. 둜컬 디렉토리 마운트.



생성 2023-11-12, μ—…λ°μ΄νŠΈ 2024-07-05
μž‘μ„±μž: glenn-jocher (7), Burhan-Q (1), jpedrofonseca_94@hotmail.com (1)

λŒ“κΈ€