ホームへ戻る

GitHub Repo

Transformersコミュニティ、ストリーミングエラーのシリアライズ修正を提案 JSON解析失敗による元の例外の隠蔽を防止

10月24日のTransformersコミュニティからの報告によると、serve CLIのストリーミングエラーメッセージに引用符、バックスラッシュ、改行が含まれると、無効なJSONが生成される可能性がある。コミュニティは3種類のハンドラーを対象とした修正を提案したが、確認時点では未マージだった。

Marcus Qwertyus · Public domain · Image source
zh-Hant

Transformersコミュニティは10月24日、ストリーミング生成に失敗した際、transformers serveがエラーメッセージさえクライアントに正しく渡せない場合があると報告した。問題はエラーイベントのJSONを組み立てる方法にある。例外のテキストに二重引用符、バックスラッシュ、改行が含まれていると、文字列をそのまま挿入することで形式が壊れ、クライアント側では生成失敗の本当の原因が隠れ、先にJSONのデコードエラーが発生する可能性がある。問題の報告

報告者は、メインブランチの5.21.0.dev0をCPU環境で使い、小規模な再現プログラムを提示した。fooという引数名と二重引用符を含むエラーをcompletionリクエストのストリームハンドラーに渡し、イベントの内容をjson.loadsで解析すると、解析に失敗する。このケースはエラーの伝達経路を直接テストするもので、モデルのダウンロードは不要だ。ただし、リリース済みのすべてのバージョンや、すべてのストリーミングエンドポイントが影響を受けることを示すものではない。再現プログラムと環境

同日提出されたPR #49958では、チャットcompletion、従来型のテキストcompletion、音声転写の各ハンドラーで、エラーオブジェクトのシリアライズにjson.dumpsを使うよう変更し、特殊文字を含むデータの往復解析を確認する回帰テストも追加している。修正はSSEイベントの枠組みを維持し、その中のJSONコンテンツを正しくエスケープすることに重点を置く。確認時点で提案はオープンのままで、ページにはメンテナーの承認待ちのCIが表示されていた。正式な修正として検証済みとは見なせない。修正提案

この問題は、セルフホスト型モデルの統合に直接関係する。公式ドキュメントでは、serve CLIは評価、実験、中程度の負荷のデプロイ向けの軽量サーバーと位置付けられており、チャット、テキストcompletion、音声転写のエンドポイントを含む、OpenAI SDK互換のインターフェースを提供する。この種のインターフェースを使うアプリケーションでは、ユーザーがリクエストを修正できるよう、失敗メッセージを確実に受け取れることも必要だ。公式ドキュメント

エンジニアリング上の推論として、元の例外が解析エラーに置き換わると、ログによる診断や再試行の判断に必要な情報が失われる可能性がある。統合チームは、特殊文字を含む失敗イベントを互換性チェックに加え、メンテナーのレビュー、テスト結果、修正が最初に取り込まれるバージョンを追跡できる。現時点の証拠が示すのはエラー報告経路の不具合であり、成功したリクエストのモデル出力が変わることを示すデータはない。

出典

  1. Streaming error events are not valid JSON when the error message contains quotes — Issue #49954
  2. Fix invalid JSON serialization for streaming error events in serve CLI — PR #49958
  3. Transformers Serve CLI 官方文件