はじめに
- AIな案件で、データサイエンティストによるPoCに目処がつき、機械学習エンジニア?データエンジニア?ソフトウェアエンジニア?により実システムに落とし込んでいくぞ!という段階でやったこと・気を付けるべきことのメモです。
- モデリングはなんとなく終わっていて、インフラ構築して、APIバックエンド構築して、モデルをデプロイして、テストしていく感じを想定しています。(推論環境にフォーカスしています。)
フェーズの大まかな流れ
フェーズ別のやったこと・気を付けるべきこと
01_PJ独自要件確認
- 環境について
- データ連携
- 役割分担
- レイヤ(モデル・インフラ・バックエンド・フロントエンド)×フェーズ(設計・構築・運用) ※他ベンダが絡むときは特に
- 特に、運用ベンダと認識を合わせておく(保守運用費、引継ぎ可能か、モジュールの受け渡し)
- 費用の分担(開発環境のインフラコスト、ライセンス利用料等)
02_アーキテクチャ検討(サービス選定、ミドルウェア選定)、構築
- 「(上記の)PJ独自要件」「動作可否」「性能(TAT、スループット)」「ランニングコスト」「運用コスト(デプロイ、監視等)」あたりを考慮して比較検討する。
- 通常のアプリケーションと比較して、枯れていないパッケージを使いがちなので、きちんと早めの段階で動作確認しておく。(以外と相性とかある。パッケージとAPサーバの相性とか)
- 通常のアプリケーションと同様だが、「負荷が重そうな処理だけ先行して簡易性能テストをしたが、後から他の処理の方が重かった」はあるあるなので気を付ける。
- CIに「モデル精度のテスト」も組み込む。前モデルとの比較なり、ベースラインとの比較なり。
03_パラメータチューニング
まとめ
- 「重い処理に絞って事前性能検証をしたが残りに重いのが、」はよくやりがち。早く全部やってみる。
- 早く本番の構成、ライブラリバージョンを固めて動作確認する。意外と相性とかあったりする。
- GPUの挙動をよく見ておく。起動時に一気に確保しにかかったりする。(制御できたりするが。)
おわりに
- 基本的に通常のシステム構築と同じですが、AIシステム独特な部分もあるので、実務を通してナレッジを貯めていきたいと思います。