Amazon SageMaker JumpStart で大規模な言語モデルの応答をストリーミングする | アマゾン ウェブ サービス

Amazon SageMaker JumpStart で大規模な言語モデルの応答をストリーミングする | アマゾン ウェブ サービス

我々はそれを発表することに興奮している Amazon SageMaker ジャンプスタート 大規模言語モデル (LLM) 推論応答をストリーミングできるようになりました。 トークン ストリーミングを使用すると、LLM による応答生成の完了を待ってから使用または表示できるようになるのではなく、生成中のモデル応答出力を確認できます。 SageMaker JumpStart のストリーミング機能は、エンドユーザーに低遅延の印象を与えることで、より優れたユーザー エクスペリエンスを備えたアプリケーションを構築するのに役立ちます。

この投稿では、デプロイしてからの応答をストリーミングする方法について説明します。 ファルコン 7B インストラクトモデル エンドポイントを使用して定義します

この記事の執筆時点では、SageMaker JumpStart で利用可能な次の LLM がストリーミングをサポートしています。

  • ミストラル AI 7B、ミストラル AI 7B 命令
  • ファルコン 180B、ファルコン 180B チャット
  • ファルコン 40B、ファルコン 40B 命令
  • ファルコン 7B、ファルコン 7B 命令
  • Rinna 日本語 GPT NeoX 4B 命令 PPO
  • Rinna 日本語 GPT NeoX 3.6B 命令 PPO

SageMaker JumpStart でストリーミングをサポートするモデルのリストの更新を確認するには、次の場所で「huggingface-llm」を検索します。 事前トレーニング済みのモデル テーブルを使用した組み込みアルゴリズム.

を使用できることに注意してください ストリーミング機能 of アマゾンセージメーカー で説明されているように、SageMaker TGI Deep Learning Container (DLC) を使用してデプロイされたモデルをすぐにホスティングできます。 Amazon SageMaker での新しい Hugging Face LLM 推論コンテナの開始を発表.

SageMaker の基盤モデル

SageMaker JumpStart は、Hugging Face、PyTorch Hub、TensorFlow Hub などの一般的なモデル ハブのさまざまなモデルへのアクセスを提供し、SageMaker の ML 開発ワークフロー内で使用できます。 ML の最近の進歩により、として知られる新しいクラスのモデルが誕生しました。 基礎モデルこれらは通常、数十億のパラメータでトレーニングされ、テキストの要約、デジタル アートの生成、言語翻訳など、幅広いカテゴリのユースケースに適応できます。 これらのモデルのトレーニングにはコストがかかるため、顧客はこれらのモデルを自分でトレーニングするのではなく、既存の事前トレーニングされた基礎モデルを使用し、必要に応じて微調整することを望んでいます。 SageMaker は、SageMaker コンソールで選択できる厳選されたモデルのリストを提供します。

SageMaker JumpStart 内でさまざまなモデルプロバイダーの基礎モデルを検索できるようになり、基礎モデルをすぐに開始できるようになりました。 SageMaker JumpStart は、さまざまなタスクまたはモデルプロバイダーに基づいた基礎モデルを提供し、モデルの特性と使用条件を簡単に確認できます。 テスト UI ウィジェットを使用してこれらのモデルを試すこともできます。 基礎モデルを大規模に使用したい場合は、モデルプロバイダーが提供する事前構築済みのノートブックを使用することで、SageMaker を離れることなく使用できます。 モデルは AWS でホストおよびデプロイされるため、モデルの評価または大規模な使用に使用されるデータがサードパーティと共有されないことが信頼できます。

トークンストリーミング

トークン ストリーミングを使用すると、モデルによって生成される推論応答を返すことができます。 こうすることで、完全な応答を提供する前にモデルの終了を待つのではなく、段階的に生成される応答を確認できます。 ストリーミングは、エンドユーザーの待ち時間の認識を軽減するため、より良いユーザー エクスペリエンスを実現するのに役立ちます。 出力の生成と同時に表示を開始できるため、出力が目的に役に立たないと思われる場合は、生成を早期に停止できます。 ストリーミングは、特に長時間実行されるクエリの場合に大きな違いを生む可能性があります。これは、出力が生成されたときに表示されるようになるため、エンドツーエンドの待ち時間が同じであっても、待ち時間が短くなったように感じる可能性があります。

この記事の執筆時点では、Hugging Face LLM を利用するモデルに対して SageMaker JumpStart でストリーミングを使用できます。 テキスト生成の推論 DLC。

蒸気を出さずに応答 ストリーミングによる応答

ソリューションの概要

この投稿では、Falcon 7B Instruct モデルを使用して、SageMaker JumpStart ストリーミング機能を紹介します。

次のコードを使用すると、ストリーミングをサポートする SageMaker JumpStart 内の他のモデルを見つけることができます。

from sagemaker.jumpstart.notebook_utils import list_jumpstart_models
from sagemaker.jumpstart.filters import And filter_value = And("task == llm", "framework == huggingface")
model_ids = list_jumpstart_models(filter=filter_value)
print(model_ids)

ストリーミングをサポートする次のモデル ID を取得します。

['huggingface-llm-bilingual-rinna-4b-instruction-ppo-bf16', 'huggingface-llm-falcon-180b-bf16', 'huggingface-llm-falcon-180b-chat-bf16', 'huggingface-llm-falcon-40b-bf16', 'huggingface-llm-falcon-40b-instruct-bf16', 'huggingface-llm-falcon-7b-bf16', 'huggingface-llm-falcon-7b-instruct-bf16', 'huggingface-llm-mistral-7b', 'huggingface-llm-mistral-7b-instruct', 'huggingface-llm-rinna-3-6b-instruction-ppo-bf16']

