まず第一に、llama-cppサーバーがオフロードをどう扱っているのかに非常に感心しています。少なくとも私にとっては、ここで何かかなり“魔法”が起きています。
私のVRAMは32gbあるので、小さいモデルを読み込むのは問題ありません。でも今は、システムRAMにあふれてくるようなモデルで試し始めていて、tok/secの違いやさまざまな量子化(quant)をテストしています。
現在、Qwen3 Coder Nextをテスト中です。Q4-KMだと、これはサイズが45gbあります。これは動かせますが、オフロードを増やすほど遅くなります(もちろん)。なので今は、画質が落ち始める前の“ちょうどいい中間”を探すために、より小さい4-bit量子化のIQ4_XS(36gb)を試しています。
36レイヤーをオフロードすると、vramは30/32gbでいっぱいになります。tok / secはだいたい25で、MoEモデルとしては全然良くないです。少なくとも私はそう思います。メモリに完全に収まる3-bit量子化も試しましたが、何度も品質の問題が出たので諦めました。大きいモデルやコーディングだと、3-bitは圧縮しすぎなのかもしれませんし、少なくともそう感じます。(他の人もこの印象あります?それとも私だけ?)
とにかく—本題の質問—llama-cppは一体どうやってこの“魔法”をやっているのでしょうか?私はRAM使用量とスワップファイルを監視していますが、どちらもあまり高くありません。それなのに、モデル全体で120kの非量子化KVキャッシュコンテキストを含めても、ロードできているのは30gbしかないのです。これは基本的に不可能なので、どうやってKubuntu 24.04がシステムリソースを管理しているのか、私が何かを見落としているのは確実です。
RAM用の私のKDE5ウィジェットは、llama-cppが何をやっているかを捉えられていないのでしょうか?仕組みを調べる方法や、誰かがこの馬鹿な私に説明してくれるなら、すごくありがたいです。笑
[link] [comments]



