Laya: オープンソースのシステム1意思決定エンジン
Layaは、単純で構造化された反射的判断に生成型LLMを置き換えるために設計された非自己回帰型意思決定エンジンです。自己回帰的なトークン生成ではなく双方向エンコーダーを活用することで、単一GPU上で約32.8ミリ秒で構造化スキーマ上の補正された確率予測を提供し、生成型代替手段よりもはるかに高速かつコスト効率が高くなります。
AI意思決定におけるシステム1アプローチ
現代のAIパイプラインは、反射的な応答(システム1)が必要なタスクに大規模な生成型LLM(システム2)を使用するというボトルネックに直面しています。チケットルーティング、スパム検出、ジャイルブレイク識別などのタスクは、テキスト生成ではなく特定のラベルまたは確率を必要とします。
これらのタスクに生成型LLMを使用すると、以下の非効率が生じます:
- レイテンシ: トークンのストリーミングを待つ(500ms~2,000ms)。
- コスト: 8B以上のパラメータを持つモデルの推論コストが高くなる。
- 信頼性: フリー形式のテキストからラベルを抽出するために正規表現やJSONパーサーが必要になる。
- 補正性: LLMはしばしば自信スコアを幻覚的に出力する(例:数学的根拠のない「自信: 0.95」と出力)。
Layaは、1回のフォワードパスで即時かつ補正された確率を提供することで、この問題に対処し、幻覚や不正なJSON出力の可能性を完全に排除します。
意思決定プリミティブとアーキテクチャ
Layaは、任意の状態(テキスト、メール、JSON)に対して型付きの質問を評価し、以下の3つのコアプリミティブを使用します:
- Choice: 評価基準の辞書から1つのオプションを選択し、選択されたキー、確率分布、補正された信頼スコアを返す。
- Score: 状態を順序尺度(例:0~3)に配置し、期待されるレベルと分布を返す。
- Noul: ブール型の質問に応じて、0.0~1.0の範囲で補正された確率 $P(\text{true})$ を返す。
モデルチェックポイント
LayaはHugging Face上のバンドルハブを通じて配布され、3つの専門的なチェックポイントを提供しています:
| チェックポイント | ベースエンコーダー | パラメータ数 | コンテキスト | 主な強み |
|---|---|---|---|---|
laya |
ModernBERT-large | 421M | 512 | 英語分類、ガードレール、メールトリアージ |
laya-multilingual |
mmBERT-base | 322M | 1024 | 100以上の言語、多言語NLI |
laya-typed-decisions |
ModernBERT-large | 421M | 1024 | エージェント観測性、インボイス処理、セキュリティアラート |
多言語ルーティングとスクリプト検出
Layaの開発過程で重要な発見は、英語中心のモデルが入力スクリプトを読めない場合でも高信頼度を報告する傾向があることです(例:クメール語テキストに対して95%の信頼度を報告しながら、正確率は0%)。信頼度ゲートがサポートされていないスクリプトでは信頼できないため、Layaは純粋なPythonで0.1ミリ秒以下の Router を実装しています。
このルーターは22のアルファベットにわたるUnicodeスクリプトを検査し、ラテン語のストップワード分布を分析して、フォワードパスの前に適切なモデルにトラフィックをルーティングします。検出オーバーヘッドは無視できるほど小さく、通常は英語で0.09ms、大規模なJSONドキュメントで0.73ms程度です。
パフォーマンス比較:Laya vs. TypeSafe Jev
LayaはTypeSafe Jevのオープンソース代替として位置づけられています。ベンチマークでは速度とコストにおいて顕著な利点がありますが、ゼロショット能力には若干のトレードオフがあります。
| メトリクス | TypeSafe Jev 1.13.0 | Laya (ルーティング済み) | デルタ |
|---|---|---|---|
| レイテンシ P50 (1質問) | 236–276 ms | 32.8 ms | 7.8倍高速 |
| レイテンシ P50 (10質問バッチ) | ~1,500 ms | 72.3 ms | 20倍高速 |
| 補正誤差 (ECE) | 0.246 | 0.081 | 3倍優れた補正性 |
| 100万トークンあたりのコスト | $0.042 | $0.00 | 無料(Apache 2.0) |
| 重みとコード | クローズドAPI | オープンソース | オンプレミスホスティング可能 |
エンジニアリング上の制約と要件
Layaは万能なゼロショットオラクルではなく、特殊化のための基盤モデルです。以下の制約に注意が必要です:
- ファインチューニングの必要性: 事前学習済みのベースモデルは、
typed-decisionsなどの特定ベンチマークでほぼランダムなスコア(~0.35)を示す可能性があります。高精度(0.766)は、トレーニングスプリットでのファインチューニングによって達成されます。 - Choice予算: 選択スキーマが20オプションを超えると、ヘッド長のトークン予算制約により性能が低下します。
- コンテキスト窓: チェックポイントは512~1024トークンに制限されており、Jevで報告される32kのコンテキスト窓と比べて大幅に小さいです。
- 温度補正: 期待される補正誤差を0.466から0.081に低下させるには、質問タイプごとにスカラー温度をドメイン分布に適合させる必要があります。
コミュニティの洞察と反論
技術ユーザー間の議論では、「モデル」と「製品」の間で分断が見られます。Layaは重みとアーキテクチャを提供しますが、批判者はJevの価値はゼロショット性能とAPI経由での導入のしやすさにあると主張しています。
"Jevの成功の鍵は、ファインチューニングなしで動作することです… 1週間ではなく数分で任意の分類問題を解決できる能力は非常に大きな利点です。"
他のユーザーは、Layaのアプローチが「従来の機械学習」への回帰であり、更新された学習手法(RLCD)を用いたBERT型アーキテクチャを活用して、生成型LLMよりも効率的に分類タスクを解決していると指摘しています。
クイックスタート実装
Layaはpip経由でインストール可能(pip install laya>=0.3.3)であり、Routerを用いてマルチスキーマ判断を処理できます:
from laya import Router
router = Router(preload=True)
questions = {
"queue": {
"type": "choice",
"instructions": "このチケットを所有しているエンジニアリングキューはどれですか?",
"criteria": {
"infrastructure": "サーバ障害、ネットワークダウンタイム",
"billing": "返金、SLAクレジット"
}
},
"urgency": {
"type": "score",
"instructions": "このチケットの緊急度はどの程度ですか?",
"criteria": ["low", "medium", "high", "critical"]
}
}
res = router.predict({"body": "APIがダウンしています!"}, questions)
Sources
関連
- Dispatch
- プロジェクト
- Dispatch
- Dispatch
- Dispatch