見出し画像

YOLO & Triton Inference ServerをAWS EC2にデプロイする

前提

ハマったので備忘録。
これまでローカルPC(Ubuntu 18.04)にTriton inference serverをデプロイしていたが、実運用を鑑み、AWS EC2にデプロイすることとする。Auto Scaling も考えられるが、それは今後行う。

目的

YOLOを使った物体検出を行う。データセットは自分で用意して、学習済み。ここではそのデプロイについて記載する。画像処理などのアプリケーションをデプロイするためにはGPUが必要となり、できるだけ安く高性能にデプロイしたい。そこで候補に上がるのがNVIDIA のTriton Inference Serrver。オープンソースでクラウド側で推論して、結果を返してくれる。ただし、サーバに一つはGPUが必要。

YOLOをtritonを使ってデプロイ

以下のコードが非常にわかりやすい。簡単にデプロイできる。

EC2 with GPU

クラウド上にLinuxを用意できる。これにGPUもつけられる。しかしここでハマった。EC2にGPUを搭載するにはvCPUが必要となる。これの上限が少なく設定されており、これをAWS側に増やすようにリクエストしなければならない。on demand instance のvCPUとspot instanceの vCPUを間違ってrequestしてしまい、なかなか立ち上げられなかった。しかもAWS側が必ず1回断ってくる。on demandでinstanceを無事launch。spot instanceについては今後勉強。

Deep Learning AMI GPU PyTorch 1.13.1 (Ubuntu 20.04) 20230315を使用

これまで使用してきたUbuntu環境に合わせるため、上記のAMIを選択。8個のvCPUを使用してg4dn.2xlargeを使用。以下が参考になった。https://note.com/altbridgetech/n/n44aa34f73540

20.04向けにコンテナ変更

上記macnicaのサイトでは18.04を前提としているため、上記のままでは動かない。以下を参考にtriton_config_x86.shのPYTORCH_TAG, TRITON_TAGを20.04に対応するため以下のように変更。

PYTORCH_TAG="22.12-py3"
TRITON_TAG="22.12-py3"

これをやってしまえば、サーバ側でモデルの変換などを実施して、Ubuntuであれば以下でローンチ可能。yolov5がインストールされないのでpipで持ってきた。

./triton_start_grpc_x86.sh

.gitignoreで自作したモデル(.pt)はどはデフォルトでgitに上がらないので、注意。scpで自前で持ってきた。

今後の検討内容(予定)

  • AWS内のセキュリティ関連

  • FP16化



この記事が気に入ったらサポートをしてみませんか?