この画像共有ネットワークではレコメンダー システムに cuCollections と CUDA Graphs を採用し、エンゲージメントと推論効率を 100 倍以上に高めています。
Pinterest は、写真共有コミュニティが好む画像をより多く提供する方法を設計しています。
4 億人以上の月間アクティブ ユーザーを抱えるこの画像共有ソーシャル メディア サービスは、ユーザーの関心を予測する精度を向上させるために、より大規模なレコメンダー モデルをトレーニングしています。
Pinterest は、毎日 1 時間あたり数億件のユーザー リクエストを処理しています。また、サイト上には約 3,000 億の画像がありますが、そこから関連する画像を 1 人につき約 50 枚に絞り込まなければなりません。
最後のステップは、Pinterest を使用している全ユーザーにとって最も関連性が高く魅力的なコンテンツをランク付けすることです。このステップでは、予測を改善するために、大規模なモデルを最小限のレイテンシで実行するべく、飛躍的な高速化を必要としていました。
Pinterest は、ユーザーのホーム フィードやその他の領域を強化するレコメンダー モデルの精度を高め、エンゲージメントを 16% も向上させました。
Pinterest によると、CPU から NVIDIA GPU に切り替えることでこのような飛躍的な高速化が実現し、広告画像などの他の領域にも簡単に適用できるとのことです。
「普通であれば 2% の向上でも満足するところですが、16% という数字はホーム フィードにとってほんの発端にすぎず、他にも得られるものがあります。これによって、多くの機会につながる道が開かれます」と、Pinterest のソフトウェア エンジニアであるポン エクソンバッチャイ (Pong Eksombatchai) 氏は述べています。
Transformer モデルはより優れた予測が可能で、小売からエンターテインメント、広告まで、さまざまな業界を揺るがしています。しかし、ここ数年間のパフォーマンスの飛躍的な向上は、モデルのパラメーターや計算の数を急増させ、約 100 倍も大きなモデルを提供する必要が生じています。
膨大な推論を同じインフラストラクチャのコストで実現
多くの企業と同じく、Pinterest のエンジニアも最先端のレコメンダー モデルを活用してエンゲージメントを高めたいと考えていました。しかし、こうした大規模なモデルを CPU で実行すると、コストや遅延が 100 倍に増加してしまいます。これでは、新鮮で魅力的な画像をほんの数秒で提供するという魔法のようなユーザー エクスペリエンスが提供できません。
「そのようなレイテンシが発生してしまったら、ユーザーは明らかに喜ばないでしょう。永遠とも思える時間待たされてしまうのですから。私たちは、基本的に CPU でできることの限界にかなり近いところまで来ているのです」とエクソンバッチャイ氏は言います。
同社の課題は、コストやレイテンシの制約を変えずに、上記のような数百倍規模のレコメンダー モデルを提供することでした。
NVIDIA との連携のもと、Pinterest のエンジニアはアーキテクチャの変更に着手し、CPU から GPU クラウド インスタンスへの移行ができるように推論パイプラインとレコメンダー モデルを最適化しました。テクノロジの移行は昨年末に始まりましたが、同社のワークロードの管理方法に大きな変更が必要になりました。結果として、同じ IT 予算で推論効率が 100 倍向上し、目標を達成できました。
「私たちは今、非常に大きなモデルを使い始めています。そこで、このモデルの使用を可能にするのが GPU です」とエクソンバッチャイ氏は言います。
cuCollection を活用する
CPU から GPU に切り替えるには、推論システムのアーキテクチャを見直す必要がありました。いくつかあった問題の中でも特に、エンジニアたちは推論サーバーにワークロードを送信する方法を変更する必要がありました。幸いなことに、移行を容易にするためのツールがあります。
Pinterest の推論サーバーは CPU 用に構築されており、もっと小さいサイズのバッチをサーバーに送信するように設定されていたため、この推論サーバーを変更する必要がありました。GPU ははるかに大きなワークロードを処理できるため、効率を上げるためには、より大きなバッチ リクエストを設定する必要があります。
これが功を奏する領域の 1 つは、埋め込みテーブル ルックアップ モジュールです。埋め込みテーブルは、コンテキスト固有のさまざまな機能とユーザー プロファイルの興味との相互作用を追跡するために使用されます。ユーザーがどこに移動し、Pinterest で何のピンを作成し、共有やその他のさまざまなアクションを行ったかを追跡できるため、ユーザーが次に何をクリックしそうかについての予測を改良するのに役立ちます。
埋め込みテーブルを使用して、コンテキストに基づいてユーザーの好みを段階的に学習するため、Pinterest を使用しているユーザーにより良いコンテンツをお勧めできるようになります。同社の埋め込みテーブル ルックアップ モジュールでは、追跡すべき特徴数が多いため、2 つの計算ステップを何百回も繰り返す必要がありました。
Pinterest のエンジニアは、NVIDIA cuCollections の GPU で高速化された並列ハッシュ テーブルを使用して、この計算回数を大幅に削減しました。また、カスタムの統合埋め込みルックアップ モジュールを設定し、リクエストを 1 つのルックアップにマージできるようにすることで、すぐに良い結果が得られました。
「cuCollections を使用することで、ボトルネックを取り除くことができました」とエクソンバッチャイ氏は言います。
CUDA Graphs を活用
Pinterest は CUDA Graphs を利用することで、残りの小さなバッチ処理を排除し、推論モデルをさらに最適化しました。
CUDA Graphs は、GPU で起動するときの CPU とのやり取りを減らすのに役立ちます。ワークロードを単一のオペレーションではなくグラフとして定義できるように設計されています。単一の CPU オペレーションで複数の GPU オペレーションを起動するメカニズムを提供し、CPU のオーバーヘッドを削減します。
Pinterest は CUDA Graphs を活用して、モデルの推論プロセスを個別にスケジュールされたものではなく、静的なオペレーションのグラフとして表現しました。これにより、カーネル起動のオーバーヘッドなしで、計算を単一のユニットとして処理できるようになりました。
同社は現在、モデルのサーバーの新たなバックエンドとして CUDA Graph をサポートしています。モデルが最初に読み込まれると、モデル サーバーはモデルの推論を 1 回実行して、グラフ インスタンスを構築します。その後、このグラフが推論を繰り返し実行することで、アプリやサイトにコンテンツを表示できます。
Pinterest のエンジニアによると、CUDA Graphs を実装することで、レコメンダー モデルの推論のレイテンシを大幅に短縮することができたとのことです。
GPU により、Pinterest は同予算の CPU では不可能だったことを実現しました。これにより同社は、さまざまなビジネス指標に直接的な影響を与えるような変更を加えることができるようになりました。
Pinterest の GPU による推論と最適化については、GTC セッションの「Serving 100x Bigger Recommender Models (100 倍のレコメンダー モデルを提供する)」や、Pinterest のエンジニアリング ブログをご覧ください。
9 月 19~22 日に開催される GTC に無料で参加登録して、NVIDIA や多数の業界リーダーによるセッションにご参加ください。