์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๋งˆ์Šคํ„ฐํ•˜๊ธฐ YOLOv5 ๐Ÿš€ ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ(GCP) ๋”ฅ๋Ÿฌ๋‹ ๊ฐ€์ƒ ๋จธ์‹ (VM)์— ๋ฐฐํฌํ•˜๊ธฐ โญ

ํŠนํžˆ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ํ™œ์šฉํ•˜๋ฉด ์ธ๊ณต ์ง€๋Šฅ๊ณผ ๋จธ์‹  ๋Ÿฌ๋‹์˜ ์—ฌ์ •์„ ํฅ๋ฏธ์ง„์ง„ํ•˜๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ(GCP)์€ ๋จธ์‹  ๋Ÿฌ๋‹ ์• ํ˜ธ๊ฐ€์™€ ์ „๋ฌธ๊ฐ€ ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๋ฐ ML ์ž‘์—…์„ ์œ„ํ•ด ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ๋”ฅ ๋Ÿฌ๋‹ ๊ฐ€์ƒ ๋จธ์‹ ์ž…๋‹ˆ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” GCP ๋”ฅ ๋Ÿฌ๋‹ VM์—์„œ YOLOv5 ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ML์— ์ฒซ๋ฐœ์„ ๋‚ด๋”›๋Š” ์ดˆ๋ณด์ž์ด๋“  ์ˆ™๋ จ๋œ ์‹ค๋ฌด์ž์ด๋“  ์ƒ๊ด€์—†์ด YOLOv5 ๋กœ ๊ตฌ๋™๋˜๋Š” ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ช…ํ™•ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ†“ ๋˜ํ•œ ์‹ ๊ทœ GCP ์‚ฌ์šฉ์ž๋ผ๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” 300๋‹ฌ๋Ÿฌ์˜ ๋ฌด๋ฃŒ ํฌ๋ ˆ๋”ง์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ–‰์šด์ด ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

GCP ์™ธ์—๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด YOLOv5 ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋น ๋ฅธ ์‹œ์ž‘ ์˜ต์…˜์„ ์‚ดํŽด๋ณด์„ธ์š”. ๋žฉ ๋…ธํŠธ๋ถ ๊ณต๋™ ์ž‘์—…์‹ค์—์„œ ์—ด๊ธฐ ์˜ ํ™•์žฅ์„ฑ ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ๊ฒฝํ—˜์„ ์œ„ํ•ด Amazon AWS. ๋˜ํ•œ ์ปจํ…Œ์ด๋„ˆ ์• ํ˜ธ๊ฐ€๋Š” ๋‹ค์Œ์—์„œ ๊ณต์‹ Docker ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker Hub ๋„์ปค ํ’€ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บก์Šํ™”๋œ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1๋‹จ๊ณ„: ๋”ฅ ๋Ÿฌ๋‹ ๊ฐ€์ƒ ๋จธ์‹  ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ

๋”ฅ ๋Ÿฌ๋‹์— ๋งž๊ฒŒ ์กฐ์ •๋œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

  1. GCP ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋กœ ์ด๋™ํ•˜์—ฌ ๋”ฅ ๋Ÿฌ๋‹ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. n1-standard-8 ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜๋ฉด 8๊ฐœ์˜ vCPU์™€ 30GB์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ท ํ˜• ์žˆ๊ฒŒ ์ œ๊ณต๋˜๋ฏ€๋กœ ๋‹น์‚ฌ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ์œผ๋กœ GPU๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์›Œํฌ๋กœ๋“œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ, Tesla T4์™€ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ GPU๋ผ๋„ ๋ชจ๋ธ ํŠธ๋ ˆ์ด๋‹ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ฒˆ๊ฑฐ๋กœ์›€ ์—†์ด ์„ค์ •ํ•˜๋ ค๋ฉด '์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ NVIDIA GPU ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?"์— ์ฒดํฌ ํ‘œ์‹œ๋ฅผ ํ•˜์„ธ์š”.
  5. 300GB SSD ์˜๊ตฌ ๋””์Šคํฌ๋ฅผ ํ• ๋‹นํ•˜์—ฌ I/O ์ž‘์—…์— ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”.
  6. '๋ฐฐํฌ'๋ฅผ ๋ˆ„๋ฅด๋ฉด GCP๊ฐ€ ๋งž์ถคํ˜• ๋”ฅ ๋Ÿฌ๋‹ ๊ฐ€์ƒ ๋จธ์‹ ์„ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋Š” ๋งˆ๋ฒ•์„ ๋ถ€๋ฆฝ๋‹ˆ๋‹ค.

์ด ๊ฐ€์ƒ ๋จธ์‹ ์—๋Š” YOLOv5 ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ข…์†์„ฑ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•˜๋Š” Anaconda Python ๋ฐฐํฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์‚ฌ์ „ ์„ค์น˜๋œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฅ ๋Ÿฌ๋‹ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์„ค์ •ํ•˜๋Š” GCP ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๊ทธ๋ฆผ

