๋ง์คํฐํ๊ธฐ YOLOv5 ๐ Google ํด๋ผ์ฐ๋ ํ๋ซํผ(GCP) ๋ฅ ๋ฌ๋ ๊ฐ์ ๋จธ์ (VM)์ ๋ฐฐํฌ โญ
ํนํ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ๊ฐ๋ ฅํ ์ฑ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ํ์ฉํ๋ค๋ฉด ์ธ๊ณต์ง๋ฅ๊ณผ ๋จธ์ ๋ฌ๋์ ์ฌ์ ์ ์์ํ๋ ๊ฒ์ ๋งค์ฐ ํฅ๋ฏธ์ง์งํ ์ผ์ด ๋ ์ ์์ต๋๋ค. Google Cloud Platform(GCP)์ ๋จธ์ ๋ฌ๋ ์ ํธ๊ฐ์ ์ ๋ฌธ๊ฐ ๋ชจ๋๋ฅผ ์ํด ๋ง์ถคํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌํ ๋๊ตฌ ์ค ํ๋๊ฐ ๋ฐ์ดํฐ ๊ณผํ ๋ฐ ML ์์ ์ ์ํด ์ฌ์ ๊ตฌ์ฑ๋ ๋ฅ ๋ฌ๋ VM์ ๋๋ค. ์ด ํํ ๋ฆฌ์ผ์์๋ GCP ๋ฅ ๋ฌ๋ VM์์ YOLOv5 ์ ์ค์ ํ๋ ๊ณผ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ฐ์ด๋๋ ML์ ์ฒซ๋ฐ์ ๋ด๋๋ ์ด๋ณด์์ด๋ ์๋ จ๋ ์ค๋ฌด์์ด๋ ์๊ด์์ด YOLOv5 ์ ํตํด ๊ฐ์ฒด ๊ฐ์ง ๋ชจ๋ธ์ ๊ตฌํํ๋ ๋ช ํํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๋ํ ์ ๊ท GCP ์ฌ์ฉ์๋ผ๋ฉด ํ๋ก์ ํธ๋ฅผ ์์ํ ์ ์๋ $300 ๋ฌด๋ฃ ํฌ๋ ๋ง ํํ๋ ๋ฐ์ ์ ์์ต๋๋ค.
GCP ์ธ์๋ ๋ค์๊ณผ ๊ฐ์ด YOLOv5 ์ ์ก์ธ์คํ ์ ์๋ ๋ค๋ฅธ ๋น ๋ฅธ ์์ ์ต์ ์ ์ดํด๋ณด์ธ์. Colab ๋ ธํธ๋ถ ์ ํ์ฅ์ฑ ๋๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ๊ฒฝํ์ ์ํด Amazon AWS. ๋ํ ์ปจํ ์ด๋ ์ ํธ๊ฐ๋ ๋ค์์์ ๊ณต์ Docker ์ด๋ฏธ์ง๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ๋์ปค ํ๋ธ ๋ฅผ ์ฌ์ฉํ์ฌ ์บก์ํ๋ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค.
1๋จ๊ณ: ๋ฅ ๋ฌ๋ ๊ฐ์ ๋จธ์ ์์ฑ ๋ฐ ๊ตฌ์ฑ
๋ฅ ๋ฌ๋์ ๋ง๊ฒ ์กฐ์ ๋ ๊ฐ์ ๋จธ์ ์ ๋ง๋๋ ๊ฒ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค:
- GCP ๋ง์ผํ๋ ์ด์ค๋ก ์ด๋ํ์ฌ ๋ฅ ๋ฌ๋ VM์ ์ ํํฉ๋๋ค.
- n1 ํ์ค 8 ์ธ์คํด์ค๋ฅผ ์ ํํ๋ฉด 8๊ฐ์ vCPU์ 30GB ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ท ํ ์๊ฒ ์ ๊ณต๋๋ฏ๋ก ์ ํฌ์ ์๊ตฌ ์ฌํญ์ ์ด์์ ์ ๋๋ค.
- ๋ค์์ผ๋ก GPU ์ ์ ํํฉ๋๋ค. ์ํฌ๋ก๋์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง, T4์ ๊ฐ์ ๊ธฐ๋ณธ ๋ชจ๋ธ์ด๋ผ๋ ๋ชจ๋ธ ํ์ต ์๋๊ฐ ํ์ ํ ๋นจ๋ผ์ง๋๋ค.
- '์ฒ์ ์์ํ ๋ ์๋์ผ๋ก NVIDIA GPU ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ์๊ฒ ์ต๋๊น?' ํ์ธ๋์ ์ ํํ๋ฉด ๋ฒ๊ฑฐ๋ก์ ์์ด ์ค์ ํ ์ ์์ต๋๋ค.
- 300GB SSD ์๊ตฌ ๋์คํฌ๋ฅผ ํ ๋นํ์ฌ I/O ์์ ์ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ์ง ์๋๋ก ํ์ธ์.
- '๋ฐฐํฌ'๋ฅผ ๋๋ฅด๋ฉด GCP๊ฐ ๋ง์ถคํ ๋ฅ ๋ฌ๋ ๊ฐ์ ๋จธ์ ์ ํ๋ก๋น์ ๋ํ๋ ๋ง๋ฒ์ ๋ถ๋ฆฝ๋๋ค.
์ด ๊ฐ์ ๋จธ์ ์๋ YOLOv5 ์ ํ์ํ ๋ชจ๋ ์ข ์์ฑ์ ํธ๋ฆฌํ๊ฒ ๋ฒ๋ค๋ก ์ ๊ณตํ๋ Anaconda Python ๋ฐฐํฌ๋ฅผ ํฌํจํ์ฌ ์ฌ์ ์ค์น๋ ๋ค์ํ ๋๊ตฌ์ ํ๋ ์์ํฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
2๋จ๊ณ: ๋ค์ ์ฉ๋์ VM ์ค๋น 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 ์์ ๋ช ๊ฐ์ง ๋ช ๋ น๋ง์ผ๋ก ํน์ ์๊ตฌ์ ๋ง๋ ๋ง์ถคํ ๊ฐ์ฒด ๊ฐ์ง ๋ชจ๋ธ์ ํ์ต์ํค๊ฑฐ๋ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ์์ ์์ ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์ค์ ๊ณต๊ฐ ํ ๋น(์ ํ ์ฌํญ)
๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ, 64GB์ ์ถ๊ฐ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ก GCP ์ธ์คํด์ค๋ฅผ ์ฆํญํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์:
sudo fallocate -l 64G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h # confirm the memory increment
๊ฒฐ๋ก
์ถํ๋๋ฆฝ๋๋ค! ์ด์ YOLOv5 ์ ๊ธฐ๋ฅ๊ณผ Google ํด๋ผ์ฐ๋ ํ๋ซํผ์ ๊ณ์ฐ ๋ฅ๋ ฅ์ ํ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค. ์ด ์กฐํฉ์ ๋ฌผ์ฒด ๊ฐ์ง ์์ ์ ํ์ฅ์ฑ, ํจ์จ์ฑ, ๋ค์ฉ๋์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ธ ํ๋ก์ ํธ๋ , ํ์ ์ฐ๊ตฌ๋ , ์ฐ์ ์์ฉ ๋ถ์ผ๋ , ํด๋ผ์ฐ๋์์ AI์ ๋จธ์ ๋ฌ๋์ ์ธ๊ณ๋ก ์ค์ํ ๋ฐ๊ฑธ์์ ๋ด๋๋ ๊ฒ์ ๋๋ค.
์ฌ์ ์ ๋ฌธ์ํํ๊ณ , Ultralytics ์ปค๋ฎค๋ํฐ์ ์ธ์ฌ์ดํธ๋ฅผ ๊ณต์ ํ๋ฉฐ, GitHub ํ ๋ก ๊ณผ ๊ฐ์ ํ์ ์ ์ฅ์ ํ์ฉํ์ฌ ๋์ฑ ์ฑ์ฅํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ์ด์ YOLOv5 ๋ฐ GCP์ ํจ๊ป ํ์ ์ ์์ํ์ธ์! ๐
ML ๊ธฐ์ ๊ณผ ์ง์์ ๊ณ์ ํฅ์์ํค๊ณ ์ถ์ผ์ ๊ฐ์? ์ค๋ช ์ ๋ฐ ํํ ๋ฆฌ์ผ์ ํตํด ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ดํด๋ณด์ธ์. AI ๋ชจํ์ ๊ณ์ํ์ธ์!