アクセラレーターのスケジューリングは、マルチユーザーのホームAIにどのような影響を与えるか?

エヴァ・ウォンテクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

アクセラレーターのスケジューリングは、各リクエストをいつ開始するか、各イテレーションをどのように共有するか、メモリ状態を保持するか、ほかの処理の後ろで待機させるかを決めることで、複数ユーザーが利用する家庭内AIに影響を与えます。

家庭内の複数ユーザーは、必要なコストが大きく異なるプロンプトを送信できます。短い照明制御の質問、長いドキュメント、画像、音声リクエスト、あるいは多数の呼び出しを生成するエージェントなどです。アクセラレーターは、到着時刻だけから家庭内での重要度を判断できません。スケジューラーは、出力の長さが予測できない状況で、キューの順序、トークン予算、バッチ処理、優先度、メモリへの割り当て、モデルの常駐状態を組み合わせる必要があります。以下では、こうした選択によって、同じハードウェアでも公平、高速、あるいは使いものにならないと感じられる理由を説明します。

FIFOは到着時刻だけを優先する

先入れ先出し(FIFO)キューは単純ですが、長いプロンプトや応答によって、後から到着した短いリクエストの多くが遅延する可能性があります。

LLMのリクエストにはトークンコストの差があるため、リクエスト数だけに基づく公平性では、あるユーザーが別のユーザーよりもはるかに多くのアクセラレーター時間を使うことがあります。

FIFOは負荷が低い場合には予測しやすい一方、家庭内のワークロードが多様になると、先頭ブロッキングが発生します。

継続的バッチ処理はユーザー間でイテレーションを共有する

イテレーション単位のスケジューラーは、デコードステップの間に新しいシーケンスを追加し、1つの固定バッチを作り直すことなく、完了したシーケンスを取り除けます。

Orcaのイテレーションスケジューリングは、複数ユーザーが同時に処理を進められるようにしながら、利用効率を高めます。

共有したからといって、速度が均等になるとは限りません。スケジューラーは、いくつのシーケンスを参加させるか、それぞれをどの頻度で進めるか、新しいプリフィルによって実行中のデコードを中断するかどうかを引き続き決定します。

優先度ポリシーはレイテンシーに敏感なリクエストを保護する

音声操作や短い対話型チャットは、バックグラウンドの要約、埋め込み生成、画像生成よりも迅速に受け付ける価値がある場合があります。

Llumnixは、多様なLLMリクエストにおけるレイテンシー優先度に対応します。

バックグラウンドタスクが最終的には実行され、特定の優先ユーザーが家庭内のほかのユーザーを飢餓状態にしないようにするには、優先度にエージングやクォータを組み込む必要があります。

メモリへの割り当てによっては、計算前にリクエストがブロックされる

リクエストには、モデルの重み以外にもKVキャッシュとワークスペースが必要です。計算ユニットがアイドル状態に見えても、メモリの余裕が不足しているため、スケジューラーが受け付けを遅らせることがあります。

ZimaSpaceの複数ユーザーによるメモリ負荷のガイドでは、コンテキストが長くなるほど、アクティブな会話を維持できる数が減る理由を説明しています。

シーケンスをプリエンプトすると容量を解放できますが、後で状態を再計算または復元する必要が生じる場合があり、メモリポリシーが追加のレイテンシーにつながります。

プリフィルとデコードには異なるスケジューリングが必要

長いプリフィルは計算リソースを大量に使用する一方、トークンのデコードでは重みとキャッシュ状態を繰り返し読み取ります。制御せずに両者を同時実行すると、ストリーミング出力が停止することがあります。

Sarathi-Serveは、停止のないスケジューリングと分割プリフィルを使用し、レイテンシーへの影響を抑えながらスループットを向上させます。

家庭内のスケジューラーでは、アクティブな会話のデコード機会を確保し、大きなドキュメントのプリフィルを分割することで、1つのリクエストが長いイテレーションを独占するのを防げます。

公平性はユーザーが体感できる指標で測定する必要がある

1秒あたりの合計トークン数が向上しても、あるユーザーの待ち時間が別のユーザーよりはるかに長くなることがあります。キュー待ち時間、最初のトークンが出るまでの時間、トークン間遅延、完了時間、ユーザーまたはワークロードのクラスごとのサービス配分を記録しましょう。

Virtual Token Counterは、各リクエストを同じものとして数えるのではなく、トークンを考慮した公平性を定義します。

音声、対話型チャット、エージェント、埋め込み生成、メンテナンス作業には、明示的なクラスを設定してください。そのうえで、長いリクエストと短いリクエストを重ねて実行し、選択したポリシーが家庭内の期待に合っていることを確認します。

スケジューリングによってアクセラレーターの容量を増やすことはできません。しかし、容量不足を公平な速度低下として現すのか、テールレイテンシーの急増として現すのか、それとも1人のユーザーが全員をブロックする形にするのかは、スケジューリングによって決められます。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.