本文へスキップ
AIラボ
LLM稼働中

リアルタイム感情分析ストリーム

ストリーミングされるテキストをリアルタイムに処理する高スループットな感情分析パイプライン。ファインチューニングしたDistilBERTで100ms未満の分類を行い、Kafkaベースの取り込みで毎秒1万件以上を処理する。ライブダッシュボードで感情の分布、トレンド、異常アラートを表示する。

DistilBERT (fine-tuned)RoBERTa
精度94%レイテンシ100ms未満スループット毎秒1万件

カテゴリ

LLM

ステータス

稼働中

技術スタック

DistilBERTKafkaFastAPINext.jsClickHouse

モデル

DistilBERT (fine-tuned)RoBERTa
概要

この実験では、毎秒1万件を超える流入テキストを100ms未満で分類する高スループットな感情分析パイプラインを構築した。ファインチューニングしたDistilBERTをONNX Runtimeで提供し、肯定・否定・中立を94%の精度で分類して、傾向を異常検知付きのライブダッシュボードへ描く。

検証方法

ラベル付きテキスト12万件を集めた複合データセットでDistilBERTをファインチューニングした。ツイート5万件(Sentiment140)、商品レビュー4万件(Amazon)、サポートチケット3万件(社内データ)である。モデルは推論を最適化するためONNXへ書き出した。比較対象はRoBERTa-base、VADER、GPT-3.5のゼロショットで、5,000件のテストセットで評価した。スループットはKafkaベースのパイプラインで、毎秒1千件、5千件、1万件の模擬ストリームを流して検証した。

技術スタック

ファインチューニングしたDistilBERTをONNX Runtimeで提供し、高スループットな推論を実現する。Kafkaがメッセージの取り込みを担い、コンシューマーグループでスケールする。ClickHouseが時系列の感情データを保持し、傾向の分析に使う。FastAPIが分類APIを提供する。Next.jsとWebSocketの更新でライブダッシュボードを動かす。

主な発見

この実験から得られた、もっとも重要な知見です。

1

DistilBERTはRoBERTa並みの精度で6倍のスループット

ファインチューニングしたDistilBERTの精度は94%で、RoBERTaの95.2%に迫った。一方で処理量は毎秒10,200件と、RoBERTaの1,700件を大きく上回った。ストリーミング用途では、1.2%の精度差より6倍のスループットが圧倒的に価値がある。

2

ONNX Runtimeで推論が2倍速くなる

PyTorchのモデルをONNXへ変換してONNX Runtimeで動かすと、1件あたりのレイテンシは18msから8msへ下がった。32件をまとめて処理すれば、1件あたり2msまで下がる。

3

モデルサイズよりドメインへの適応が効く

サポートチケットでファインチューニングしたDistilBERTは、同じ領域のセンチメントで91%を記録した。同じデータに対してGPT-3.5のゼロショットは78%だった。小さいモデルの領域特化は、大きな汎用モデルに勝る。

4

感情の変化を5秒以内に検知

30秒の移動平均に対するスライディングウィンドウのzスコア検出により、感情の大きな変化を5秒以内に通知できる。危機対応をリアルタイムに始められる。

アーキテクチャ

メッセージはKafkaのトピックへ届き、ONNXモデルを載せた分類ワーカー群が消費する。分類された各メッセージは、時刻、送信元、感情ラベル、確信度とともにClickHouseへ書き込まれる。ダッシュボードはClickHouseへリアルタイムの集計、つまり感情の分布、傾向線、流量を問い合わせ、異常の閾値を超えたときはWebSocketでプッシュ更新を受け取る。

結果

テストセットでの分類精度は94%。Kafkaのコンシューマー8台で毎秒10,200件の持続的なスループットを達成した。1件あたりのレイテンシはp50で8ms、p99で23ms。異常検知の平均レイテンシは4.7秒。ダッシュボードは100ms間隔のデータ更新で60fpsを維持する。

直面した課題

検証を進めるうえで解決が必要だった技術的な課題です。

課題 1

皮肉と文脈に依存する感情

「またダウンか、素晴らしいね」のような皮肉は40%の割合で肯定と分類されていた。皮肉のラベルを付けた1万件を追加で学習させた皮肉検出ヘッドをモデルへ加え、誤分類を15%まで減らした。

課題 2

バースト時のコンシューマー遅延

毎秒5万件のスパイクでコンシューマーの遅延が積み上がった。遅延が1,000件を超えると新しいワーカーを起動し、バーストが収まったら安全に縮退する自動スケーリングを実装した。

NEXT

LumoraTechと一緒に開発しませんか?

厳密なエンジニアリングを重視するチームのために、本番運用に耐えるAIシステムの構築と、こうした技術検証を行っています。