Learn more about Search Results FasterTransformer - Page 2

AIの生成体験を向上させる Amazon SageMakerホスティングでのストリーミングサポートの導入

「Amazon SageMakerリアルタイム推論を通じたレスポンスストリーミングの提供を発表し、大変興奮していますこれにより、チャットボット、仮想アシスタント、音楽ジェネレータなどの生成型AIアプリケーションのインタラクティブな体験を構築する際に、SageMakerリアルタイム推論を使用してクライアントに連続的に推論レスポンスをストリーミングできるようになりましたこの新機能により、レスポンス全体が生成されるのを待つのではなく、利用可能な場合にすぐにレスポンスをストリーミング開始できますこれにより、生成型AIアプリケーションの最初のバイトまでの時間を短縮できますこの記事では、インタラクティブなチャットのユースケースに対して、新しいレスポンスストリーミング機能を使用したSageMakerリアルタイムエンドポイントを使用してストリーミングWebアプリケーションを構築する方法を紹介しますサンプルデモアプリケーションのUIにはStreamlitを使用しています」

北京大学の研究者は、FastServeを紹介しました:大規模な言語モデルLLMsのための分散推論サービスシステム

大規模言語モデル(LLM)の改善により、さまざまな分野での機会が生まれ、新しい波の対話型AIアプリケーションがインスピレーションを与えています。最も注目すべきものの1つはChatGPTで、ソフトウェアエンジニアリングから言語翻訳までの問題を解決するために、人々がAIエージェントと非公式にコミュニケーションを取ることを可能にします。 ChatGPTは、その驚異的な能力のために、史上最も急成長しているプログラムの1つです。MicrosoftのNew Bing、GoogleのBard、MetaのLLaMa、StanfordのAlpaca、DatabricksのDolly、UC BerkeleyのVicunaなど、多くの企業がLLMやChatGPTのような製品をリリースするトレンドに追従しています。 LLMの推論は、ResNetなどの他の深層ニューラルネットワーク(DNN)モデルの推論とは異なる特徴を持っています。LLM上に構築された対話型AIアプリケーションは、機能するために推論を提供する必要があります。これらのアプリの対話的なデザインは、LLM推論のジョブ完了時間(JCT)を迅速に行う必要があり、ユーザーエクスペリエンスを魅力的にするためです。たとえば、データをChatGPTに送信した場合、消費者は即座の応答を期待しています。ただし、LLMの数と複雑さのため、推論サービングインフラは大きな負荷を受けています。企業は、LLM推論操作を処理するために、GPUやTPUなどのアクセラレータを備えた高価なクラスタを設置しています。 DNNの推論ジョブは通常、確定的で非常に予測可能です。つまり、モデルとハードウェアが推論ジョブの実行時間を大部分に決定します。たとえば、同じResNetモデルを特定のGPU上で使用しても、さまざまな入力写真の実行時間はわずかに異なります。一方、LLMの推論位置はユニークな自己回帰パターンを持っています。LLMの推論作業は複数のラウンドを経ます。各イテレーションは1つの出力トークンを生成し、それが次のイテレーションでの次のトークンに追加されます。初めには不明な出力の長さは、実行時間と入力の長さの両方に影響を与えます。ResNetなどの決定論的モデル推論タスクの大部分は、ClockworkやShepherdのような既存の推論サービングシステムによって対応されています。 これらのシステムは、正確な実行時間のプロファイリングに基づいてスケジューリングの決定を行いますが、実行時間が可変のLLM推論には効果的ではありません。LLM推論の最も先進的な方法はOrcaです。Orcaはイテレーションレベルのスケジューリングを提案し、各イテレーション後に現在の処理バッチに新しいジョブを追加するか、完了したジョブを削除することができます。ただし、Orcaは先入れ先出し(FCFS)を使用して推論ジョブを処理します。スケジュールされたタスクは完了するまで連続して実行されます。推論ジョブの制約されたGPUメモリ容量と低いJCT要件のため、処理バッチを任意の数の入力関数で拡張することはできません。完了まで実行されるまでのブロックの問題はよく知られています。 LLMはサイズが大きく、絶対的な意味で実行に時間がかかるため、LLM推論操作ではこの問題が特に深刻です。特に出力の長さが長い場合、大規模なLLM推論ジョブは完了に時間がかかり、後続の短いジョブを妨げます。北京大学の研究者たちは、FastServeと呼ばれるLLM向けの分散推論サービングソリューションを開発しました。FastServeは、LLM推論のイテレーションレベルのスケジューリングと自己回帰パターンを利用して、各出力トークンのレベルで事前処理を可能にします。FastServeは、キュー内の別のジョブによって予定されたタスクを続行するか、中断するかを選択できます。これにより、FastServeはJCTと先行ブロッキングを削減し、先制的なスケジューリングを介しています。 FastServeの基盤となるのは、ユニークなスキップジョインのマルチレベルフィードバックキュー(MLFQ)スケジューラです。MLFQは、情報がない環境で平均JCTを最小化するためのよく知られた手法です。各作業は最も高い優先度キューで開始され、一定の時間内に完了しない場合は次の優先度キューに降格されます。LLM推論は、セミ情報が無関係であり、出力の長さが事前にはわからないということを意味します。これがLLM推論と従来の状況の主な違いです。入力の長さは、初期の出力トークンを作成するための実行時間を決定し、LLM推論の自己回帰パターンのため、その実行時間は後続のトークンよりもはるかに長くかかる場合があります。 入力が長く、出力が短い場合、初期の出力トークンの実行時間が大部分を占めます。彼らは、この特性を伝統的なMLFQにスキップジョインを追加するために使用します。到着タスクは、最初の出力トークンの実行時間をラインの降格閾値と比較して、適切なキューに参加します。常に最も高い優先度キューに入るのではなく、参加したキューよりも優先度の高いキューはバイパスされ、降格が最小限に抑えられます。MLFQによる先制的なスケジューリングは、中断されたが完了していないジョブを一時的な状態で保持するため、追加のメモリオーバーヘッドを加えます。LLMは、各Transformerレイヤーごとにキー値キャッシュを保持し、中間状態を保存します。バッチサイズが超過しない限り、FCFSキャッシュにはスケジュールされたジョブの中間状態を保持する必要があります。ただし、MLFQで開始された追加のジョブは、優先度の低いキューに降格されます。MLFQの中断されたが完了していないすべてのジョブは、キャッシュによって保持される中間状態を持つ必要があります。LLMのサイズとGPUの制限されたメモリスペースを考慮すると、キャッシュがオーバーフローする可能性があります。キャッシュがいっぱいの場合、スケジューラは新しいジョブの開始を単純に遅延させることができますが、これにより再び先行ブロッキングが発生します。 代わりに、彼らは生産的なGPUメモリ管理システムを開発し、スケジュールされたときに低優先度のキュー内のプロセスの状態を前もってアップロードし、キャッシュがほぼいっぱいになったときに状態をオフロードします。効率を高めるために、パイプライン処理と非同期メモリ操作を使用しています。FastServeは、テンソルとパイプライン並列処理などの並列化技術を使用して、1つのGPUに収まらない巨大なモデルのために多数のGPUを使用した分散推論サービスを提供します。パイプラインのブロックを減らすために、スケジューラは同時に複数のジョブのバッチを実行します。キーと値のキャッシュは、キーと値のキャッシュマネージャによって組織化され、GPUとホストメモリの間のメモリスワッピングの管理も行います。彼らは、NVIDIA FasterTransformerをベースにしたFastServeシステムのプロトタイプを実際に実装しました。結果は、FastServeが最先端のOrcaソリューションと比較して、平均およびテールのジョブ完了時間をそれぞれ最大5.1と6.4向上させることを示しています。

