![見出し画像](https://assets.st-note.com/production/uploads/images/100978102/rectangle_large_type_2_86294b2e061dcab09df075a185ca3e71.png?width=1200)
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化
この記事が気に入ったらサポートをしてみませんか?