テキストデータ形式のサポート

OpenVINO モデルサーバーでは、自然言語処理モデルを使用したアプリケーションの作成を大幅に簡素化できるようになりました。テキスト分析またはテキスト生成に関連するケースでは、クライアント・アプリケーションは元のテキスト形式を使用してモデルサーバーと通信できます。クライアント側で前処理および後処理を実行する必要はありません。トークン化とトークン化解除を完全にサーバーに委任できるようになりました。

元のモデルが入力または出力でトークンを必要とする場合と、トークン化レイヤーが埋め込まれたモデルのサポートが追加された場合の両方の状況に対処しました。以下に、文字列形式でテキストを送受信する単純なクライアント・アプリケーションの使用例を示します。テキスト変換の複雑性は、リモートのサービス提供エンドポイントに完全に委任されます。

Python ノード経由で文字列処理を行う MediaPipe グラフを提供

モデルサーバーが Python スクリプトを提供するように構成されている場合は (PythonExecutorCalculator を使用した MediaPipe Graph 経由)、文字列または文字列のリストを送信できます。完全な Python 実行ドキュメントまたはエンドツーエンド LLM テキスト生成デモを参照してください。

入力レイヤーで文字列を使用してモデルを提供

一部の AI モデルは、入力または出力で文字列形式のレイヤーをサポートします。これには、ニューラル・ネットワーク内でトークン化操作を実行するレイヤーが含まれます。OpenVINO は、CPU 拡張機能を使用して文字列データタイプのこのようなレイヤーをサポートします。モデルサーバーには、カスタム・トークナイザーとデトークナイザー・レイヤーの広範なリスト用の拡張機能が組み込まれています。拡張機能は、文字列データタイプのトークン化操作を実行します。

この使用例のデモンストレーションは、モデルサーバーを使用して直接インポートできる MUSE モデルにあります。クライアントは前処理なしでテキストデータを送信できるため、実行時間が大幅に短縮されます。MUSE デモを確認してください。

トークン化をサーバーに委任する DAG パイプライン (非推奨)

モデルが入力または出力でトークンを使用している場合、前処理および後処理を実行するカスタムノードを含む DAG パイプラインを作成できます。OpenVINO モデルサーバーは、gRPC および REST API インターフェイスでテキストデータ形式を受け入れ、バイトの 2D 配列に逆シリアル化できます。各行は、最長のバッチに合わせて \0 が追加された単一の null で終了する文を表します。

文字列入力のバッチサイズ 2 の例 - abcd および ab:

[
    'a', 'b', 'c', 'd', 0,
    'a', 'b',  0 ,  0 , 0
]

このようなテンソル形式のデータをカスタムノードに渡して、文字列のトークン化などの前処理を実行できます。前処理ノードの出力をモデルに渡すこともできます。Blingfire ライブラリーに基づいたユースケース用の組み込みトークナイザーのカスタムノードがあります。

同様に、カスタムノードは文字列の非トークン化 (デトークナイズ) を実行し、文字列をモデルサーバーのクライアントに返すことができます。

GPT ベースのテキスト生成を使用したこのようなユースケースのエンドツーエンドのデモンストレーションを確認してください。

文字列データ形式のクライアント API は、KServe APITFS API に含まれています。