AWS Deep Learning Instance上のUltralytics YOLOv5 🚀:完全ガイド#
高性能なディープラーニング環境の構築は、特に初心者にとって難しく感じられることがあります。しかし心配はいりません! 🛠️ このガイドでは、AWS Deep Learningインスタンス上でUltralytics YOLOv5をセットアップして実行するためのステップバイステップのウォークスルーを提供します。Amazon Web Services (AWS)のパワーを活用することで、機械学習 (ML)の初心者であっても、迅速かつコスト効率よく開始できます。AWSプラットフォームのスケーラビリティにより、実験と本番デプロイの両方に最適です。
YOLOv5のその他のクイックスタートオプションには、Google Colab Notebook 、Kaggle environments
、GCP Deep Learning VM、およびDocker Hub
で利用可能なビルド済みDockerイメージが含まれます。
ステップ1:AWSコンソールへのサインイン#
まず、AWS Management Consoleのアカウントを作成するか、サインインします。ログインしたら、EC2サービスのダッシュボードに移動し、そこで仮想サーバー(インスタンス)を管理できます。

ステップ2:インスタンスの起動#
EC2ダッシュボードから、**Launch Instance(インスタンスの起動)**ボタンをクリックします。これにより、ニーズに合わせた新しい仮想サーバーを作成するプロセスが始まります。

適切なAmazon Machine Image (AMI) の選択#
正しいAMIを選択することが重要です。これにより、インスタンスのオペレーティングシステムとプレインストールされたソフトウェアが決まります。検索バーに「Deep Learning」と入力し、最新のUbuntuベースのDeep Learning AMIを選択します(別のOSに関する特別な要件がない限り)。AmazonのDeep Learning AMIには、人気のあるディープラーニングフレームワーク(YOLOv5で使用されるPyTorchなど)と必要なGPUドライバーがプレインストールされており、セットアッププロセスが大幅に効率化されます。

インスタンスタイプの選択#
ディープラーニングモデルのトレーニングのような負荷の高いタスクには、GPUアクセラレーションを備えたインスタンスタイプを選択することを強く推奨します。GPUは、CPUと比較してモデルのトレーニング時間を大幅に短縮できます。インスタンスサイズを選択する際は、メモリ容量(RAM)がモデルとデータセットに対して十分であることを確認してください。
注意: モデルとデータセットのサイズは重要な要素です。MLタスクで選択したインスタンスが提供する以上のメモリが必要な場合は、パフォーマンスの問題やエラーを避けるために、より大きなインスタンスタイプを選択する必要があります。
EC2 Instance Types pageで、特にAccelerated Computingカテゴリの下にある利用可能なGPUインスタンスタイプを探索します。

GPU使用率のモニタリングと最適化に関する詳細情報については、GPU Monitoring and Optimizationに関するAWSガイドを参照してください。On-Demand Pricingを使用してコストを比較し、Spot Instance Pricingで潜在的な節約を検討してください。
インスタンスの設定#
よりコスト効率の高いアプローチとして、Amazon EC2 Spot Instancesの利用を検討してください。Spot Instanceを利用すると、未使用のEC2キャパシティに入札することができ、多くの場合、オンデマンド価格よりも大幅に割引されます。永続性が必要なタスク(Spot Instanceが中断されてもデータを保存する必要がある場合)には、**持続リクエスト(persistent request)**を選択してください。これにより、ストレージボリュームが確実に保持されます。

インスタンス起動ウィザードのステップ4~7に進み、ストレージの設定、タグの追加、セキュリティグループのセットアップ(SSHポート22がIPから開放されていることを確認)を行い、Launchをクリックする前に設定を確認してください。また、安全なSSHアクセスのためにキーペアを作成するか、既存のキーペアを選択する必要があります。
ステップ3:インスタンスへの接続#
インスタンスの状態が「実行中 (running)」と表示されたら、EC2ダッシュボードからそれを選択します。Connectボタンをクリックして、接続オプションを表示します。ローカルターミナル(macOS/LinuxのTerminalやWindowsのPuTTY/WSLなど)で提供されているSSHコマンドの例を使用して、セキュアな接続を確立します。起動時に作成または選択したプライベートキーファイル(.pem)が必要になります。

ステップ4:Ultralytics YOLOv5の実行#
SSH経由で接続されたので、YOLOv5をセットアップして実行できます。まず、公式のYOLOv5リポジトリをGitHubからクローンし、ディレクトリに移動します。次に、pipを使用して必要な依存関係をインストールします。Python 3.8環境以降を使用することをお勧めします。トレーニングや検出などのコマンドを実行すると、必要なモデルとデータセットが最新のYOLOv5リリースから自動的にダウンロードされます。
# Clone the YOLOv5 repository
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Install required packages
pip install -r requirements.txt環境が準備できたら、さまざまなタスクでYOLOv5の使用を開始できます:
# Train a YOLOv5 model on a custom dataset (e.g., coco128.yaml)
python train.py --data coco128.yaml --weights yolov5s.pt --img 640
# Validate the performance (Precision, Recall, mAP) of a trained model (e.g., yolov5s.pt)
python val.py --weights yolov5s.pt --data coco128.yaml --img 640
# Run inference (object detection) on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos/ --img 640
# Export the trained model to various formats like ONNX, CoreML, TFLite for deployment
# See https://docs.ultralytics.com/modes/export/ for more details
python export.py --weights yolov5s.pt --include onnx coreml tflite --img 640Training、Validation、Prediction (Inference)、およびExportingに関する詳細なガイドについては、Ultralyticsドキュメントを参照してください。
オプションの追加:スワップメモリの増加#
非常に大規模なデータセットを扱う場合や、トレーニング中にメモリ制限に遭遇した場合は、インスタンスのスワップメモリを増やすことが役立つことがあります。スワップ領域を使用すると、ディスク容量を仮想RAMとして利用できるようになります。
# Allocate a 64GB swap file (adjust size as needed)
sudo fallocate -l 64G /swapfile
# Set correct permissions
sudo chmod 600 /swapfile
# Set up the file as a Linux swap area
sudo mkswap /swapfile
# Enable the swap file
sudo swapon /swapfile
# Verify the swap memory is active
free -hおめでとうございます! 🎉 AWS Deep Learningインスタンスのセットアップに成功し、Ultralytics YOLOv5をインストールして、object detectionタスクを実行する準備が整いました。事前学習済みモデルで実験する場合でも、独自のデータでトレーニングする場合でも、この強力なセットアップはcomputer visionプロジェクトのスケーラブルな基盤を提供します。問題が発生した場合は、豊富なAWS documentationや、FAQなどの便利なUltralyticsコミュニティリソースを参照してください。ハッピーディテクティング!