Cloudflareの決定モデル「Clef」の推論速度は? Jevと同一ログ1054回実行でレイテンシを徹底比較検証

AI

Japanese

English

植松です。最近流行りの意思決定モデルのjevを使って、Linux向けのツールを2つ開発しました。

ツールどんなことに使うか
jevtriサーバー障害時に、詳しく読むログファイルの優先順位を示すトリアージツールです。
jevshコマンドラインを実行する前に、危険度を判断するツールです。

ツールを作っている途中に、Cloudflareが判断モデルClef(27B)とClef-flash(9B)を発表しました。自由文を生成するチャットとは異なり、stateと型付き質問を渡して、Yes/Noの確率、選択肢、段階評価を返すAPIです。画像入力にも対応しています。Cloudflareの発表。

Linuxサーバーの障害調査で、どのログファイルから詳しく読むかを決める用途を想定し、3つの判断AIに同じ架空のログエントリー(個々の記録)と質問を渡しました。今回の評価単位は、ログ出力元ごとにまとめた抜粋です。検証したのは調べる価値の順位の妥当性であり、原因の確率や原因特定精度ではありません。

Crefは速いのか?

公式発表は43の評価ベンチマークでClef 209.3ms、Flash 38.8ms、Jev 524.1msという中央値を示しています。一方、AGIラボの実測では短い日本語入力1問はFlashが最速、40問一括ではJevが最速でした。公式値と実測値は呼び出し経路・入力・質問数が異なり、単純には比較できません。公式発表、AGIラボの測定。

発売日の実測では、画像リクエストに13〜30秒かかったという報告もあります。これは2026年10月1日の特定条件の観測で、現時点の全リクエストの速度を示すものではありません。Flavio Copesによる実測報告。

そこで今回確かめるのは、同じログ抜粋を同じ端末から送ったとき、各モデルの応答待ち時間と、抜粋の調査優先順位がどう変わるかです。公式値の追試でも、画像性能の試験でもありません。

測定条件

用語を区別します。ログファイルは記録を保存するファイル、ログエントリーは1件の記録です。今回のAPI入力 state.logs は実ファイルではなく、kernel や application などログ出力元ごとの架空の抜粋です。通常ケースは1抜粋につき1エントリー、長文ケースの kernel 抜粋は複数エントリーを含みます。採点・順位付けはエントリー単位ではなく、6つの抜粋単位で行いました。

  • 測定開始(UTC):2026-10-06T23:53:55.506519+00:00。実行環境はLinux、Python 3.14.4です。実行端末の地域は未確認です。
  • 入力は10種類の合成障害ケースと、同じOOM証拠を長文の先頭・中央・末尾へ移した3ケースです。合計13テストケースで、各ケースの6つのログ抜粋を6つのscore質問で評価しました。
  • 各テストケースを3モデルそれぞれに送り、各組合せで27回の成功応答を得るまで実行しました。13ケース×3モデル×27回=1053件の成功応答です。実際には途中のHTTP429が1件あり、測定の呼び出し数は1054回でした。各モデル351件の成功応答になります。warmupなし、直列、毎回新しいTLS接続です。先頭モデルはケース・反復ごとに交替させました。
  • TypeSafe System One APIとCloudflare Workers AIのAPIへ、同じstate/questionsを送りました。実サーバーログ・個人情報は使用せず、架空ログのみです。入力・質問順・採点ラベルは全モデルで固定しています。
  • 採点用の正解ラベル(grade)は、各抜粋に事前に付けた無関係0・症状2・直接証拠3です。モデルへ渡す質問の4段階基準には間接情報1も含めています。正解ラベルはAPIへ送らず、返却スコアから作った調査優先順位の評価にだけ使いました。
  • API往復と応答の契約検査までを測りました。ログ収集、mask、製品CLI全体、接続再利用、並列処理は測定していません。proxyやredirectは使わず、timeout20秒、最初のエラーで停止し、自動再送しない設定です。
  • 返却モデル:jev=jev-1.13.0、clef=clef、clef-flash=clef-flashです。

実際の入力と質問(抜粋)

複数のログエントリーをまとめて送った実測ケースの例です。kernel の平常エントリーの間にOOMの記録があり、この内容を根拠に、kernelのログファイルを先に詳しく調べる判断を期待しました。

