Bank Jago が GPU タイム シェアリングとスポット インスタンスを活用して顧客オンボーディング システムを最適化した方法
Google Cloud Japan Team
※この投稿は米国時間 2023 年 7 月 11 日に、Google Cloud blog に投稿されたものの抄訳です。
Bank Jago は、人々の生活に寄り添うデジタル エコシステムを通じて、革新的な資金管理ソリューションを提供することで、何百万人ものインドネシア人がそれぞれの夢に一歩近づけるよう支援するという使命を担っています。マイクロ レンディングとデジタル バンキングで実績のあるシリアル イノベーターによって設立された当社は、AI を活用した分析の力を通じて、インドネシアの先駆的なフィンテック ソリューションとなれるよう努めています。エンパワーメントに対する当社のテクノロジー主導のアプローチにより、18 か月以内に 400 万人を超える顧客を獲得できました。
新規顧客をシームレスにオンボーディングするには、光学式文字認識(OCR)システムを導入して、オンライン アカウント設定プロセスでインドネシアの ID カードから情報を取得する必要がありました。本人確認を可能な限り迅速かつ効率的に行うためには、応答時間が 1~3 秒である必要がありました。顧客がオンボーディング プロセスを放棄するのを防ぐには、オンボーディング プロセスの待ち時間を短縮することが重要であるためです。
私たちの当初のアプローチは、オープンソースの ML プラットフォームとして Kubeflow 上に構築された独自の OCR システムを Google Kubernetes Engine(GKE)上で実行するために必要な処理能力を備えた CPU をデプロイすることでした。しかし、特にこの地域ではコンピューティング最適化(C2)CPU が利用できないため、CPU から絞り出せるパフォーマンスには限界があることがわかりました。
この問題を克服するために、私たちが検討した最初の方法は、AVX 512 命令をサポートするライブラリを導入して CPU のパフォーマンスを向上させることでした。この処理能力の向上により、CPU によるデータの処理速度が向上し、ユーザーは圧縮アルゴリズムをより高速に実行できるようになります。欠点は、AVX 512 互換ライブラリを自分たちでコンパイルしなければならないことでした。これがデータ サイエンス チームの負担となり、ML アプリケーションの開発という主要なタスクから遠ざかってしまいました。
ML パイプラインの処理には、より強力な GPU を採用することが唯一の方法であるように思えました。しかし、GPU オプションが法外に高額に見え、コストとパフォーマンスのどちらを優先するかという長年のジレンマに直面していました。私たちは Google Cloud チームと協力して解決策を見つけました。それは、ノードに接続された単一の物理 GPU を複数のコンテナに共有させる GPU タイム シェアリングと呼ばれる GKE 機能です。GKE の GPU タイム シェアリングにより、GPU をより効率的に使用し、ランニング コストを節約できます。また、Google Cloud チームは、可能な限り GKE の未使用の GPU 容量を割引料金で提供する GPU スポット インスタンスのデプロイを提案しました。
以下、OCR のニーズに合わせて GPU タイム シェアリングを有効にするために Google Cloud チームと協力した方法を段階的にまとめました。
GPU タイム シェアリングの最初の前提条件は、GKE バージョン 1.24 以降に Kubernetes クラスタをデプロイすることです。それ以外の場合、GPU タイム シェアリングはサポートされません。
次のステップでは、gcloud コマンドライン ツールで GPU タイム シェアリングを有効にする特定のフラグを設定します。
同じ Google Cloud インスタンスで、gcloud コマンドライン ツールを使用して、費用対効果の高いスポット インスタンスを有効にすることもできます。
GPU タイム シェアリングとスポット インスタンスが有効になったら、次のステップは、GPU パフォーマンスを最適化するために NVIDIA ドライバをインストールすることです。
その後、実際のデプロイ前にサンプル ワークロードを実行して、GPU が有効かつ動作していることを確認することをおすすめします。
スポット インスタンスと GPU タイム シェアリングを組み合わせて使用することで、古い CPU モデルと比較して、ほぼ半分の費用で GPU で高いパフォーマンスを達成できることに驚きました。CPU を使用した場合の OCR 応答時間は 4~6 秒でしたが、必要な目標である 1~3 秒まで時間を簡単に短縮できました。つまり、1 つの GPU の価格で 2 つの GPU のパワーとパフォーマンスが得られます。
GPU 処理の速度により、データ サイエンス チームの時間も大幅に節約できました。これにより、中核的なタスクに集中できるようになっただけでなく、ML プロジェクトをより自由に実験できるようになりました。ML パイプラインのサイクルを CPU での数日から GPU での数時間に短縮することで、基本的にフェイル ファスト(早期に失敗する)を実践し、新しい実験を開始できます。私たちは、物事がうまくいかなかった場合でも、多くの時間やリソースを無駄にすることはないと確信しています。
ML モデリングでの GPU の創造的な導入と Google Cloud チームとの連携により、特にデータ保護と不正行為検出の分野でデジタル バンキング ソリューションを強化する新たな機会が開かれました。OCR 以外にも、センチメント分析に Natural Language AI などの Google Cloud の AI ソリューションや、信用リスク業務におけるモデルの説明可能性のための SHAP 手法を使用する予定です。
長期的には、これにより、データ サイエンティストが Jupyter Notebook で作業中に GPU を共有するなどの可能性が広がります。これらは、Google Cloud チームの協力を得て開発したタイム シェアリングおよびスポット インスタンス技術によって実現される GPU 処理の高レベルのパフォーマンスをさらに活用します。
- ML エンジニア Varun Mallya