re:Invent 2023: Amazonが生成AIと基盤モデルで実現したショッピング体験の進化
はじめに
海外の様々な講演を日本語記事に書き起こすことで、隠れた良質な情報をもっと身近なものに。そんなコンセプトで進める本企画で今回取り上げるプレゼンテーションはこちら!
📖 AWS re:Invent 2023 - How Amazon.com enhanced shopping with gen AI and foundation models (AMZ301)
この動画では、Amazonが大規模言語モデルをどのように活用してeコマース体験を向上させているかを学べます。画像生成AIやマルチモーダル検索など、最新の技術がAmazonのサービスにどう組み込まれているかが分かります。また、AWS BatchやTrainiumなどのAWSサービスを使って、月に1万回もの実験を効率的に行う舞台裏も覗けます。Amazonのスケールでのモデル開発と運用の実態に迫る、エンジニア必見の内容です。
※ 動画から一部自動生成した記事になります。誤字脱字や誤った内容が記載される可能性がありますので、正確な情報は動画本編をご覧ください。本編
AmazonにおけるAIとMLの活用:セッション概要
皆様、こんにちは。本セッションにご参加いただき、ありがとうございます。Amazon.comがAIおよびgenerative AIモデルを活用して、お客様のショッピング体験をどのように向上させているかについてお話しできることを嬉しく思います。
私はJames Parkと申します。AWSのSenior Solutions Architectを務めております。私はBelindaと申します。Amazonでlarge-scale foundation modelの業務を率いています。皆さん、こんにちは。私はVJです。AmazonのPrincipal Engineerを務めています。
皆様、ありがとうございます。皆様がお席にお着きになりましたので、早速始めさせていただきます。45分から50分ほどお話しさせていただき、その後、質疑応答の時間を設けさせていただきます。
本セッションでは、まずAmazonにおけるMLの背景についてお話しします。次に、foundation modelsの構築と展開における課題について触れます。その後、Belindaが登壇し、彼女のチームがAmazon全体のために行っている取り組みについて詳しくご紹介します。今朝のSwamiのkeynoteをご覧になった方は、画像生成に関する取り組みの一部をご覧になったかもしれません。その背後にいるチームについてもご紹介します。その後、VJが登壇し、AmazonがAWSのサービスを使用して大規模なモデルを構築・展開する方法について、舞台裏を詳しくご説明します。
AmazonにおけるMLの歴史と現状
それでは、まずAmazonにおけるMLの歴史についてお話しさせていただきます。
多くの方々にとって、Amazonが1997年にウェブサイトAmazon.comを立ち上げて始まったことはよく知られているかもしれません。しかし、あまり知られていないかもしれないのは、機械学習が1999年にすぐ後に始まり、最初のMLモデルが書籍の推薦に使用されたことです。
数十年にわたり、明らかにMLは大きく拡大し、Amazon.comの規模も同様に拡大しました。2023年には、3件に1件以上のeコマース購入がAmazon.comで行われました。Amazon.comでは毎分4,000個の商品が販売され、その結果、毎日160万個の小包が発送されています。さらに、Alexaのような付随サービスが毎週数十億件のやり取りを処理しています。
そして繰り返しになりますが、MLは私たちの行うすべてのことに広く浸透しています。毎日予測する4億以上の商品をサポートしています。世界150カ国以上に展開されており、フルフィルメントセンター、商品を運ぶロボット、そして毎日お客様に荷物を届ける30,000台のデリバリーバンなど、インフラストラクチャーに使用する多くのものを支えています。
Amazon.comでのショッピング体験とML活用
私と同様に、皆さんもこの経験に馴染みがあるかもしれません。お客様として、Amazon.comにアクセスし、商品を選び、通常はその商品を購入します。そして舞台裏では、Amazonが梱包して発送し、私の玄関先に届きます。
私は検索バーを頻繁に使用しており、Belindaはその体験を支える技術についてもう少し詳しく説明します。さらに、私はAmazon Primeの会員なので、Amazon Primeのコンテンツを視聴することができます。トップページに表示されるおすすめ商品はMLによって生成され、私に推奨される購入商品もMLによって推奨されています。おそらくあなたにとってもそうだと思いますが、これらのおすすめは驚くほど正確で、私はよくクリックしてそのおすすめ商品を購入してしまいます。
さて、何かを購入した後、その商品や注文処理のプロセスが本格的に動き出します。Amazonの倉庫では毎日何百万もの商品を処理していますが、驚くべきことに、商品を一か所から最終的に配送トラックまで運ぶコンベヤーベルトは10マイル以上もあるのです。私たちはMLを使用して、パッケージの損傷検出などを行い、商品が最高の品質でお客様のもとに届くようにしています。さらに、AWS Monitronのようなサービスを使用して、私たちのコンベヤーベルトが故障して業務に影響を与える前に適切なメンテナンスが行われるようにしています。
Amazonの物流プロセスにおけるML活用
商品がフルフィルメントセンターを通過すると、
トラックに積み込まれます。そのトラックがフルフィルメントセンターを出発してお客様に商品を配送する前に、私たちはすでにMLを使用してトラックのルートを生成しています。これにより、ドライバーは顧客への速度、燃料の節約、そして世界中での効率性の面で最適なルートを知ることができます。
すべてがうまくいけば、その商品はお客様の玄関先に届き、最終的には満足したお客様を見ることができます。しかし、繰り返しになりますが、MLはAmazon全体で広く使用されており、generative AIは 世界中で大きな話題を呼んでいます。私たちはすべての事業部門でgenerative AIを使用しています。例えば、セラーがAmazon.comで商品を出品できるseller fulfillment networkをご存知かもしれません。最近、セラーが私たちのウェブサイトにアクセスして販売したい商品をリストアップすると、バックグラウンドでgenerative AIモデルが実際に商品説明を生成する機能をリリースしました。これにより、セラーは多大な時間を節約できます。100個の商品があれば、100個の異なる商品説明を書きたくないでしょう。このようにして、セラーがより速く、より簡単に商品をリストアップできるようにヘッドスタートを提供しています。
お客様は、おそらくAmazon.comのウェブサイトやモバイルデバイスなどのサービスをご利用いただいていると思います。また、最近、Amazon.comに投稿された他のお客様のレビューを整理し、要約してくれる新機能をリリースしました。例を挙げてみましょう。私はよく何かを購入する前に多くのリサーチをしますが、新しいLCDテレビなどを買う場合、購入ボタンをクリックする前に何百ものレビューを読み込むことがあります。しかし、もうそれをする必要はありません。なぜなら、私たちは100件のレビューをすべて読み込み、お客様が提供した全体的な内容を反映した簡単な要約を提供するAIモデルをバックグラウンドで動かしているからです。また、製品の使いやすさなど、私が興味を持ちそうな重要なポイントにタグ付けもしています。これらの生成AIモデルは、直接的にお客様に利益をもたらしています。
最後に、私たち自身のために生成AIを使用しています。Amazon Oneデバイスをご存知かもしれませんが、これを使えば、Whole Foodsなどの店舗に入り、手のひらだけで選んだ商品を購入することができます。ご想像の通り、これらのデバイスが非常に正確で、適切に反応するようにして、お客様に素晴らしい体験を提供する必要があります。皆さんの手の写真を撮りに行く代わりに、実際に私たちが行ったのは、生成AIモデルを使用してそれらの画像を事前に生成し、デバイスの構築、開発、テストのプロセスで使用することでした。
大規模AIモデル構築の課題
ご想像の通り、Amazonの規模でこれを行うのは非常に難しいことです。生成AIについて話す時、私たちは深層学習やニューラルネットワークモデルについて言及しています。これらは非常に大規模で、しばしば数十億のパラメータを超えることがあります。1つまたは多くのアクセラレータを必要とする場合があり、Amazonの規模では、生成AIのユースケースに投資したい金額をはるかに超えるコストになる可能性があります。しかし、インフラストラクチャの効率性と利用率を最適化し、コスト最適化に最善を尽くして、消費者に低価格を維持できるようにする必要があります。
最後に、私たちは常にお客様を起点としています。これらのモデルのパフォーマンスは、お客様の体験に本質的に重要です。お客様がAmazon.comで何かを購入する際のチェックアウトプロセスを行っている場合、数秒や数分待たせたくありません。これらのプロセスはミリ秒単位で行われる必要があります。そのため、最終的には、ハードウェアに使用するサイズ、コスト最適化戦略、そして最終的にお客様が快適な体験をするために必要なものを確実に提供できるよう、適切な組み合わせを確保する必要があります。
驚くことではないかもしれませんが、これらすべてのことはAWSで行われています。AWS内には、多数のMLサービスが利用可能です。スタックの上位にあるAmazon Comprehendのようなサービスを見れば、データサイエンティストがいなくてもAI機能の恩恵を受けることができます。スタックの下位には、MLフレームワークとインフラストラクチャ層があり、世界は自由自在です。ビジネスをサポートするMLプラットフォームを構築する際に、細かいレベルの粒度で必要なすべての要素を選択することができます。
下の方に、AWS TrainiumやAWS Inferentiaなどのアマゾンシリコンが見えると思います。これらは優れたコストパフォーマンスのオプションで、後ほど詳しく説明します。そのうえで、Amazonが機械学習を広範囲かつ大規模に活用していることを明確にしたいと思います。パフォーマンスと精度を考慮してこれらのモデルを適切に構築するだけでなく、効率性を念頭に置いてトレーニングとデプロイを行うことが非常に重要です。
Amazonの大規模基盤モデル:目標と成果
そこで、Amazonの素晴らしいチームの1つが行っていることをご紹介したいと思います。Belindaさん、ステージへどうぞ。
皆さん、こんにちは。まだこのプレゼンテーションを楽しんでいただけていることを願っています。先ほどお話ししたように、私のチームはAmazonで大規模な基盤モデルの構築に焦点を当てています。私たちの目標は、ディープラーニングシステムの構築とデプロイの方法を変革することです。それによって、Amazonのすべてのサービスを現在の最先端を超えるレベルに引き上げ、同時に多くの新しいダウンストリームアプリケーションの障壁を取り除くことを目指しています。
私たちの主要製品は「semantic representations」と呼ばれ、eコマースに関連する主要なエンティティ、つまりあなたや私がAmazon.comで購入する製品や、製品検索や購入時に入力するクエリなどに対して構築しています。この文脈における「semantics」とは、単に正確なキーワードをマッチングさせるのではなく、大規模言語モデル技術を活用してデータの意味を捉えることに焦点を当てていることを意味します。
これが重要な理由は、本質的にデータ中心のアプローチを活用して、現実世界のエンティティを効果的に表現し、最終的にそれらのエンティティを明示的に概念化するのに役立つからです。多くの研究が示すように、これは多くの機械学習アプリケーションのパフォーマンスを大幅に向上させるのに役立ちます。
高性能な意味表現を得るには、膨大で多様なデータセットが必要ですが、Amazonにはそれが豊富にあります。ここで、画面の右側にある例をお見せしたいと思います。これは、Amazonで商品を検索したときに表示される商品詳細ページのサンプルです。商品詳細ページでは、商品のタイトル、説明、箇条書きの特徴を見ることができます。また、カスタマーレビュー、商品の評価、商品の写真も見ることができ、多くの商品には動画もあります。このように、豊富で膨大な商品情報があり、このような商品ページが何十億もあります。これが私たちのデータ資産です。
Amazonの意味表現モデルの5つの柱
これにより、何千億行ものデータを活用し、数千億のパラメータまでスケールアップする大規模な基盤モデルを構築し、事前学習する機会が得られます。意味表現については、eコマースビジネスにより関連性の高いモデルを作るための5つの重要な柱を特定しました。その5つの柱とは、マルチモーダル、多言語、マルチロケール、マルチタスク、マルチエンティティです。
まず第一に、Amazonのデータは複数のモダリティで利用可能であるため、マルチモーダルなモデルを構築する必要があります。先ほど見た商品情報ページを想像してみてください。非構造化テキスト情報、商品仕様の構造化された表形式データ、ほとんどの商品には画像があり、多くの商品には関連動画もあります。
私たちは、この膨大で多様な情報を活用したいと考えています。また、Amazonは数十カ国で商品を販売しているため、モデルは多言語対応でもあります。同時に、多くの商品情報は文化の違いを考慮するために、販売されるロケールに特化する必要があります。つまり、私たちのモデルは複数のロケールのデータでも学習する必要があります。
さらに、Jamesが先ほど共有したいくつかの例のように、多様なAmazonのタスクセットで学習するためにマルチタスク学習も活用しています。なぜなら、最終的には全ての機械学習チームが私たちのモデルを使用して、さまざまな種類の顧客問題を解決できるようにしたいからです。最後に、同様に重要な要素はマルチエンティティです。なぜなら、異なる重要なエンティティ間の関係を捉えたいからです。例えば、顧客が通常どのような検索クエリを入力するか、どのような種類の商品がどの販売者によって販売されているかなどです。このような質問に答えることは、実際に私たちのeコマースビジネスに大きく役立ちます。そのため、複数のエンティティ上でこれらの関係を活用する基盤モデルを構築したいと考えています。
これらが私たちのセマンティック表現の5つの重要な柱です。実際、私のチームはSearch and Fiveと呼ばれており、それが私のチームの名前の由来です。ここに、2020年第4四半期に設立されて以来の過去3年間で私たちが達成したビジネスインパクトの簡単なまとめがあります。この3年間で、私たちは500のアプリケーションを私たちのモデルを使用して成功裏にローンチし、オンボーディングしました。そのうち130以上のアプリケーションがパフォーマンスの大幅な向上を見せました。これにより、50以上のアプリケーションローンチが促進されました。これらのローンチは全体で、数十億ドルの増分売上に貢献し、私たちの運営において数億ドルのコスト削減に寄与しました。
それだけでなく、これらのローンチの多くはAmazonのショッピングジャーニーにおける欠陥を排除または少なくとも減少させようとしたものであり、私たちはその成果を非常に誇りに思っています。今日は、過去数年間に開発したいくつかのモデルと、それらがAmazonのショッパージャーニーをどのように変革したかについてお話ししたいと思います。
スペリング修正におけるディープラーニングの活用
最初に紹介したい例はスペリング修正です。Amazonの検索ビジョンは、顧客がAmazonで労力をかけずに検索できるようにすることです。そのため、スペリング修正は、意図した単語の正確なスペリングを知らなくても、誰もが欲しいものを検索できるようにする機能です。歴史的に、スペリング修正チームは、この作業を行うために、集中的な手動特徴エンジニアリングの上に古典的な機械学習アルゴリズムを活用してきました。これは時間がかかり、パフォーマンスにも上限がありました。
そこで、私たちはアプリケーションチームと密接に協力しました。一緒に、私たちが構築したsequence-to-sequence生成モデリングアーキテクチャを含む、いくつかのディープラーニングアプローチを探索しました。これは最先端の大規模言語モデルアーキテクチャであり、オフラインおよびオンライン実験を通じて非常に良いパフォーマンスを示すことが証明されました。これをオンラインでローンチした後、顧客体験に大きな改善が見られました。それだけでなく、私たちの貢献は多言語コンテキストでも示されました。なぜなら、私たちはUSでの改善だけでなく、主要なAmazonマーケットプレイス全体で、すべての主要言語でモデルが優れた性能を発揮することを望んでいたからです。そのため、私たちは目標達成を支援する多様で大規模な多言語データセットの上に基盤モデルを構築しました。
多様で大規模な多言語データセットが私たちの目標達成を支援します。2つ目の例はAIが生成する製品画像です。ここでは、家具やアクセサリーなどを含む特定のセットアップの浴室の画像を生成したいと思います。プロンプトの重要なフレーズは「wooden ladder shelf」で、これはAmazonで販売している一般的な製品タイプです。
2つの行を比較してみると、下の行は私たちの社内モデルで生成された画像を示しています。すべての画像に木製のラダーシェルフが表示されているのがわかります。それに対して、上の行はパブリックなオープンソースモデルで生成された画像を示しており、すべての画像で焦点となる製品を生成できていないことがわかります。この例は、Amazonのカタログデータに基づくドメイン内トレーニングが、私たちが求める製品重視のユースケースにより適合した出力画像を生成するのに役立つことを示しています。
AIによる製品画像生成とライフスタイル画像のコンテキスト化
これに関連して、今年投資してきた別のワークストリームがあります:合成ライフスタイル画像のコンテキスト化です。
ライフスタイル画像は非常に重要です。特に顧客がAmazonを訪れ、ホームや家具などのビジュアルカテゴリーを探索する際に重要な役割を果たします。これまでは、優れた写真撮影が良い選択肢を生み出す上で重要な役割を果たしてきました。しかし、このアプローチは時間がかかり、コストがかかります。そのため、人間の関与をほとんど、あるいはまったく必要とせずにライフスタイル製品画像を合成するための機械学習技術を開発することも同様に重要です。
この例では、白い背景の製品フォーカス画像にコンテキストを付加したいと考えています。スライドの右側には、いくつかのプロンプトがあり、コンテキスト要件を含む特定のセットアップを指定しています。これらを使用して、フォーカス製品にコンテキストを付加したいと考えています。その後、社内の画像生成モデルが起動し、プロンプトの要件を満たすさまざまなライフスタイル画像を生成します。
私たちのfoundation modelは、stable diffusionやDreamBoothなどの最先端の生成モデリング技術に基づいて構築されています。これは、Amazonの各チームが優れたコンテンツを生成するために、私たちがどのように投資を行っているかを示すもう一つの例です。
マルチモーダル検索とビデオfoundation modelの開発
では次に、マルチモーダル検索について見ていきましょう。
これは最近リリースされた機能で、顧客が画像とテキストを組み合わせて検索できるようになりました。この例では、店舗での発見からインスピレーションを得たと想像してください。青い花柄のドレスの写真を撮り、Amazon.comで視覚的な検索を試みます。検索バーには、アップロードした写真のサムネイルが表示され、同時に検索結果を絞り込むためのテキスト入力を求めるプロンプトが表示されます。
この場合、同様のスタイルですが半袖のドレスを探しています。最後の画像は、まさに探していたものの結果を示しています。
舞台裏では、この機能は我々のfoundation modelによって実現されています。製品のテキストと画像の両方で事前学習された大規模なMTI(Multimodal Text-Image)マッチングモデルを構築しました。このように、このモデルは実際に製品のテキストと画像の両方で事前学習されており、視覚的情報とテキスト情報を効果的に理解し、マッチングすることができます。
このfoundation modelは、顧客が検索機能をナビゲートし、クエリを変更して製品のバリエーションを見つけることを可能にします。また、我々が構築したfoundation modelが、時として当初の期待を超えた驚くほど素晴らしい機能を提供することもあります。
この簡単な例では、お客様がPhilosophyブランドのシャンプーとシャワージェルの写真をアップロードしました。上の行は別のモデルのコントロールグループからのもので、コントロールモデルが検索された商品と顧客のクエリの視覚的パターンを正確にマッチさせたことがわかります。しかし、商品タイプとブランドは不正確です。下の行は、私たちのモデルが検索できた商品を示しています。この特定の商品は時間とともにパッケージが実際に変更され、視覚的パターンが変わったにもかかわらず、私たちのモデルは正しい種類の商品と正しいブランドを検索することに成功しました。これは、私たちの画像エンコーダーがOCR機能を持っていることがわかったためで、これは元のデザインには含まれていませんでした。
さて、今日お話ししたい最後の例です。これは、今年開発したばかりのvideo foundation modelです。Amazonの商品ビデオデータセットで事前学習されています。検索結果ページの機能としてのこのアプリケーションでは、商品に検索クエリに関連する商品ビデオがある場合、私たちのモデルはこのアプリケーションにクエリと関連する商品ビデオをマッチさせるよう指示することができます。そして、プレビューが自動再生され、お客様がプレビューをクリックすると、プレビューが拡大され、商品リストに完全なビデオが表示されます。これは、お客様が検索プロセスでより簡単に有用な商品情報を得るのを助ける、もう一つの素晴らしい機能です。
Amazonのfoundation model構築プロセス
さて、多様なアプリケーションがありますが、私のチームがどのようにfoundation modelsを構築しているか、内部を見てみましょう。プロセスはこのようなフローになっています:まず、非常に大規模なAmazonデータセットで大規模言語モデルを事前学習します。これにより、最大1000億以上のパラメータを持つ大規模なモデルが生成され、これをbase modelと呼んでいます。その後、多くのAmazonタスクでマルチタスク事前ファインチューニングを行い、このモデルにAmazonビジネスの異なる側面を学習させます。
最後のステップとして、この1000億パラメータのモデルのサイズを、プロダクション要件に適合するようにはるかに小さなTransformerモデルに縮小するためのdistillationを行います。同時に、必要に応じてモデルをファインチューニングし、アプリケーション固有のモデルを作成できるよう、顧客チームと密接に協力しています。また、このモデルをプロダクションにデプロイするために、パートナーチームとも密接に協力しています。
さて、ここまでで少なくとも、Amazonで構築したfoundation model、大規模言語モデル技術について大まかなイメージを持っていただけたと思います。次に、Vijayに引き継ぎ、私たちが途中で遭遇した技術的課題と、それらをAmazonチームと協力してどのように解決したかについて話してもらいます。
AmazonのAI開発における課題と解決策
こんにちは皆さん。Belindaさん、私たちがどのように素晴らしい顧客体験を構築しているかを示してくれてありがとうございます。さて、これらのアプリケーションをすべて構築するためにAWSをどのように使用しているか、舞台裏をお見せしたいと思います。まず、舞台裏にあるものについてお話しします。私たちにはフライホイールがあります。一方では、チームがお客様により素晴らしい体験を提供するにはどうすればよいかを追求しています。
このフライホイールの一方では、チームがお客様により素晴らしい体験を提供する方法を追求しています。これにより、これらの課題を解決するために試したい最新の研究、最新のモデル、最新の技術を追求するよう促されます。このフライホイールは、Amazon全体のさまざまなチームにアクセスし、より大きな影響を与えることができるため、大きな勢いを生み出します。このフライホイールの勢いを維持するために、私たちには3つの課題があります。
1つ目は、これらのモデルのほとんどすべてが計算能力を必要とするため、効率性が非常に重要だということです。次に、他の人と同様に、これらのモデルを実行するために非常に特殊なアクセラレーターが必要です。そのため、多様性をもたらすことは私たちにとって大きな勝利となります - より多くの実験ができるという意味で大きな勝利です。3つ目は、人が鍵となるということです。背後にいるチーム - 私たちは常に彼らの労力を減らすよう努めています。彼らが心配すべきことを減らし、お客様に集中できるようにしたいのです。
モデルやこれらのことについて話し続けていますが、これらは一体何なのでしょうか?M5の中核には、大規模な実験ファンネルがあります。任意の月に、約10,000の実験を行っています。これらの実験の一部は、ファインチューニング、事前トレーニング、新しいデータセットの導入、新しいアルゴリズムの導入、新しいオプティマイザーの導入などに関するものです。これらはすべて、多くの内部タスクから構築された共通の評価スイートを通過します。これらの実験がこの評価タスクを通過すると、最終的に数個のM5モデルが得られ、これらのモデルを本番環境に持っていきます。
つまり、月に10,000の実験を実行するための中核は、これらの実験をどのように私たちが持っているアクセラレーター上にビンパッキングするかということです。ビンパッキングの選択肢は、AWS Batchです。私たちは過去3年間、すべての実験にAWS Batchを使用してきました。特に今年は、AWS Batchの新機能であるfair shareを採用しました。これにより可能になったのは - 以前はM5内のワークストリームごとにキューがありました。約10のキューがあり、それぞれに独自の割り当てがあり、これらのキュー間で多くの手動プロレーションが必要でした。これらのキュー間を移動するのに多くの手動作業が必要だったため、多くのアイドル容量が発生していました。
今年、私たちはこれらのキューをすべて1つのフェアシェアキューに統合しました。現在では、ワークストリームの割り当てを再構成したり、特定のワークロードの優先順位を変更したりするのに数分しかかかりません。これらすべてが、効率性において大きな成果をもたらしました。このグラフは、基本的に、以前は多くのキューがあったため、多くのアクセラレーターがアイドル状態になっていたことを示しています。フェアシェアを持つ単一のバッチキューにすべてを統合した後、アイドル状態のインスタンスは大幅に減少しました。これは、私たちの規模では大きな成果でした。
AWS BatchとAmazon Siliconを活用した効率的な実験環境
次に、先ほど申し上げたように、これらの実験はすべて非常に特殊なアクセラレーターを必要とし、pre-training、fine-tuning、inferenceなどのワークロードに多様性をもたらすことで、より多くの実験を行うことができます。ここでの私たちの選択はAmazon Siliconです。TrainiumとInferentiaの使用方法について説明しましょう。
まず、多くの実験にはまだGPUを使用していますが、pre-trainingやinference時など、ハイパーパラメーターが固定されているワークロードの一部については、Trainiumに移行するという二方向のドア決定を行います。 ここで、私たちが重視する重要な点はチェックポイントの互換性です。通常、モデルはpre-trainingされ、多くのハイパーパラメーター探索を行い、最終的に数ステップ学習します。この時点で、私たちは「これを収束まで学習する必要がある」と判断し、そこからGPUのチェックポイントを取得し、Trainiumチップでの学習を開始します。
次は本番環境についてです。私たちのモデルの一部は、新しいデータが入ってくるたびに毎週更新されます。この段階ではモデルに大きな変更はないので、Trainiumは本当に適しています。一度ポーティングすれば - PyTorchコードを取り、Neuron SDKの要素をすべて注入するのに約100行のコードが必要です。この時点でTrainiumの使用を開始でき、これを使用してモデル更新の週次SLAをすべて満たすことができています。
次に、Belindaがお見せしたスペル修正のデモは2021年から本番環境で稼働しており、その時点からInferentiaを使用しています。Trainiumで使用しているテクニックの一部は、ここでも同様に適用されます。
その時点からInferentiaを使用してきました。Trainiumに使用する手法の一部はInferentiaにも適用されます。特定のワークロードが一定のフリートサイズを必要とすることが分析に基づいて分かると、Inferentiaに移行する作業を行います。これにより約2倍の価格性能比が得られます。同様に、チェックポイントの互換性もあります。GPUで学習し、推論にInferentiaを採用することを決めたら、Neuron SDKを使用してポートできます。その時点で、魔法のように2倍の改善が得られます。
次に、開発者の生産性について話しましょう。このシステム全体において人が鍵となります。小さなチームで1万回の実験を行わなければならない場合、チームの人々が「アーティファクトを失った」「コードを失った」「3ヶ月前に行った実験を失った、何が起こったか分からない」と言っているような典型的な状況を見たことがあるでしょう。 私たちはこのような議論をチームから排除したいと考えました。開発者に信頼性や再現性について考えさせないことが重要です - これらの問題はすべて、私たちが持つフレームワークによって解決されます。
そこで重要なのは、S3上に構築されたグローバルなバージョン管理された不変のストレージレイヤーです。これにより、実験の一部であるすべてのアーティファクトにグローバルにアクセスできます。つまり、実験をリージョン間で移動する際、開発者はアーティファクトの場所などを心配する必要がありません。開発者と話をする中で次に分かったのは、生のデータを学習可能な例に変換するためのデータ処理に、異なるシステムを行き来するのが非常に難しいと感じていたことです。
今年、私たちはこの問題をオンザフライで処理することで解決しました。これらのアクセラレータはすべて非常に強力なCPUと併設されているためです。例えば、P4インスタンスには約100のCPUコアがあり、これらのコアを使ってすべてのデータ処理を行うことができます。CPUコア上でオンザフライですべてのデータ処理を行うことは、私たちにとってもう一つの大きな生産性の向上となりました。
さらに、ワークスペースのスナップショット作成など、実験が決して失われないようにする機能もあります。もう一つ重要なのは、これらのディープラーニングワークロードは完全に信頼できるものではないということです。常に何らかのアクセラレータが暴走するなどの問題が発生します。このような状況に対して重要なのは、再開できることです。私が説明したすべてのデータ処理、入力パイプライン、データローダーなどは決定論的です。そのため、問題が発生した場合、数ステップ戻って再試行したり、パラメータを変更して学習を再開したりすることができます。
最後のポイントは、月に10,000回の実験を行い、そのような速度で進める場合、すべてのジョブメタデータを管理する優れたシステムが必要だということです。1年ほどジョブメタデータを収集すると、分析を行うことができます。どのワークストリームが大きなROIをもたらしているか、どのワークストリームがより効率的か、などです。これらはすべて、プロダクトチームやエンジニアリングチームがパフォーマンスエンジニアリングや最適化に注力すべき箇所を決定するための入力となります。我々の選択は、これらのメタデータをRDSサーバーにプッシュし、プロダクトチームがSQLを使って深く分析できるようにすることでした。
AutoResumeとオンザフライデータ処理の実装
次の2枚のスライドでは、今年実装した2つの重要な機能について説明します。 1つ目はAutoResumeです。多くの場合、優先度の高いジョブのために、ワークロードの優先順位を下げて数週間一時停止することがあります。このような中断に対して、我々はすべてのワークロードにAutoResumeを実装しました。スタックは、すべての実験に対して非常に効率的な分散非同期チェックポイントを行い、これらのチェックポイントを直接S3にプッシュします。
ここで見ているフローは典型的なフローです。データはS3上にあるか、RedshiftのETLジョブにあり、これがAWS Glue Data Catalogに記録されます。そこから、データは直接トレーニングノードにストリーミングされます。トレーニングノードでは、非同期でモデルのチェックポイントが作成され、再びS3にプッシュされます。ここでの重要な洞察は、S3は大きな帯域幅を持っていますが、これらのアクセラレーターインスタンスのネットワークカードを飽和させるには、より効率的なPythonクライアントを使用する必要があるということです。我々が使用しているクライアントは、オープンソースのaws-crt-pythonです。これはアクセラレーターインスタンスのネットワークを飽和させることができます。
我々が使用しているクライアントは、オープンソースのAWS CRT Pythonです。これはアクセラレーターインスタンスのネットワークを飽和させることができ、5テラバイトのモデルを多くのストレージコストをかけずにシームレスにチェックポイントすることができます。なぜなら、単にS3に送信しているだけだからです。
次に、オンザフライのデータ処理について話したいと思います。モデルのチェックポイントに使用するほぼすべての技術は、データ処理にも適用されます。生データを直接これらのインスタンスにストリーミングし、そこでCPUコアを使用します。 この例では、画像をオンザフライで処理し、共有メモリでバッチ処理してからGPUに送信する方法を示しています。これは我々にとって重要です。なぜなら、すべてのPython処理とデータ処理を、モデルコードのすぐ隣にある単純なPythonスクリプトとして配置しているからです。これにより、基本的にそれをアーカイブし、推論のために迅速に送信することができます。
以前、私たちの開発者はSparkを使用し、それを推論に使えるものに変換する方法を考え出す必要がありました。現在では、すべてがPythonで、モデルのトレーニングが行われているのと同じマシン上で動作しています。これは、研究から本番環境へのパイプラインにおいて、私たちにとって大きな勝利でした。このパイプラインは、AWS CRT Pythonを使用し、これらのマシン上でマルチプロセッシングを行うなど、非常にシンプルな技術を使用しています。
再現性と信頼性が確保されたことで、基本的にすべてのデータをS3の不変バージョン管理されたストレージに保存することで再現性を確保しました。そして、自動再開を有効にしたので、ジョブが失敗しても誰も気にしません。それは単にBatch上の別のジョブとなり、スケジュールされ、トレーニングを続行します。開発者からこれらの心配が取り除かれたことで、私たちの開発者は効率性に本当に集中できるようになりました。
すべてのジョブがプロファイリングされ、開発者はこれらのプロファイルを深く掘り下げることができます。コンピューティングとストレージの分離が十分に行われているため、ノイジーネイバーの問題はありません。これにより、私たちのスタックをGPU使用率約90%で運用することができます。残りの10%はあまり管理していません。なぜなら、行動バイアスを持たせ、開発者が新しい実験を試せるようにしたいからです。
簡単にまとめると、研究を本番環境に移行することは依然として課題です。今年は再現性と信頼性に焦点を当て、AWS Batch、Amazon ECS、Amazon S3などを使用してAWSに重要な作業をすべて任せることでこれを実現しました。効率性に焦点を当て、ROIを改善したので、アクセラレータやそれらに費やされる電力のすべてが、モデルの進歩に貢献しています。これは、フェアシェアキューを採用し、また多くのワークロードをAWS TrainiumとAWS Inferentiaチップに移行することで実現しました。
最後に、私たちは開発者に焦点を当てました。開発者の生産性向上に努めました。これは、データの損失、作業の損失、ジョブの停止などを心配する必要がないようにすることで実現しました。彼らはもはやそのような心配をする必要がありません。現在、私たちは複数のリージョンにわたって複製されたスタックを持ち、開発者がジョブを提出できる単一のファサードを提供しています。AWS Batchが正しいリージョンへのルーティングとそこでのオーケストレーションを担当します。
最後に、開発者たちは単一のビューで全てのダッシュボード、パフォーマンスメトリクス、ログを見ることができます。次に、James に戻って締めくくりの言葉をお願いしたいと思います。ありがとうございました。
まとめと質疑応答
VJ、ご覧の通り、M5 チームはいくつかの AWS サービスを使用しており、特に AWS Batch を使用して全ての GPU が常に使用されていることを確認しています。Amazon のスケールを想像してみると、1000 個の GPU のクラスターが 5 分間アイドル状態だった場合、Amazon にとって実際のコストがどれほどになるかがわかります。そのため、私たちは再び、それらのインスタンスが常に稼働し、利用されていることを確認して、お金を無駄にしないようにしています。私たちは Amazon ECS を使用してワークロードをコンテナ化しています。
それらのインスタンスは常に稼働し、利用されているので、お金を無駄にしていません。私たちは Amazon ECS を使用してワークロードをコンテナ化し、リージョン間を機敏に移動する能力を得ています。Amazon S3 は、モデルのトレーニングに使用するトレーニングデータの保存と、トレーニングサイクルを通じてモデルのチェックポイントを書き込むの両方に使用しています。
AWS Trainium と Inferentia は、優れたパフォーマンスを得たいが同時にコストも意識したい場合の素晴らしい選択肢です。可能な場合は、Neuron を使用してこれらのアクセラレーターを使用するようにモデルを適応またはコンパイルすることができ、その努力は十分に価値があります。M5 の場合、これらのアクセラレーターを活用するのに約 100 行のコード変更しか必要なかったことがわかります。
最後に、彼らはAmazon RDSを使用してメタデータを保存し、組織内のすべてのMLサイエンティストが実行しているすべての実験を追跡・管理できるようにしました。
これにより、M5チームはAmazon全体にモデルを提供することができました。Amazonのビジネスに測定可能な影響を与えていない部分はほとんどありません。何百ものモデルが開発・デプロイされており、これらのモデルの多くは1,000億を超えるパラメータを持つサイズなので、その複雑さは非常に大きいです。
彼らは社内の従業員に、毎月10,000以上の実験を行う能力と俊敏性を与えることで、彼らの力を引き出しています。現在、100人以上の開発者が彼らのインフラストラクチャ上で作業しており、Belindaが共有したように、新しいユースケースや新しいモダリティをサポートし続けています。
ご覧の通り、M5チームはAmazonが行っていることの最先端にいます。VijayとBelindaをステージに呼び戻したいと思います。 質問がある方は手を挙げてください。可能であればマイクをお持ちします。まず始めに、Belindaに聞きたいのですが、generative AIと、あなたのチームがAmazonで行っていることについて、何に最も興奮していますか?
「私が最も興奮しているのは、カスタマー中心の側面です。Amazonには、Customer Obsession(顧客への執着)と呼ばれる重要なリーダーシッププリンシプルがあります。私たちが行うすべてのことは、顧客のために本当にイノベーションを起こせる機会から逆算して取り組もうとしています。私が先ほど共有した多くの例やアプリケーションは、すべてそれを中心に据えています。私たちの研究が構想から実装まで進み、本当に顧客を喜ばせる体験を生み出すのを見ることは、私を毎日本当にワクワクさせてくれます。」
素晴らしい。皆様には、この1時間を私たちと共に過ごしていただき、感謝申し上げます。追加の質問がございましたら、私たちは外におりますので、お気軽にお声がけください。来年も皆様とお会いできるよう、そして私たちがさらに改善できるよう、アンケートにご協力いただければ幸いです。以上をもちまして、本日のセッションを終了させていただきます。ご参加いただき、誠にありがとうございました。
Discussion