改行が見えるよう、入力をPythonの複数行文字列で示します。掲載用に kernel の全621エントリーからOOM前後の5件だけを抜粋しています。他の5出力元は実測でも各1エントリーです。時刻範囲などの項目と他の5問は省略しています。実測では省略前の入力を送りました。

state = {
    "symptom": "API requests fail",
    "logs": {
        "routine-auth": "2026-10-01T10:00:00Z scheduled session closed normally",
        "kernel": """2026-10-01T09:59:59Z routine health-check completed normally
2026-10-01T09:59:59Z routine health-check completed normally
2026-10-01T10:00:03Z Out of memory: Killed process 1234 (web-api), anon-rss:1048576kB
2026-10-01T09:59:59Z routine health-check completed normally
2026-10-01T09:59:59Z routine health-check completed normally""",
        "routine-monitor": "2026-10-01T09:59:55Z collected standard metrics",
        "routine-package": "2026-10-01T08:00:00Z package metadata check completed",
        "routine-cron": "2026-10-01T10:00:02Z completed scheduled cleanup successfully",
        "application": "2026-10-01T10:00:01Z Worker exited unexpectedly",
    },
}

questions = {
    "log2": {
        "type": "score",
        "instructions": "How valuable is it to examine kernel first to find the cause of the incident?",
        "criteria": [
            "Nothing related to the incident; can be skipped",
            "Only indirect or routine information",
            "Shows symptoms or effects of the incident",
            "Shows the cause of the incident or its direct evidence; examine this first"
        ]
    }
}

質問は log1 → routine-auth、log2 → kernel、log3 → routine-monitor、log4 → routine-package、log5 → routine-cron、log6 → application の順です。全6問は同じ評価基準で、質問文のログ出力元名だけを変えています。

比較用のラベルは、kernelを「直接証拠」、applicationを「症状」、残り4つを「無関係」としました。このラベルはAIには渡さず、回答の評価に使いました。3モデルには同じログエントリーと質問を送りました。

全体結果

測定として1054回呼び出し、1053件がHTTPと応答契約の検査に成功しました。途中のHTTP429は1件です。速度・順位の主集計には成功応答だけを使い、各モデル351件を揃えました。失敗は別に記録しています。

モデル成功/試行p50秒p95秒最短〜最長秒Top1Top3nDCG首位同点入力tokens合計
jev351/3510.2530.4090.194〜0.696351/351351/3511.00000/3511698435
clef351/3510.7403.5530.315〜17.128351/351351/3511.00000/3511725219
clef-flash351/3520.2581.1610.178〜7.392297/351351/3510.97450/3511725219

p50は中央値です。p95は昇順351件の334番目(nearest-rank)です。Top1/Top3は最高gradeの抜粋が1位/上位3件に入った試行数、nDCGは全6抜粋の調査優先順位と設計時ラベルの一致(1が理想順位)を表します。同点順位は質問定義順に決め、首位同点も別に数えています。サービス全体のSLAを示す測定ではありません。

通常ケースと長文ケースを分ける

OOM関連が13入力のうち4入力を占めるため、通常10入力と長文3入力を分けて見ます。各モデルで、通常は270試行、長文は81試行です。

入力群モデル試行数p50秒p95秒Top1Top3nDCG
通常10入力jev2700.2410.385270/270270/2701.0000
通常10入力clef2700.6201.440270/270270/2701.0000
通常10入力clef-flash2700.2430.624270/270270/2701.0000
長文3入力jev810.3500.46481/8181/811.0000
長文3入力clef813.2063.87581/8181/811.0000
長文3入力clef-flash811.0691.56127/8181/810.8893

ケース別の結果

各行は同じ入力の27反復です。時間の幅と最優先の抜粋の変化も載せています。

