HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

Janas: SSDからエキスパートをストリーミングしてRAMより大きなLLMを実行

Janas: Run LLMs larger than RAM by streaming experts from SSD (github.com)

50 pointsby khalidkhair20 コメント

要約

Janasは、C言語で書かれたAIツール群であり、特にJanas-LLMは、GPUの有無にかかわらず、通常のコンピュータで大規模なMixture-of-Experts(MoE)言語モデルを実行できるように設計されています。モデルの重みはディスク上に保持され、各トークンに必要なエキスパートはNVMe SSDからストリーミングされ、頻繁に使用されるものはメモリにキャッシュされます。これにより、32GBのRAMを搭載したラップトップでも、800億パラメータのモデルを実行し、応答を得ることが可能です。このシステムは、ディスクI/Oとメモリ管理を最適化することで、従来のllama.cppなどのフレームワークと比較して、特に大規模モデルにおいて高速な推論を実現します。

全文翻訳

Janas 37 tok/s Qwen3-Next-80B(48 GBモデル)を32 GBメモリのラップトップで実行(ドラフトなしで24、llama.cppが管理する2.8)。プロンプト読み込み時、62 tok/s対16。 Janas-LLMは、同じラップトップ(Debian 13 Linux、Intel Core Ultra 9 185H、統合Arc GPU、32 GB、NVMe SSD;2026年10月9〜11日;以下のマシン全体)で比較したすべてのモデルでllama.cppより高速でした。 モデル 1,024トークン読み込み: Janas-LLM llama.cpp 書き込み: Janas-LLM llama.cpp Qwen3-Next-80B-A3B (48.4 GB, メモリより大きい) 62 tok/s 16 tok/s 24 tok/s 2.8 tok/s Qwen3-Coder-Next (48.4 GB, メモリより大きい) 66 tok/s 14 tok/s 22 tok/s 2.2 tok/s Qwen3.6-35B-A3B 104 tok/s 79 tok/s 19 tok/s 12 tok/s Qwen3-30B-A3B 135 tok/s 122 tok/s 32 tok/s 15 tok/s Gemma-4-26B-A4B-it 84 tok/s 76 tok/s 18 tok/s 12 tok/s Gemma-4-12B-it 65 tok/s 46 tok/s 9.9 tok/s 7.1 tok/s Qwen3.5-9B 111 tok/s 78 tok/s 14 tok/s 8.7 tok/s Gemma-4-E4B-it 122 tok/s 109 tok/s 20 tok/s 15 tok/s Qwen3-4B 193 tok/s 164 tok/s 27 tok/s 18 tok/s Gemma-4-E2B-it 191 tok/s 150 tok/s 38 tok/s 19 tok/s Qwen3.5-2B 441 tok/s 323 tok/s 52 tok/s 28 tok/s Qwen3.5-0.8B 799 tok/s 519 tok/s 109 tok/s 32 tok/s Qwen3-0.6B 939 tok/s 670 tok/s 130 tok/s 45 tok/s 同じモデルを他のハンドで、隣のカタログに記載: モデル 1,024トークン読み込み: Janas-LLM llama.cpp 書き込み: Janas-LLM llama.cpp Qwen3-30B-A3B, bartowski's Q4_K_M (重要度行列) 131 tok/s 122 tok/s 32 tok/s 16 tok/s Qwen3-30B-A3B, unsloth's UD-Q3_K_XL (3ビット) 100 tok/s 112 tok/s 36 tok/s 11 tok/s Qwen3-4B, bartowski's Q4_K_M (重要度行列) 191 tok/s 160 tok/s 26 tok/s 18 tok/s 唯一の例外: 3ビットQwen3-30Bはllama.cppよりプロンプト読み込みが遅い。そのQ3_K重みはまだGPUの高速プロンプトに到達しないため。書き込みは3倍速い。 測定方法とドラフト付きの速度: 現在動作するもの。他のマシンでは数値は異なるでしょう。janas-benchがあなたのマシンを測定します。 Linux x86-64 (Ubuntu 22.04, Debian 12以降) で試してください: curl -LO https://github.com/prabanta-dev/janas/releases/latest/download/janas-linux-x86_64.tar.gz tar xf janas-linux-x86_64.tar.gz && cd janas ./janas-chat # 知っているモデル: 1つ選択すると、ダウンロードされチェックされます またはWindows 10 (1903以降) および11、x86-64で: janas-windows-x86_64.zipをダウンロードし、展開し、janasフォルダ内のターミナルで . janas-chat を実行します。 同じラップトップでWindows 11 (2026年10月12日) 下でも、Janas-LLMはLinuxと同じ速度で書き込み(Qwen3-4B 25.6 tok/s、Qwen3-30B-A3B 34.2)、混合モデルではプロンプト読み込みも同じ速度(Qwen3-30B-A3B 132 tok/s)、密モデルでは1.8倍高速(Qwen3-4B 346 tok/s対193)でした。密モデルでは、すべてのブロックがIntel独自のWindowsドライバーを通じてGPUに送られます。 モデルはHugging Faceから既に変換された状態で提供されます。ソースからのビルド: はじめに。 ▄███████████▄ ▄███████████████▄ ███ ▄ █████ ▄ ███ ▄ J A N A S ███▄▄▄█████▄▄▄████ ▀█████▄▀▀▀▄█████▀ ▀ C言語で書かれた人工知能のためのツール群。 Janasは、C言語で書かれた人工知能のためのツール群であり、Cライブラリ以外の依存関係はありません。その最初のコンポーネントであるJanas-LLMは、GPUの有無にかかわらず、通常のコンピュータで大規模なMixture-of-Experts言語モデルを実行します。重みはディスク上に保持され、各トークンが必要とするエキスパートはNVMe SSDからストリーミングされ、繰り返し使用されるものはメモリに保持されます。800億パラメータのモデルが、32GBのRAMを搭載したラップトップで実行され、応答します。Maurizio "camauri" Cammalleriによって設計・執筆されました。 ⚠️ まずこれを読む これは製品ではなく実験です。ステージ: 初期開発。公開APIとコマンドラインは予告なく変更され、週に数回変更されています。モデルファイルは例外です。Hugging Faceで公開されている.jnsファイル(フォーマットバージョン2)は、Janas-LLMのすべての将来のバージョンで読み込まれます。 安定性: 検証されていません。エンジンは意図的にマシンに負荷をかけます。エキスパートキャッシュで空きメモリをすべて使用し、O_DIRECTでディスクをフルスピードで読み取ります。計算よりもヘッドルームが少ないマシンでは、デスクトップがスワップに追い込まれ、遅くなったり応答しなくなったりする可能性があります。GPUの使用により、一度デスクトップごとドライバがリセットされたことがあります。 データ: ~/.cache/janas(マシンについて学習したこと、およびシステムメッセージを再読み込みしないように読み込んだもの)と、変換されたモデルを配置するように指示した場所にのみ書き込みます。読み取るモデルファイルには触れません。 ハードウェア: 1台のマシン(下記)で開発・実行されました。それ以外のマシンでは未テストです。遅くなる可能性、モデルを拒否する可能性、誤動作する可能性があります。問題が発生した場合、Ctrl-Cで応答を停止し、Ctrl-Dでチャットを終了します。--cache <GiB>はメモリ使用量にハード制限を設け、JANAS_GPU=0はGPUを完全に無効にします。 成長したマシン: このリポジトリのすべては、以下で書かれ測定されました: Linux Debian 13 (trixie), x86-64, カーネル 6.12.107; GPUドライバー Mesa 26.1.6 (Vulkan); GCC 14.2でビルド Intel Core Ultra 9 185H (6コア高性能、8コア高効率、2コア低電力; AVX2, FMA, F16C, AVX-VNNI; 統合Arc GPU) 32 GB DDR5 RAM 1 TB NVMe SSD (読み取り速度約5.7 GB/s) Windowsビルドは同じラップトップでWindows 11 (ビルド26300) でIntel独自のグラフィックスドライバーを使用して実行されました。そこでのテストはパスし、速度は上記のとおりです。 エンジンが行うすべてのことは、測定されたものから選択されるため、他のマシンでは異なる選択が行われます。その部分は移植されることを意図しています。試されていないのは、他のCPU(特にAVX-VNNIなし、またはAMD)、ディスクリートGPU、低速ディスク、メモリの増減です。他の場所で実行する場合、janas-benchからのレポートが最も役立つ情報です(「他のハードウェアでの実行を支援する」を参照)。 現在動作するもの: Janas-LLMが現在モデルごと、機能ごとに実行できるもの: docs/features.md。 上記のマシンで、他に何も実行せずに、janas-benchは次のように報告します(2026年10月10日測定、その日からデフォルトとなった高速プロンプトを使用): モデル プロンプト読み込み チャットでの応答書き込み(ドラフト付き) Qwen3.5-2B (密、1.3 GB) 395 tok/s 50 tok/s 67 tok/s Qwen3-4B (密、2.5 GB) 220 tok/s 28 tok/s --draft参照 Qwen3.5-9B (密、5.7 GB) 103 tok/s 14 tok/s 24 tok/s Qwen3-30B-A3B (18.6 GB) 133 tok/s 34 tok/s — Qwen3.6-35B-A3B (22.3 GB) 86 tok/s 25 tok/s 34 tok/s Qwen3-Next-80B-A3B (48.4 GB) 64 tok/s 22 tok/s 37 tok/s Gemma-4-E2B-it (3.1 GB) 211 tok/s 38 tok/s 52 tok/s Gemma-4-E4B-it (5.0 GB) 133 tok/s 20 tok/s 32 tok/s Gemma-4-12B-it (密、7.1 GB) 71 tok/s 10 tok/s 14 tok/s Gemma-4-26B-A4B-it (18.3 GB) 90 tok/s 18 tok/s 26 tok/s すべての数値は3回のラウンドの平均であり、ベストラウンドではありません。エンジン自体が各種類のパス(チャットが実行するパス)のために選択した構成です。256トークンのプロンプト、その後64トークンを書き込みます。ここでは統合GPUがすべてのプロンプト(下記の高速プロンプト)を読み込み、エンジンが設定したスレッドは、プロンプトにはパフォーマンスコアの12、ほとんどすべてのモデルでの単一トークンにはパフォーマンスコアの12、一度に複数のトークンには使用可能なすべてのコア(パフォーマンスおよび高効率コア、低電力コアを除く)でした。他のマシンでは、エンジンは他のスレッドを選択する可能性があります。各種類の最初のパスは、すべてのコア、パフォーマンスコアあたりの1スレッド、およびパフォーマンスコアのスレッドを試行し、最も速いものを保持し、後で他のものを時々試行します。これにより、マシンがウォームアップすると結果が変わる可能性があります(i9-14900HXでは、すべてのスレッドがパフォーマンスコアの16の半分の速度で応答しました)。ラウンドは交互に実行されるため、マシンのウォームアップとキャッシュの充填が各設定に同様に影響します。実行間には数パーセントの変動があり、キャッシュがまだ満たされていない最初の実行ではこれよりも少ないと予想されます。 GPUなし (JANAS_GPU=0) で、Qwen3-4Bは同じプロンプトを85 tok/sで読み込み、27 tok/sで書き込みます。最後の列は、次のトークンを推測し、モデルがそれをチェックするドラフトであり、より高いレートで同じテキストです。全体は --mtp の下で説明されています。Qwen3.5およびQwen3.6モデル、およびQwen