最適化ストーリー:ブルーム推論

この記事では、bloomをパワーアップする効率的な推論サーバーの裏側について説明します。 数週間にわたり、レイテンシーを5倍削減し(スループットを50倍に増やしました)、このような速度向上を達成するために私たちが経験した苦労やエピックな勝利を共有したかったです。 さまざまな人々が多くの段階で関与していたため、ここではすべてをカバーすることはできません。また、最新のハードウェア機能やコンテンツが定期的に登場するため、一部の内容は古くなっているか、まったく間違っている可能性があることをご了承ください。 もし、お好みの最適化手法が議論されていなかったり、正しく表現されていなかったりした場合は、お詫び申し上げます。新しいことを試してみたり、間違いを修正するために、ぜひお知らせください。 言うまでもなく、まず大きなモデルが最初にアクセス可能でなければ、それを最適化する理由はありません。これは、多くの異なる人々によってリードされた信じられないほどの取り組みでした。 トレーニング中にGPUを最大限に活用するために、いくつかの解決策が検討され、結果としてMegatron-Deepspeedが最終的なモデルのトレーニングに選ばれました。これは、コードがそのままではtransformersライブラリと互換性がない可能性があることを意味します。 元のトレーニングコードのため、通常行っていることの1つである既存のモデルをtransformersに移植することに取り組みました。目標は、トレーニングコードから関連する部分を抽出し、transformers内に実装することでした。この取り組みには「Younes」が取り組みました。これは、1ヶ月近くかかり、200のコミットが必要でした。 後で戻ってくるいくつかの注意点があります: 小さなモデルbigscience/bigscience-small-testingとbigscience/bloom-560mを用意する必要があります。これは非常に重要です。なぜなら、それらと一緒に作業するとすべてが高速化されるからです。 まず、最後のログがバイトまで完全に同じになることを望むことをあきらめる必要があります。PyTorchのバージョンがカーネルを変更し、微妙な違いを導入する可能性があり、異なるハードウェアでは異なるアーキテクチャのため異なる結果が得られる場合があります(コストの理由から常にA100 GPUで開発したくはないでしょう)。 すべてのモデルにとって、良い厳格なテストスイートを作ることは非常に重要です 私たちが見つけた最高のテストは、固定された一連のプロンプトを持つことでした。プロンプトを知っており、決定論的な結果が得られる必要があります。2つの生成物が同じであれば、小さなログの違いは無視できます。ドリフトが見られるたびに調査する必要があります。それは、あなたのコードがやるべきことをしていないか、または実際にそのモデルがドメイン外であるためにノイズに対してより敏感であるかのいずれかです。いくつかのプロンプトと十分に長いプロンプトがあれば、すべてのプロンプトを誤ってトリガーする可能性は低くなります。プロンプトが多ければ多いほど良く、プロンプトが長ければ長いほど良いです。 最初のモデル(small-testing)は、bloomと同じようにbfloat16であり、すべてが非常に似ているはずですが、それほどトレーニングされていないか、うまく機能しないため、出力が大きく変動します。そのため、これらの生成テストに問題がありました。2番目のモデルはより安定していましたが、bfloat16ではなくfloat16でトレーニングおよび保存されていました。そのため、2つの間にはエラーの余地があります。 完全に公平を期すために言えば、bfloat16→float16への変換は推論モードでは問題なさそうです(bfloat16は主に大きな勾配を扱うために存在しません)。 このステップでは、重要なトレードオフが発見され、実装されました。bloomは分散環境でトレーニングされたため、一部のコードはLinearレイヤー上でテンソル並列処理を行っており、単一のGPU上で同じ操作を実行すると異なる結果が得られていました。これを特定するのにかなりの時間がかかり、100%の準拠を選択した場合、モデルの速度が遅くなりましたが、少しの差がある場合は実行が速く、コードがシンプルになりました。設定可能なフラグを選択しました。 注:この文脈でのパイプライン並列処理(PP)は、各GPUがいくつかのレイヤーを所有し、各GPUがデータの一部を処理してから次のGPUに渡すことを意味します。 これで、動作可能なtransformersのクリーンなバージョンがあり、これに取り組むことができます。 Bloomは352GB(176Bパラメーターのbf16)のモデルであり、それに合わせるために少なくともそれだけのGPU RAMが必要です。一時的に小さなマシンでCPUにオフロードすることを検討しましたが、推論速度が桁違いに遅くなるため、それを取り下げました。 次に、基本的にはパイプラインを使用したかったのです。つまり、ドッグフーディングであり、これがAPIが常に裏で使用しているものです。 ただし、pipelinesは分散意識がありません(それがその目的ではありません)。オプションを簡単に話し合った後、新しく作成されたdevice_map="auto"を使用してモデルのシャーディングを管理するためにaccelerateを使用することにしました。いくつかのバグを修正し、transformersのコードを修正してaccelerateが正しい仕事をするのを助ける必要がありました。 これは、transformersのさまざまなレイヤーを分割し、各GPUにモデルの一部を与えて動作させることで機能します。つまり、GPU0が作業を行い、次にGPU1に引き渡し、それ以降同様に行います。 最終的には、上に小さなHTTPサーバーを置くことで、bloom(大規模なモデル)を提供できるようになりました!…