ケースモデルp50秒最短〜最長秒Top1nDCG最優先の抜粋ID入力tokens/回
oomjev0.2370.200〜0.69627/271.0000log2×271127
oomclef0.6290.315〜2.28527/271.0000log2×271202
oomclef-flash0.2450.194〜0.81627/271.0000log2×271202
disk-fulljev0.2450.215〜0.38527/271.0000log2×271116
disk-fullclef0.6400.331〜1.77327/271.0000log2×271193
disk-fullclef-flash0.2460.212〜0.87227/271.0000log2×271193
databasejev0.2360.194〜0.39527/271.0000log6×271110
databaseclef0.5760.378〜1.30027/271.0000log6×271187
databaseclef-flash0.2370.206〜0.41027/271.0000log6×271187
dnsjev0.2390.195〜0.30427/271.0000log6×271119
dnsclef0.7060.357〜2.39827/271.0000log6×271195
dnsclef-flash0.2520.197〜0.66927/271.0000log6×271195
tls-expiredjev0.2390.201〜0.45927/271.0000log1×271128
tls-expiredclef0.5350.339〜1.11827/271.0000log1×271205
tls-expiredclef-flash0.2470.186〜0.60527/271.0000log1×271205
permissionsjev0.2440.215〜0.61127/271.0000log6×271113
permissionsclef0.5840.351〜1.47227/271.0000log6×271190
permissionsclef-flash0.2380.178〜0.40727/271.0000log6×271190
database-lockjev0.2480.216〜0.42127/271.0000log4×271114
database-lockclef0.7260.443〜1.45227/271.0000log4×271191
database-lockclef-flash0.2420.194〜1.75727/271.0000log4×271191
service-startjev0.2440.218〜0.61027/271.0000log3×271115
service-startclef0.5860.406〜1.91727/271.0000log3×271192
service-startclef-flash0.2340.199〜0.91827/271.0000log3×271192
filesystem-readonlyjev0.2330.201〜0.40127/271.0000log5×271113
filesystem-readonlyclef0.6150.330〜1.47627/271.0000log5×271190
filesystem-readonlyclef-flash0.2440.193〜1.11627/271.0000log5×271190
network-linkjev0.2390.201〜0.44627/271.0000log5×271106
network-linkclef0.6320.330〜1.93927/271.0000log5×271183
network-linkclef-flash0.2520.208〜0.88427/271.0000log5×271183
long-oom-beginjev0.3400.306〜0.46127/271.0000log2×2717248
long-oom-beginclef3.1772.855〜4.23427/271.0000log2×2717323
long-oom-beginclef-flash1.0290.971〜1.90227/271.0000log2×2717323
long-oom-middlejev0.3470.303〜0.57227/271.0000log2×2717248
long-oom-middleclef3.1482.831〜3.87527/271.0000log2×2717323
long-oom-middleclef-flash1.1061.004〜1.5610/270.8340log6×2717323
long-oom-endjev0.3570.292〜0.46727/271.0000log2×2717248
long-oom-endclef3.2742.805〜17.12827/271.0000log2×2717323
long-oom-endclef-flash1.0690.993〜7.3920/270.8340log6×2717323

首位IDはケース内の抜粋を評価する質問ID(log1〜log6)です。番号はケースごとに変えており、log1を固定の正解にはしていません。長文3ケースは約41KBのJSON入力(kernelの抜粋本文約38KB)で、OOM証拠の位置だけを移しました。公称コンテキスト上限までの耐性試験ではありません。

採点ラベルの判断余地

測定条件で定義した採点ラベルには判断の余地があります。独立確認ではtls-expiredのapplicationのエントリーにも期限切れの原因が明記されていることが分かりました。元の採点に加えてapplicationをgrade3とする感度分析を別に行いました。元データ・主集計は変更していません。

モデル元のTLS Top1applicationも直接証拠としたTop1別ラベルのTLS nDCG
jev27/2727/271.0000
clef27/2727/271.0000
clef-flash27/2727/271.0000

合理的な抜粋の選択が複数あるケースの順位差を、そのまま判断能力の劣化とは扱いません。入力の時刻は09:55〜10:05(中心の±5分、10分幅)です。stateのwindow_minutes=5は意味が曖昧ですが、全モデルで同じ入力を使っています。

費用の推計

モデル入力100万tokensの公開単価USD今回351成功の推計USD
jev0.0420.07133427
clef0.240.41405256
clef-flash0.090.15526971

