Rocket Money x Hugging Face: 本番環境での変動的MLモデルのスケーリング

Rocket Moneyは、レガシーな正規表現(regex)システムから、Hugging FaceのInference APIでホストされるトランスフォーマーベースの機械学習モデルに移行し、これによりアプリは月間10億件以上のトランザクションにスケールし、ユーザーのリテンションを向上させました。

レガシーなRegexをTransformerモデルに置き換える

Rocket Moneyは、銀行トランザクションを分類・カテゴリ化するトランザクション処理パイプラインを利用しており、これは定期的なパターンの識別やコスト交渉のためのマーチャント検出に不可欠です。同社は当初、文字列をブランドにマッピングするためにregexベースの正規化ツールと複雑な意思決定表に依存していました。サブスクリプション経済が拡大し、製品スコープが広がるにつれ、このシステムは継続的なチューニングの必要性と衝突やオーバーラップのリスクにより持続不可能になりました。

bag-of-wordsモデルなどの従来のMLソリューションを試した後、Rocket Moneyはテキスト分類のためにBERTファミリーのモデルを使用した新しいシステムを開発しました。これをサポートするため、ラベルキュー、ゴールドスタンダード検証データセット、ドリフト検出モニタリングのためにRetoolを使った社内ツールを構築しました。

Hugging Faceを使った本番環境での課題克服

Rocket Moneyは、4,000以上のクラスを持つモデルを本番環境に移行する際に、大きなインフラストラクチャの課題に直面しました。このシステムは、低レイテンシーで月間1億件以上の「バースト」負荷に対応するため、高可用性と動的スケーリングが必要でした。

社内MLOpsチームを構築するオーバーヘッドを避けるため、Rocket Moneyは3つのホスティングオプションを評価しました:

  • 社内プロトタイプソリューション: 手作りのホスティングシステム。
  • AWS SageMaker: Rocket MoneyがデータストレージにGCPを使用し、トレーニングにGoogle Vertex Pipelinesを使用しているため、「粗雑でバグが多い」と判断されました。
  • Hugging Face Inference API: セットアップの容易さとトラフィックを迅速に処理できることから選択されました。

最悪のケースを想定したシミュレートされた負荷テストを含む3ヶ月の評価期間を経て、Rocket MoneyはモデルホスティングのためにHugging Faceを正式に採用しました。

統合とビジネスインパクト

Rocket Moneyは、regexシステムからトランスフォーマーモデルへの段階的な移行を実装しました。新規ユーザーを2つのシステムに均等に分割したA/Bテストを実施したところ、有料ユーザーのリテンションとエンゲージメントにおいてMLモデルがレガシーシステムを明らかに上回っていることがわかりました。これにより、2ヶ月かけてユーザーの100%へのフルロールアウトが行われました。

スケーリングとパフォーマンス最適化

トラフィックが増加するにつれ、Rocket Moneyはコスト管理のために推論呼び出しの前にキャッシュレイヤーを実装しました。理論上の最大キャッシュ率は93%でしたが、本番でのキャッシュ率は85%を達成し、Inference APIに送信されるトランザクションのカーディナリティを大幅に削減しました。

初期の課題—本番モデル2つ目のクラス数拡大による停止や、モデル移行中のキャッシュ問題など—を乗り越え、システムは最終的に月間10億件以上のトランザクションの実行レベルにスケールしました。このインフラストラクチャは、アプリストアでのファイナンシャルアプリ第1位の Rocket Money の躍進を支えました。

今後の方向性とモデルトポロジー

Rocket Moneyは引き続き、クラスとパフォーマンスのチューニング、自動監視、モデルライフサイクルの管理(例えば、会社のリブランド対応など)に焦点を当てています。

モデル選択については、Rocket Moneyは専門的なトランスフォーマー分類器が現在、主要な分類タスクにおいて速度とコストの面でLarge Language Models (LLMs)を上回っていることを発見しました。ただし、専門的な分類器が効果が低い可能性がある「ロングテール」のサービス、例えば小規模な地元ビジネス(「ママアンドポップショップ」)に対して、LLMsの検討も進めています。

Sources