MPT-30B:モザイクMLは新しいLLMを使用して、NLPの限界を em>GPT-3を凌駕します

MosaicMLのLLMにおける画期的な進歩について、MPTシリーズで学びましょうMPT-30Bおよびその微調整された派生モデル、MPT-30B-InstructとMPT-30B-Chatが他のモデルを凌駕する方法を探索してください

Amazon SageMakerでTritonを使用してMLモデルをホストする:ONNXモデル

ONNX(Open Neural Network Exchange)は、多くのプロバイダーによって広くサポートされている深層学習モデルを表現するためのオープンソースの標準ですONNXは、機械学習(ML)モデルを実行するために必要なメモリと計算を削減するための最適化および量子化モデルのツールを提供しますONNXの最大の利点の1つは、標準化された形式を提供することです[…]

Amazon SageMaker で大規模なモデル推論 DLC を使用して Falcon-40B をデプロイする

先週、テクノロジー・イノベーション・インスティチュート(TII)は、オープンソースの基礎的な大規模言語モデル(LLM)であるTII Falcon LLMを発表しましたFalconは、Amazon SageMakerで1兆トークンでトレーニングされ、ハグイングフェイスのランキングでトップクラスのパフォーマンス(執筆時点での第1位)を誇り、llama-65Bなどの他のLLMよりも比較的軽量でホストするのに費用がかからないとされています[…]

Find the right Blockchain Investment for you

Web 3.0 is coming, whether buy Coins, NFTs or just Coding, everyone can participate.

Advertising with us