前提条件

ノートブックを実行する前に、セットアップに必要な初期手順がいくつかあります。 次のコマンドを実行します。

%pip install --upgrade sagemaker –quiet

モデルを展開する

最初のステップとして、SageMaker JumpStart を使用して Falcon 7B Instruct モデルをデプロイします。 完全な手順については、以下を参照してください。 TII の Falcon 180B 基礎モデルが Amazon SageMaker JumpStart 経由で入手可能になりました。 次のコードを使用します。

from sagemaker.jumpstart.model import JumpStartModel my_model = JumpStartModel(model_id="huggingface-llm-falcon-7b-instruct-bf16")
predictor = my_model.deploy()

エンドポイントをクエリして応答をストリームする

次に、デプロイされたエンドポイントを呼び出すためのペイロードを構築します。 重要なのは、ペイロードにはキーと値のペアが含まれている必要があることです。 "stream": True。 これは、テキスト生成推論サーバーにストリーミング応答を生成するように指示します。

payload = { "inputs": "How do I build a website?", "parameters": {"max_new_tokens": 256}, "stream": True
}

エンドポイントをクエリする前に、エンドポイントからのバイト ストリーム応答を解析できるイテレータを作成する必要があります。 各トークンのデータは応答内の個別の行として提供されるため、この反復子はストリーミング バッファーで新しい行が識別されるたびにトークンを返します。 このイテレータは最小限に設計されているため、ユースケースに合わせてその動作を調整することができます。 たとえば、このイテレータはトークン文字列を返しますが、行データにはトークン ログの確率など、興味深い可能性のある他の情報が含まれています。

import io
import json class TokenIterator: def __init__(self, stream): self.byte_iterator = iter(stream) self.buffer = io.BytesIO() self.read_pos = 0 def __iter__(self): return self def __next__(self): while True: self.buffer.seek(self.read_pos) line = self.buffer.readline() if line and line[-1] == ord("n"): self.read_pos += len(line) + 1 full_line = line[:-1].decode("utf-8") line_data = json.loads(full_line.lstrip("data:").rstrip("/n")) return line_data["token"]["text"] chunk = next(self.byte_iterator) self.buffer.seek(0, io.SEEK_END) self.buffer.write(chunk["PayloadPart"]["Bytes"])

Boto3を使用できるようになりました。 invoke_endpoint_with_response_stream 作成したエンドポイント上の API を反復処理することでストリーミングを有効にします。 TokenIterator インスタンス:

import boto3 client = boto3.client("runtime.sagemaker")
response = client.invoke_endpoint_with_response_stream( EndpointName=predictor.endpoint_name, Body=json.dumps(payload), ContentType="application/json",
) for token in TokenIterator(response["Body"]): print(token, end="")

空の指定 end へのパラメータ print 関数は、改行文字を挿入せずにビジュアル ストリームを有効にします。 これにより、次の出力が生成されます。

Building a website can be a complex process, but it generally involves the following steps: 1. Determine the purpose and goals of your website
2. Choose a domain name and hosting provider
3. Design and develop your website using HTML, CSS, and JavaScript
4. Add content to your website and optimize it for search engines
5. Test and troubleshoot your website to ensure it is working properly
6. Maintain and update your website regularly to keep it running smoothly. There are many resources available online to guide you through these steps, including tutorials and templates. It may also be helpful to seek the advice of a web developer or designer if you are unsure about any of these steps.<|endoftext|>

このコードをノートブックや Streamlit や Gradio などの他のアプリケーションで使用して、ストリーミングの動作とそれが顧客に提供するエクスペリエンスを確認できます。

クリーンアップ

最後に、追加コストの発生を避けるために、デプロイされたモデルとエンドポイントをクリーンアップすることを忘れないでください。

predictor.delete_model()
predictor.delete_endpoint()

まとめ

この投稿では、SageMaker JumpStart で新しくリリースされたストリーミング機能の使用方法を説明しました。 トークン ストリーミング機能を使用して、より良いユーザー エクスペリエンスを実現するため、低遅延を必要とするインタラクティブなアプリケーションを構築していただければ幸いです。


著者について

Amazon SageMaker JumpStart で大規模な言語モデルの応答をストリーミングする |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。ラクナ チャダ は、AW​​S の戦略アカウントにおける AI/ML のプリンシパル ソリューション アーキテクトです。 Rachna は楽観主義者で、AI を倫理的かつ責任をもって使用することで将来の社会を改善し、経済的および社会的繁栄をもたらすことができると信じています。 余暇には、家族と一緒に時間を過ごしたり、ハイキングをしたり、音楽を聴いたりするのが好きです。

Amazon SageMaker JumpStart で大規模な言語モデルの応答をストリーミングする |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。カイル・ウルリッヒ博士 応用科学者であり、 AmazonSageMakerの組み込みアルゴリズム チーム。 彼の研究対象には、スケーラブルな機械学習アルゴリズム、コンピューター ビジョン、時系列、ベイジアン ノンパラメトリック、およびガウス過程が含まれます。 彼はデューク大学で博士号を取得しており、NeurIPS、Cell、Neuron で論文を発表しています。

Amazon SageMaker JumpStart で大規模な言語モデルの応答をストリーミングする |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。アシッシュ・ケタン博士 は、Amazon SageMaker 組み込みアルゴリズムを使用する上級応用科学者であり、機械学習アルゴリズムの開発を支援しています。 イリノイ大学アーバナシャンペーン校で博士号を取得。 彼は機械学習と統計的推論の活発な研究者であり、NeurIPS、ICML、ICLR、JMLR、ACL、および EMNLP カンファレンスで多くの論文を発表しています。

タイムスタンプ:

より多くの AWS機械学習