最近ローカルLLMで使っているSwift-Qwen3.8-27Bに、新しいSwift 1.5が出ていたので、1.0と同じ条件で比べてみました。

今回は同じPC・同じllama.cpp環境・同じプロンプトで、そのまま比較。単純な速度だけでなく、実際に困っていたKotlin / Jetpack Composeのコード修正を投げて、回答の組み立て方まで見ていきます🐈

🧪 今回比較したSwift 1.0と1.5

今回使ったGGUFはこの2つです。

Swift 1.0
Swift-Qwen3.8-27B-NVFP4-Q8mix.gguf

Swift 1.5
Swift-1.5-Qwen3.8-27B-NVFP4-Q8mix.gguf

どちらもQwen3.8-27Bベース。今回使ったQ8mix GGUFは、1.0が約19.72GB、1.5が約19.74GBで、ファイルサイズはほぼ同じです。

Swift 1.5はSwift 1.0の直接アップデートとして公開され、RLとOn-Policy Distillation(OPD)をさらに強化し、特にコーディングやエージェント系タスクの改善がうたわれています。

  • 同じPC
  • 同じllama.cpp環境
  • 同じプロンプト
  • 同じQwen3.8-27Bベース

💬 今回使ったプロンプト

今回投げたのはこちら。

Kotlin/Jetpack Composeで、LazyColumnに500件の漫画一覧があります。高速スクロールしてもANRを起こしにくくし、Reader画面から戻ったときにfirstVisibleItemIndexとoffsetを正確に復元してください。既存UIを大きく変えず、変更点とコード例を簡潔に示してください。

ちょうど自分で作っている漫画ビューアで、実際に困っていた内容です(笑)。コード理解、原因整理、実装案、既存UIを壊さない提案まで必要なので、比較にはちょうどよさそうです。

🔵 Swift 1.0の結果

llama.cppでSwift-Qwen3.8-27B-NVFP4-Q8mix.ggufを起動し同じKotlinプロンプトを入力した画面

▲ Swift 1.0をllama.cppで起動。同じプロンプトを入力して比較します。

Swift 1.0のKotlin Jetpack Compose回答とPrompt 191.3 t/s、Generation 34.2 t/sの実測結果

▲ Swift 1.0の実測。Prompt 191.3 t/s、Generation 34.2 t/s。

Swift 1.0は、rememberLazyColumnState()、key = { it.id }、画像の非同期ロード、Dispatchers.IOなど、高速スクロール時のANR対策を広く提案。

スクロール位置についても、firstVisibleItemIndexとfirstVisibleItemScrollOffsetを保存して戻す方針が出ました。

内容としては十分使える回答ですが、今回は少し「対策候補を広く並べる」印象でした。

🟣 Swift 1.5の結果

llama.cppでSwift 1.5 Qwen3.8 27B NVFP4 Q8mix GGUFを起動し同じKotlinプロンプトを入力した画面

▲ 新しいSwift 1.5を同じllama.cpp環境で起動。

Swift 1.5のKotlin Jetpack Compose回答とPrompt 190.5 t/s、Generation 37.9 t/sの実測結果

▲ Swift 1.5の実測。Prompt 190.5 t/s、Generation 37.9 t/s。

Prompt処理速度はほぼ同じ。一方、Generationは34.2 → 37.9 t/sになり、今回の1回の実測ではSwift 1.5が約10.8%高速でした。

回答では、Readerへ移動する前に位置保存 → ViewModelにindex/offsetを保持 → 戻ったらscrollToItem()で復元、という実装の流れがかなり明確。

さらに、key = { it.id }、保存タイミングを毎フレームにしないこと、500件程度なら数値保存方式で十分、といった「なぜそうするのか」まで整理されていました。

⚡ 速度差を並べると約10.8%

今回の実測を並べるとこうなりました。

Swift 1.0
Prompt:191.3 t/s
Generation:34.2 t/s

Swift 1.5
Prompt:190.5 t/s
Generation:37.9 t/s

Promptはほぼ誤差。Generationは今回、Swift 1.5が約10.8%高速です。

ただし測定は1回だけ。温度、コンテキスト、生成内容、GPU負荷などでも数字は変わるので、「1.5は必ず10.8%速い」という意味ではありません。

  • Prompt:191.3 → 190.5 t/s(ほぼ同じ)
  • Generation:34.2 → 37.9 t/s
  • 今回のGeneration差:約+10.8%
  • 1回の測定なので、固定の性能差とは断定しない

🧩 速度より、回答の整理の仕方が分かりやすかった

個人的に一番違いを感じたのは、速度よりこちら。

Swift 1.0も答え自体は悪くありませんが、1.5は「何を、どの順番でコードへ入れるか」が見えやすい回答でした。

今回のように、既存UIをあまり変えずに不具合を直したいケースでは、対策候補をたくさん並べるより、実装順まで整理してくれる方が使いやすいです。

📌 Swift 1.5は何が変わった?

UkisAIの公式説明では、Swift 1.5はSwift 1.0を土台に、RLとOn-Policy Distillation(OPD)をさらに強化した直接アップデートです。コーディングやエージェント系タスクを含む複数の領域で、Swift 1.0やベースモデルより強い性能を狙っています。

公式評価では、ベースのQwen3.8-27Bに対して、GPQA-Diamondで思考トークンの中央値を58.5%削減しつつスコアをわずかに上回った結果が示されています。

ここは注意:この58.5%はSwift 1.0比ではなく、ベースQwen3.8-27Bとの比較です。「1.0から1.5で58.5%短くなった」という意味ではありません。

🤔 実際に使うなら1.5でいい?

今回の1問だけを見るなら、1.0から1.5へ入れ替えるハードルはかなり低そうです。

生成速度は少し上がり、コード修正の流れも整理されていました。しかも今回使ったQ8mix GGUFは、1.0が約19.72GB、1.5が約19.74GBで容量差はほぼありません。

ただし、今回はコード修正1問だけ。これだけで「1.5が全部上」と決めるのはまだ早いです。

🔬 次に試したいこと

次は、速度以外の差ももう少し見てみたいところ。

  • 長いコード修正
  • 日本語の文章生成
  • 画像認識
  • 長い会話
  • 複数ファイルのコード解析
  • reasoning_effortのlow / medium / xhigh比較

🐈 まとめ:今回の1問ではSwift 1.5が速く、回答も整理されていた

同じ環境・同じプロンプトで比較した結果、GenerationはSwift 1.0:34.2 t/s → Swift 1.5:37.9 t/sでした。

今回の速度差は約10.8%。さらに1.5は、コードをどの順番で直すかが整理されていて、個人的には実装へ持っていきやすい回答でした。

まだ1問だけなので最終判断は早いですが、同じQwen3.8-27Bをローカルで使うなら、Swift 1.5を試してみる価値はありそうです。

そして何より……19GB台の27Bモデルが普通にこの速度で動くの、やっぱり面白い(笑)🐈

🔗 参考リンク

UkisAI:Swift 1.5 Qwen3.8-27B 公式情報

Hugging Face:Swift 1.5 NVFP4 Q8mix GGUF

Hugging Face:Swift 1.0 NVFP4 Q8mix GGUF

X / FEEDBACK

💬 Xで感想・コメント

この記事について、Xで感想・ご意見お待ちしてます🐈

Xの投稿を見る・コメントする →