DeepSeek V4.1 Flash、約0.42ドルでFortranを最大39.653倍高速化――7モデル完全ブラインド比較
DeepSeek V4.1 Flashへ3本の公開Fortranコードを各32分23秒、完全ブラインドで高速化させた。最大39.653倍、3本総合22.029倍で7モデル中3位。推定API費用は3本合計約0.42ドルだった。
YouTube動画
実測結果、主要なソース変換、7モデル比較を約13分で解説しています。
先に結論――最大39.653倍、3本総合は7モデル中3位
2026年9月10日に発表されたDeepSeek V4.1 Flashを、3本の公開Fortranベンチマークへ追加しました。
DeepSeekの公式発表によると、V4.1 Flashは552BパラメータのMoEで、入力時に8B、出力時に16Bを活性化する非対称構造を採用しています。公式は、前世代より小さいKV cache、高いスループット、V4-Proを上回るという自社ベンチマーク結果を説明しています。ただし今回の記事は、その主張全体を検証するものではありません。私たちが測ったのは、公開Fortranコードを自律的に、正解を完全一致で保ちながら高速化できるかです。DeepSeek公式発表
V4.1 Flashは公開重みモデルですが、552Bのモデルを今回の評価条件で当社設備へ展開するのは現実的ではないため、推論にはクラウドAPIを使いました。「公開重みか非公開モデルか」と「ローカル実行かクラウド利用か」は別の軸です。今回は、公開重みモデルを外部サービス上で利用した評価です。
評価にはFireworks AIのserverless APIを使いました。同社のモデルページでは、モデルIDはaccounts/fireworks/models/deepseek-v4p1-flash、コンテキストは1,040k、単価は100万token当たり入力0.22ドル、cache済み入力0.007ドル、出力0.66ドルと表示されています。Fireworks AIのモデル情報
結果は次の通りです。
| 公開ベンチマーク | 無改変版 | DeepSeek V4.1 Flash | 高速化率 | 完全一致 |
|---|---|---|---|---|
| SIKB-A | 276.053566秒 | 27.201010秒 | 10.149倍 | 3/3 PASS |
| SIKB-B | 76.443163秒 | 1.927797秒 | 39.653倍 | 3/3 PASS |
| SIKB-C | 73.028400秒 | 2.748976秒 | 26.566倍 | 3/3 PASS |
| 3コード幾何平均 | — | — | 22.029倍 | 全9回PASS |
3本の幾何平均は22.029倍。既存6モデルへ加えると総合3位です。
首位のKimi K3は29.125倍、2位のGPT-6 Astraは26.814倍なので、DeepSeek V4.1 Flashは両モデルには届きませんでした。一方、GLM-5.3 Maxの21.740倍を1.33%、GPT-5.6 Sol Maxの21.576倍を2.10%上回っています。
個別コードを見ると、さらに面白い結果です。
- SIKB-Aは10.149倍で7モデル中5位
- SIKB-Bは39.653倍でAstraに次ぐ2位。Kimi K3を6.04%上回る
- SIKB-Cは26.566倍でKimi K3に次ぐ2位。Astraを9.12%上回る
DeepSeek V4.1 Flashは、すべてのコードで一様に強かったのではない。SIKB-Aでは伸び悩んだ一方、BとCでは最大級モデルの上位へ食い込んだ。
この振れ幅こそ、単一のコーディングベンチマークだけでは見えにくい、エージェント型ソース高速化の特徴です。
7モデルの総合順位
これまでの6モデルと同じ表へ追加します。
| 公開ベンチマーク | Kimi K3 | GPT-6 Astra | DeepSeek V4.1 Flash | GLM-5.3 Max | GPT-5.6 Sol Max | DS4 Q4 (0731) | Qwen3.8-27B Q4 |
|---|---|---|---|---|---|---|---|
| SIKB-A | 22.967倍 | 15.928倍 | 10.149倍 | 13.559倍 | 11.371倍 | 7.727倍 | 8.001倍 |
| SIKB-B | 37.396倍 | 49.715倍 | 39.653倍 | 30.041倍 | 36.816倍 | 31.763倍 | 15.096倍 |
| SIKB-C | 28.764倍 | 24.346倍 | 26.566倍 | 25.227倍 | 23.991倍 | 5.172倍 | 6.984倍 |
| 3コード幾何平均 | 29.125倍 | 26.814倍 | 22.029倍 | 21.740倍 | 21.576倍 | 10.828倍 | 9.448倍 |
総合順位は次の通りです。
- Kimi K3: 29.125倍
- GPT-6 Astra: 26.814倍
- DeepSeek V4.1 Flash: 22.029倍
- GLM-5.3 Max: 21.740倍
- GPT-5.6 Sol Max: 21.576倍
- DS4 Q4 (0731): 10.828倍
- Qwen3.8-27B Q4: 9.448倍
DeepSeek V4.1 Flashは総合3位ですが、GLM、Sol Maxとの差はわずかです。一回の探索結果だけで、この3モデルの能力に決定的な差があるとまでは言えません。
それでも、同じ3種類の計算構造に対してすべて正解候補を作り、総合22倍へ到達したことは明確です。
比較したのはチャット回答ではなく、自律的な試行錯誤
今回も、チャット画面へソースを貼り、一度だけ修正版を答えさせた試験ではありません。
DeepSeek V4.1 FlashをCodex CLI互換のResponses APIアダプターへ接続し、単一エージェントに次のループを実行させました。
- 公開ソースと一般化したプロファイラ情報を読む。
- ボトルネックを推定する。
- 許可されたFortranのkernelだけを変更する。
- 候補をgitへ保存する。
- モデルから隔離した固定評価器へ提出する。
- 実行時間とPASSまたはFAILだけを受け取る。
- 正しくても遅い候補を捨て、次の仮説を試す。
固定条件は次の通りです。
| 条件 | 内容 |
|---|---|
| モデル | accounts/fireworks/models/deepseek-v4p1-flash |
| 提供 | Fireworks AI serverless API |
| エージェント | Codex CLI互換Responses API、単一エージェント |
| コンテキスト設定 | 1,048,576 tokens |
| 探索時間 | 各コード1,943秒、32分23秒 |
| CPU評価 | 同一の40物理コア環境を排他利用 |
| コンパイラ | Intel ifx 2026.1.1 |
| 固定フラグ | -O2 -qopenmp -fp-model precise |
| 診断 | VTune、ifx最適化レポート、静的解析 |
| 正解判定 | モデルから見えないreferenceとの完全一致 |
| 最終値 | 凍結した同一SHAを3回実行した中央値 |
モデルはMakefile、入力、反復回数、計算量、reference、validatorを変更できません。コンパイラフラグだけを変えた候補や、測定区間だけを短くする変更も評価器が拒否します。
共通プロンプトの核は次の内容です。
公開FortranのCPU実行時間を短縮し、出力を完全一致で維持する。
Intel ifx 2026.1.1と固定フラグを使い、ソース変更だけで高速化する。
入力、計算量、Makefile、reference、validatorは変更しない。
VTuneとifx最適化レポートを利用できる。
候補は隔離された固定評価器だけで測定する。
他モデルの候補、速度、推論、controller資料へアクセスしない。
正しく速い候補をgitで保存し、最後に同一SHAを3回測定する。
人間は「ここを並列化しなさい」「このループを入れ替えなさい」といった高速化のヒントを与えていません。
SIKB-A――10倍でも、このモデルの弱点になった
SIKB-Aは、不規則なpair列挙、4チャネル、テンソル収縮、正しく丸められる除算の連鎖を持つコードです。無改変版は276.054秒でした。
元コードは外側の4チャネルをOpenMPへ渡していました。40コアを用意しても、大きな仕事は4個しかありません。
DeepSeek V4.1 Flashは、最初にchannel × pairを多数のwork itemへ展開しました。以下は、実際の変更意図を読みやすくした概念上の簡略diffです。
-do channel = 1, n_channels
- do p = 1, block%n_pairs
+do work_item = 1, n_channels * block%n_pairs
+ channel = 1 + modulo(work_item - 1, n_channels)
+ p = 1 + (work_item - 1) / n_channels
! 元と同じ順序のpair計算
これだけで36.920秒まで短縮します。次に、係数が厳密にゼロとなる要素について、同じ演算順序で求めた漸化式結果を表から再利用しました。ゼロ係数でも途中の加算により寄与はゼロにならないため、単純に処理を飛ばすのではなく、同じ答えになる計算を再利用する必要があります。
さらに、直列だったinteraction生成を並列化し、反復中の整数から実数への変換と分母計算を小さな表へ移しました。
276.053566秒 無改変版
36.919585秒 channel × pairへ並列面を拡大
28.635561秒 厳密に等価なzero recurrence表
27.425275秒 builder並列化と不変量表
27.201010秒 最終3回中央値
高速化率は10.149倍です。大きな改善ですが、Kimiの22.967倍、Astraの15.928倍、GLMの13.559倍、Sol Maxの11.371倍には届きませんでした。
このコードでは、正しさを保ったまま除算連鎖そのものをさらに減らすことが難しく、32分23秒の探索中に別の大きな構造変換へ到達できませんでした。
SIKB-B――5個のfieldから24万rowへ並列軸を変更
SIKB-Bは、長さの異なる疎なrow、間接参照、edgeごとの漸化式を持ちます。無改変版は76.443秒です。
元コードの主要なOpenMPループは、わずか5個のfieldを40コアへ配っていました。
DeepSeek V4.1 Flashは並列軸を約24万のrowへ変更しました。さらに、一つのrowに属する複数edgeの独立した漸化式を配列へ詰め、反復番号を外側へ移します。以下も、公開ソースの本質的な変換を示す概念上の簡略diffです。
-do field = 1, n_fields
- do row = 1, system%n_rows
- do edge = row_begin, row_end
- do repeat_id = 1, repeats + tail(edge)
- x = (x + increment) / denominator
- end do
+do row = 1, system%n_rows
+ do field = 1, n_fields
+ lx(1:degree) = initial_values
+ do repeat_id = 1, max_iterations
+ do edge_id = 1, degree
+ if (repeat_id <= steps(edge_id)) &
+ lx(edge_id) = (lx(edge_id) + increment) / lden(edge_id)
+ end do
各edgeの計算順序は維持しながら、多数の独立した除算連鎖を同時に進める構造です。
edge weight生成側でも、ブロックごとに反復番号を外側へ出し、同じデータを再利用しやすくしました。
76.443163秒 無改変版
8.491239秒 row並列化
3.341859秒 独立漸化式のinterleave
1.977217秒 weight生成のblocked再構成
1.927797秒 最終3回中央値
高速化率は39.653倍。Astraの49.715倍には届きませんが、Kimi K3の37.396倍を6.04%上回り、このコードでは2位です。
単にOpenMPディレクティブを一本加えただけではありません。並列化する軸、ループ順序、一時配列、独立計算の束ね方まで変えた、明確なソース構造の変更です。
SIKB-C――2セルを同時に進め、26.566倍
SIKB-Cは100万cell、8成分、predict、correct、couple、state更新という複数stageを持ちます。無改変版は73.028秒です。
元の並列化は8成分を外側に置いていました。ここでも40コアに対して仕事が8個しかありません。
最初の候補は、並列軸を100万cellへ変更しました。これだけで10.743秒、約6.8倍です。
次に8成分の独立した漸化式をinterleaveし、反復番号を外側、成分を内側へ置きました。
-do component = 1, n_components
- do repeat_id = 1, iterations(component)
- x(component) = (x(component) + forcing) / denominator(component)
- end do
+do repeat_id = 1, max_iterations
+ do component = 1, n_components
+ if (repeat_id <= iterations(component)) then
+ x(component) = (x(component) + forcing) / denominator(component)
+ end if
+ end do
この変更で3.398秒まで短縮しました。
さらに2セルを一つのblockで処理し、8 components × 2 cellsの独立計算を同時に進めます。ifxの最適化レポートではSLP vectorizationが確認され、除算待ちを別の独立計算で隠す狙いが実際の命令列へ反映されました。
integer, parameter :: cell_block = 2
real(dp) :: xv(n_components, cell_block)
do cell0 = 1, n_cells, cell_block
! 2セル分の入力を用意
do repeat_id = 1, max_iterations
!$omp simd
do component = 1, n_components
! 独立した漸化式を進める
end do
end do
end do
候補を大きくすれば常に速くなるわけではありません。4セルblockは正解でしたが3.023秒へ悪化しました。不変量表とstage融合を加えた別候補も正解でしたが4.709秒、masked tailと融合を試した候補は3.496秒でした。いずれも棄却し、2セル版へ戻しています。
73.028400秒 無改変版
10.742566秒 cell並列化
3.397989秒 8成分のinterleave
2.772384秒 2-cell blockとSIMD
3.023246秒 4-cell block、正解だが悪化
3.496231秒 masked tail版、正解だが悪化
2.748976秒 2-cell版の最終3回中央値
最終結果は26.566倍。Kimi K3の28.764倍に次ぐ2位で、Astraの24.346倍を9.12%上回りました。
3本合計の推定API費用は約0.424ドル
今回のルーターは、API応答ごとの入力token、cache済み入力token、出力tokenを記録しました。
| 使用量 | token数 |
|---|---|
| 総入力 | 14,953,872 |
| うちcache済み | 14,375,604 |
| cache外入力 | 578,268 |
| 出力 | 296,751 |
Fireworksの表示単価を使うと、推定は次の通りです。
cache外入力 0.578268M × $0.22 = $0.1272
cache済み 14.375604M × $0.007 = $0.1006
出力 0.296751M × $0.66 = $0.1959
------------------------------------------
推定合計 $0.4237
これは請求画面の確定額ではなく、評価ルーターが公式単価から算出した推定値です。それでも、1M contextの自律エージェントを3回、合計約97分走らせた推定費用として非常に小さい値です。
安さの主因は、長い会話履歴の大部分がcache済み入力として課金されたことです。したがって「どんな使い方でも3本0.42ドル」と一般化はできません。cacheが効かない一発の巨大入力、異なるプロバイダ、異なる価格改定では費用も変わります。
9回すべて完全一致
科学技術計算では、速くても答えが変われば高速化とは呼べません。
各コードの最良ソースをSHA-256で凍結し、同じ40物理コア環境で3回ずつ実行しました。
| コード | 最終3回(秒) | 中央値 | ソースSHA-256 |
|---|---|---|---|
| SIKB-A | 27.397309 / 27.192039 / 27.201010 | 27.201010 | a7c7b1721a2a6bb47f404f32bc65d32a2c06dfb61c7094848d513df27e9e10f2 |
| SIKB-B | 2.418863 / 1.927797 / 1.892086 | 1.927797 | 122a6031182749e765b5b6ae652269cb1fc0b1774e9d0c864c241791a3d60850 |
| SIKB-C | 2.748976 / 2.713904 / 2.792694 | 2.748976 | e393e2f115ef79a75017ca5818043a903eb04926e732aca1504c81ceed6e061b |
全9回がmax_abs=0、rms=0、verdict=PASSでした。許容差内ではなく、評価器が比較した数値は完全一致です。
ブラインド性と手続き上の注意
モデルから見えない領域には、reference、validator内部、無改変版の出力、他モデルの候補、controller資料を置きました。SSH wrapperは許可された作業領域と固定評価器だけへアクセスを限定しています。
ただし、今回も手続き上の逸脱を隠しません。
- SIKB-Aでは、モデルが保護対象パスを2回調べようとし、login nodeで直接コンパイルも試みた。すべてguardが拒否し、referenceや評価器内部は開示されなかった。
- SIKB-Bでは、診断用の独自I/O計測を試みたが、固定評価器以外の計測としてguardが拒否した。
- SIKB-Cでは、親ディレクトリを一度一覧表示し、他の評価ディレクトリ名を見た。ソース、結果、速度、referenceの内容にはアクセスしておらず、その後モデル自身が範囲外探索を止めた。
- 未変更ソースの提出は評価前に拒否され、性能値として扱っていない。
したがって、他モデルの解法や正解値を見て作った候補ではありません。ただしSIKB-Cの親ディレクトリ一覧は完全な手続き遵守ではないため、記録へ残します。次回の公開評価環境では、内容だけでなく親ディレクトリの一覧取得も明示的に拒否するべきです。
比較上の限界
7モデル表は、同じ公開ソース、同じ探索時間、同じCPU、同じコンパイラ、同じフラグ、同じ完全一致判定という契約で得た歴史的比較です。
一方、すべてのモデルを同じ日時、同じCodex CLI build、同じAPIプロバイダで同時に再実行したわけではありません。DeepSeek V4.1 Flashは2026年9月12日の後発追試です。
また、各モデル・各コードは原則一回の自律探索です。LLMの探索には確率的な揺れがあり、同じモデルでも別のrunでは異なる候補へ進む可能性があります。
今回の22.029倍は「DeepSeek V4.1 Flashの絶対的な能力上限」ではなく、固定した32分23秒の探索を3種類のコードへ一回ずつ行った、再現可能な到達記録です。
DeepSeek公式はV4.1 FlashがV4-Proを上回ると説明していますが、今回V4-Proを同時に再評価していないため、この記事から両者の優劣は結論しません。
公開ソースと追試
使用した3本は、実研究コードをそのまま公開したものではありません。計算上の難しさを保ちながら、合成データ、新しい命名、新しい入出力で独立実装したScientific Irregular Kernel Benchmark、SIKBです。
- ファイル:
sikb-suite-owner-review-r1.tar.gz - SHA-256:
8e46a97c91ced195bfceac3c1b0f44f1a389458017147037bb231de5e0b32567
既存モデルの詳しい比較条件はこちらです。
DeepSeek V4.1 Flashの公開用diff、最終ソース、共通プロンプト、候補履歴、最終測定証拠は、API情報、内部接続情報、評価器の秘密を除去した再現性パッケージとして追加できます。
まとめ
DeepSeek V4.1 Flashは、3本すべての公開Fortranコードを完全一致のまま高速化しました。
- SIKB-A: 10.149倍
- SIKB-B: 39.653倍
- SIKB-C: 26.566倍
- 3コード幾何平均: 22.029倍
- 7モデル総合: 3位
- 3本合計の推定API費用: 約0.424ドル
SIKB-BではKimi K3を上回り、SIKB-CではAstraを上回りました。一方、SIKB-Aでは総合上位モデルに大きく離されました。
この結果を「Flashだから軽いだけ」と見るのも、「39倍だから最強」と見るのも適切ではありません。
DeepSeek V4.1 Flashは、低いAPI費用で本格的なソース構造の変更を作り、3本すべてを正解させた。総合首位ではないが、BとCでは最高級モデルの上位へ入り、モデルごとの得意構造の違いを鮮明にした。
科学技術計算コードの高速化能力は、モデルのパラメータ数や一般的なコーディングベンチマークだけでは決まりません。並列面を見つけ、依存関係を守り、SIMDへ独立計算を供給し、正しいが遅い候補を捨てる、一連のエージェント能力として測る必要があります。