2๋‹จ๊ณ„: ๋‹ค์Œ ์šฉ๋„์˜ ๊ฐ€์ƒ ๋จธ์‹  ์ค€๋น„ YOLOv5

ํ™˜๊ฒฝ ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด YOLOv5 ์„ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

# Clone the YOLOv5 repository
git clone https://github.com/ultralytics/yolov5

# Change the directory to the cloned repository
cd yolov5

# Install the necessary Python packages from requirements.txt
pip install -r requirements.txt

์ด ์„ค์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด Python ํ™˜๊ฒฝ ๋ฒ„์ „ 3.8.0 ์ด์ƒ ๋ฐ PyTorch 1.8 ์ด์ƒ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ์ตœ์‹  YOLOv5 ๋ฆด๋ฆฌ์Šค์—์„œ ๋ Œ๋”๋ง๋˜๋Š” ๋ชจ๋ธ๊ณผ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ๋‹ค์šด๋กœ๋“œํ•˜๋ฏ€๋กœ ๋ฒˆ๊ฑฐ๋กœ์›€ ์—†์ด ๋ชจ๋ธ ํ•™์Šต์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๋‹จ๊ณ„: YOLOv5 ๋ชจ๋ธ ๊ต์œก ๋ฐ ๋ฐฐํฌ ๐ŸŒ

์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด GCP VM์—์„œ YOLOv5 ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ต์œก ๋ฐ ์ถ”๋ก ์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

# Train a model on your data
python train.py

# Validate the trained model for Precision, Recall, and mAP
python val.py --weights yolov5s.pt

# Run inference using the trained model on your images or videos
python detect.py --weights yolov5s.pt --source path/to/images

# Export the trained model to other formats for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite

YOLOv5 ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ น์–ด๋งŒ์œผ๋กœ ํŠน์ • ์š”๊ตฌ์— ๋งž๋Š” ๋งž์ถคํ˜• ๊ฐ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๊ฑฐ๋‚˜ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๊ฐ€์ค‘์น˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ž‘์—…์—์„œ ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GCP ๋”ฅ ๋Ÿฌ๋‹ VM์—์„œ ๋ชจ๋ธ ํŠธ๋ ˆ์ด๋‹์„ ๋ณด์—ฌ์ฃผ๋Š” ํ„ฐ๋ฏธ๋„ ๋ช…๋ น ์ด๋ฏธ์ง€

์Šค์™‘ ๊ณต๊ฐ„ ํ• ๋‹น(์„ ํƒ ์‚ฌํ•ญ)

๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ, 64GB์˜ ์ถ”๊ฐ€ ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ๋กœ GCP ์ธ์Šคํ„ด์Šค๋ฅผ ์ฆํญํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”:

sudo fallocate -l 64G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h  # confirm the memory increment

๊ฒฐ๋ก 

์ถ•ํ•˜๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์ด์ œ YOLOv5 ์˜ ๊ธฐ๋Šฅ๊ณผ ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ๋›ฐ์–ด๋‚œ ์—ฐ์‚ฐ ๋Šฅ๋ ฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์กฐํ•ฉ์€ ๋ฌผ์ฒด ๊ฐ์ง€ ์ž‘์—…์— ํ™•์žฅ์„ฑ, ํšจ์œจ์„ฑ, ๋‹ค์–‘์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ, ํ•™์ˆ  ์—ฐ๊ตฌ, ์‚ฐ์—…์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋“  ํด๋ผ์šฐ๋“œ์—์„œ AI์™€ ๋จธ์‹  ๋Ÿฌ๋‹์˜ ์„ธ๊ณ„๋กœ ์ค‘์š”ํ•œ ๋ฐœ๊ฑธ์Œ์„ ๋‚ด๋””๋”˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ์ •์„ ๋ฌธ์„œํ™”ํ•˜๊ณ , Ultralytics ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ, GitHub ํ† ๋ก ๊ณผ ๊ฐ™์€ ํ˜‘์—…์˜ ์žฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋”์šฑ ์„ฑ์žฅํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. ์ด์ œ YOLOv5 ๋ฐ GCP์™€ ํ•จ๊ป˜ ํ˜์‹ ์„ ์‹œ์ž‘ํ•˜์„ธ์š”! ๐ŸŒŸ

ML ๊ธฐ์ˆ ๊ณผ ์ง€์‹์„ ๊ณ„์† ํ–ฅ์ƒํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ์œ ๋‹ˆํ‹ฐ์˜ ๋ฌธ์„œ์™€ ํŠœํ† ๋ฆฌ์–ผ์—์„œ ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. AI ๋ชจํ—˜์„ ๊ณ„์†ํ•˜์„ธ์š”!



์ƒ์„ฑ๋จ 2023-11-12, ์—…๋ฐ์ดํŠธ๋จ 2023-12-21
์ž‘์„ฑ์ž: glenn-jocher (3)

๋Œ“๊ธ€