合計は約0.6407ドルです。成功1053件の入力tokens×公開単価からの推計で、実際の請求額ではありません。無料枠、基本料、個別契約の割引は反映していません。Workers Paidを利用する場合は、基本料5ドル/月がこの利用料とは別にかかります。Workers基本料。1ドル150円と置くと約96円になります(為替相場の引用ではなく換算例です)。

Jevの単価は、今回TypeSafeの公式資料で確認した標準料金です。Clef系も含め、確認日は2026-10-07です。TypeSafe公式、Clef公式、Clef-flash公式。

結果から何が分かったか

今回の通常10入力の中央値は、jev 0.241秒、clef 0.620秒、clef-flash 0.243秒でした。

今回の長文3入力の中央値は、jev 0.350秒、clef 3.206秒、clef-flash 1.069秒でした。

最大待ち時間は、jev 0.696秒、clef 17.128秒、clef-flash 7.392秒でした。通信、キュー、前処理、推論の内訳は測っておらず、遅延の原因を無料枠・地域・モデル内部のいずれかに断定できません。

通常入力でのTop1一致は、jev 270/270、clef 270/270、clef-flash 270/270でした。長文入力では、jev 81/81、clef 81/81、clef-flash 27/81でした。

jevの長文は、先頭 27/27、中央 27/27、末尾 27/27で直接証拠を首位に選びました。直接証拠がTop3に残ったのは81/81でした。

clefの長文は、先頭 27/27、中央 27/27、末尾 27/27で直接証拠を首位に選びました。直接証拠がTop3に残ったのは81/81でした。

clef-flashの長文は、先頭 27/27、中央 0/27、末尾 0/27で直接証拠を首位に選びました。直接証拠がTop3に残ったのは81/81でした。

今回の結果からは、jevが現状最も信頼できてかつ高速で、clef-flashが単文限定ならあり(長文で精度低下)、clefが高精度だけど重い(費用&レイテンシ)とと言えるのではないかと思います。

  • 351試行/モデルは13固定入力×27反復です。反復を増やして待ち時間のばらつきを観測しましたが、独立した障害題材が増えたわけではありません。長文3入力は同じOOMの派生です。
  • 全ケースに直接証拠があります。正常時の誤警報、原因を示すエントリーの欠落、実運用の曖昧な障害、64質問やコンテキスト限界は評価していません。
  • 暫定ラベルへの一致は原因特定精度の保証ではありません。実用性と機械的な契約・順位採点は別に評価する必要があります。
  • 1053回でも、サービス全体のSLAや一般的な速度差の有意性を確定したとは言えません。
  • 製品の提供元選択機能や本番設定は変更していません。

次は画像の判断を試したい

Clef系は画像を判断材料にできる点も興味深いところです。例えば画面の状態確認や画像の仕分けでは、自由文の説明ではなく決めた質問への判断を返せます。画像のあり/なしや誤判断例を見せるには別の記事が適しているため、今回のログ抜粋の比較とは分けて扱います。画像入力の公式仕様。

再現条件

今回の計測では比較ツールを作りました。 decisionbench.py 公開版の使い方はこちらです。Python 3.10以上で動き、合成ログとテストも同梱しています。

最初は上限1053回で開始し、停止後は成功済み400件を送らない開発用の続行runnerで残り653件だけ実行しました。各入力・モデル・反復番号・入力hashを照合しています。合成入力とモデルを変えず、保存済みの成功分から続けています。公開版にはこの続行runnerは含まれていません。

  • 使用ツールSHA256:bc8a418848996dc48212c475f47630b330165d5c609d8824162405093e4c01d0
  • suiteファイルSHA256:ff1b3c4da6cd03830ccc1c7df6b77f3a498b4c2f742c991272f7f61ce27c68d6
  • 27反復を最初から実行する場合:python3 tools/decisionbench.py --live --repeats 27 --max-requests 1053 --jev-price 0.042 --region unknown --plan <確認したプラン> --output <新規ディレクトリ>。これは同じ入力セットを一度に実行するコマンドで、今回の653件だけの続行を再現するものではありません。認証情報は実行プロセスへ供給し、コマンドや記事には記載していません。
  • 集計対象は同じ13入力を各モデル27反復した1053件の成功応答です。測定外の接続確認などは含めていません。生のレスポンス、秘密値、実ログは保存していません。