YOLOv5 AWS ๋ฅ ๋ฌ๋ ์ธ์คํด์ค์์ ๐: ์ ์ฒด ๊ฐ์ด๋
๊ณ ์ฑ๋ฅ ๋ฅ ๋ฌ๋ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ฒ์ ์ด๋ณด์์๊ฒ๋ ์ด๋ ค์ธ ์ ์์ง๋ง, ๊ฑฑ์ ํ์ง ๋ง์ธ์! ๐ ๏ธ ์ด ๊ฐ์ด๋์์๋ AWS ๋ฅ ๋ฌ๋ ์ธ์คํด์ค์์ YOLOv5 ์ ์ค์ ํ๊ณ ์คํํ๋ ๊ณผ์ ์ ์๋ดํด ๋๋ฆฝ๋๋ค. Amazon Web Services(AWS)์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๋จธ์ ๋ฌ๋์ ์ฒ์ ์ ํ๋ ๋ถ๋ค๋ ๋น ๋ฅด๊ณ ๋น์ฉ ํจ์จ์ ์ผ๋ก ์์ํ ์ ์์ต๋๋ค. AWS ํ๋ซํผ์ ํ์ฅ์ฑ์ ์คํ๊ณผ ํ๋ก๋์ ๋ฐฐํฌ ๋ชจ๋์ ์ ํฉํฉ๋๋ค.
YOLOv5 ์ ๋ค๋ฅธ ๋น ๋ฅธ ์์ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Colab ๋ ธํธ๋ถ , GCP ๋ฅ ๋ฌ๋ VM์ ๋์ปค ์ด๋ฏธ์ง์ ๋์ปค ํ๋ธ .
1๋จ๊ณ: AWS ์ฝ์ ๋ก๊ทธ์ธ
๋จผ์ ๊ณ์ ์ ์์ฑํ๊ฑฐ๋ https://aws.amazon.com/console/ ์์ AWS ์ฝ์์ ๋ก๊ทธ์ธํฉ๋๋ค . ๋ก๊ทธ์ธํ ํ ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ์ค์ ํ EC2 ์๋น์ค๋ฅผ ์ ํํฉ๋๋ค.
2๋จ๊ณ: ์ธ์คํด์ค ์์
EC2 ๋์๋ณด๋์์ ์ ๊ฐ์ ์๋ฒ๋ฅผ ์์ฑํ๋ ๊ด๋ฌธ์ธ ์ธ์คํด์ค ์์ ๋ฒํผ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ฌ๋ฐ๋ฅธ ์๋ง์กด ๋จธ์ ์ด๋ฏธ์ง(AMI) ์ ํํ๊ธฐ
์ฌ๊ธฐ์์ ์ธ์คํด์ค์ ์ฌ์ฉํ ์ด์ ์ฒด์ ๋ฐ ์ํํธ์จ์ด ์คํ์ ์ ํํฉ๋๋ค. ๊ฒ์ ํ๋์'๋ฅ ๋ฌ๋'์ ์ ๋ ฅํ๊ณ ํน๋ณํ ์๊ตฌ ์ฌํญ์ด ์๋ ํ ์ต์ Ubuntu ๊ธฐ๋ฐ ๋ฅ ๋ฌ๋ AMI๋ฅผ ์ ํํฉ๋๋ค. Amazon์ ๋ฅ ๋ฌ๋ AMI๋ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ์ GPU ๋๋ผ์ด๋ฒ๊ฐ ์ฌ์ ์ค์น๋์ด ์ ๊ณต๋๋ฏ๋ก ์ค์ ๊ณผ์ ์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์ธ์คํด์ค ์ ํ ์ ํํ๊ธฐ
๋ฅ ๋ฌ๋ ์์ ์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ธ ํ์ต ์๋๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์๋ GPU ์ธ์คํด์ค ์ ํ์ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ธ์คํด์ค ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ ๋ ๋ชจ๋ธ์ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ์ด ์ธ์คํด์ค๊ฐ ์ ๊ณตํ ์ ์๋ ์ฉ๋์ ์ด๊ณผํด์๋ ์ ๋๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
์ฐธ๊ณ : ๋ชจ๋ธ์ ํฌ๊ธฐ๋ ์ธ์คํด์ค๋ฅผ ์ ํํ ๋ ๊ณ ๋ คํด์ผ ํ ์์์ ๋๋ค. ๋ชจ๋ธ์ด ์ธ์คํด์ค์ ์ฌ์ฉ ๊ฐ๋ฅํ RAM์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๋ค๋ฅธ ์ธ์คํด์ค ์ ํ์ ์ ํํ์ธ์.
์ฌ์ฉ ๊ฐ๋ฅํ GPU ์ธ์คํด์ค ์ ํ ๋ชฉ๋ก์ EC2 ์ธ์คํด์ค ์ ํ, ํนํ ๊ฐ์ํ๋ ์ปดํจํ ์์ ํ์ธํ์ธ์.
GPU ๋ชจ๋ํฐ๋ง ๋ฐ ์ต์ ํ์ ๋ํ ์์ธํ ๋ด์ฉ์ GPU ๋ชจ๋ํฐ๋ง ๋ฐ ์ต์ ํ๋ฅผ ์ฐธ์กฐํ์ธ์. ๊ฐ๊ฒฉ ์ฑ ์ ์ ๋ํด์๋ ์จ๋๋งจ๋ ๊ฐ๊ฒฉ ์ฑ ์ ๋ฐ ํ๋ฌผ ๊ฐ๊ฒฉ ์ฑ ์ ์ ์ฐธ์กฐํ์ธ์.
์ธ์คํด์ค ๊ตฌ์ฑ
Amazon EC2 ์คํ ์ธ์คํด์ค๋ ์ฌ์ฉํ์ง ์๋ ์ฉ๋์ ํ์ค ๋น์ฉ์ ์ผ๋ถ๋ก ์ ์ฐฐํ ์ ์์ผ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๋ ๋น์ฉ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์คํ ์ธ์คํด์ค๊ฐ ๋ค์ด๋๋๋ผ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋๋ ์๊ตฌ์ ์ธ ํ๊ฒฝ์ ์ํ๋ค๋ฉด ์๊ตฌ ์์ฒญ์ ์ ํํ์ธ์.
์์ํ๊ธฐ ์ ์ 4~7๋จ๊ณ์์ ํ์์ ๋ฐ๋ผ ๋๋จธ์ง ์ธ์คํด์ค ์ค์ ๋ฐ ๋ณด์ ๊ตฌ์ฑ์ ์กฐ์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
3๋จ๊ณ: ์ธ์คํด์ค์ ์ฐ๊ฒฐ
์ธ์คํด์ค๊ฐ ์คํ ์ค์ด๋ฉด ํด๋น ํ์ธ๋์ ์ ํํ๊ณ ์ฐ๊ฒฐ์ ํด๋ฆญํ์ฌ SSH ์ ๋ณด์ ์ก์ธ์คํฉ๋๋ค. ํ์๋ SSH ๋ช ๋ น์ ์ํ๋ ํฐ๋ฏธ๋์์ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค.
4๋จ๊ณ: ์คํ YOLOv5
์ธ์คํด์ค์ ๋ก๊ทธ์ธํ๋ฉด ์ด์ YOLOv5 ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ๊ณ Python 3.8 ์ด์ ํ๊ฒฝ์์ ์ข ์์ฑ์ ์ค์นํ ์ค๋น๊ฐ ๋ ๊ฒ์ ๋๋ค. YOLOv5 ์ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ ์ธํธ๊ฐ ์ต์ ๋ฆด๋ฆฌ์ค์์ ์๋์ผ๋ก ๋ค์ด๋ก๋๋ฉ๋๋ค.
git clone https://github.com/ultralytics/yolov5 # clone repository
cd yolov5
pip install -r requirements.txt # install dependencies
ํ๊ฒฝ์ด ์ค์ ๋๋ฉด ํ์ต, ์ ํจ์ฑ ๊ฒ์ฌ, ์ถ๋ก ์ํ, 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
์ ํ์ ์ถ๊ฐ ๊ธฐ๋ฅ
๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ์ ๊ตฌ์ธ์ฃผ๊ฐ ๋ ์ ์๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ถ๊ฐํ๋ ค๋ฉด ์คํํ์ธ์:
sudo fallocate -l 64G /swapfile # allocate 64GB swap file
sudo chmod 600 /swapfile # modify permissions
sudo mkswap /swapfile # set up a Linux swap area
sudo swapon /swapfile # activate swap file
free -h # verify swap memory
์ด์ ๋์ ๋๋ค! ์ด์ AWS ๋ฅ ๋ฌ๋ ์ธ์คํด์ค๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์์ฑํ๊ณ YOLOv5 ์ ์คํํ์ต๋๋ค. ์ด์ ๋ง ๊ฐ์ฒด ๊ฐ์ง๋ฅผ ์์ํ๋ ํ๋ก๋์ ์ ์ํด ํ์ฅํ๋ , ์ด ์ค์ ์ ๋จธ์ ๋ฌ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ฆ๊ฑฐ์ด ํ์ต, ๊ฒ์ฆ, ๋ฐฐํฌ๊ฐ ๋์๊ธธ ๋ฐ๋๋๋ค! ๋์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ๋ ฅํ AWS ์ค๋ช ์์ ํ๋ฐํ Ultralytics ์ปค๋ฎค๋ํฐ์์ ๋์์ ๋ฐ์ผ์ค ์ ์์ต๋๋ค.