ディスカッション (11件)
Nvidia GreenBoostは、システムRAMや高速なNVMeストレージを、GPUのビデオメモリ(VRAM)として透過的に拡張できるツールです。本来のVRAM容量を超えるような大規模なAIモデルやレンダリング処理において、メインメモリなどのリソースを効率的に回すことで、メモリ不足エラーを回避し実行を可能にします。
これがLinuxのメインラインに入ったら最高だな。
以前の投稿: https://news.ycombinator.com/item?id=47384557 (https://news.ycombinator.com/item?id=47384557) (今見てもクールだけど、やっぱりもっとマシなベンチマークが欲しいところだね)
これ結構楽しいよ。デスクトップを使ってない夜の間にnemotron-3-superモデルを動かしてるんだ。4070と96GBのRAMで問題なく動く。遅いけど、ちゃんと仕事はしてくれる。
関連して、数年前のやつ:https://old.reddit.com/r/Amd/comments/15t0lsm/i_turned_a_95_... (https://old.reddit.com/r/Amd/comments/15t0lsm/i_turned_a_95_amd_apu_into_a_16gb_vram_gpu_and_it/) 「95ドルのAMD APUを16GBのVRAM搭載GPUに改造してみた。Stable Diffusionも動くぞ!」
余ってるRAMを使って夜間にタスクをこなすには、かなり便利な方法かも。LLMベースの分類とか、ラベリング、データクレンジングあたりがパッと思い浮かぶかな。
レイヤーのオフロードに関して、llama.cppの機能とどう違うんだろ?リポジトリでは一貫して「DDR4」って言及されてるけど、DDR5だと動かない理由でもあるのかな?
一部のGPUドライバなら、もうこれできるよ。 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdttm.pages_limit=5242880 ttm.pages_limit=5242880" デメリットは、カーネルがそのメモリをユーザーランドから切り離して予約してくれないこと。システムレベルでは全部「空きメモリ」として見えちゃうんだ。GPUドライバがそれを使い始めると、他のアプリやOSはどれくらい使われてるか知らないまま「空き」メモリを使おうとする(「キャッシュ」として表示されたり、全く表示されなかったりする)。するとOOM Killerが動いたりプログラムがクラッシュし始めて、最終的にOSが落ちるかGPUドライバがクラッシュする。妥協案としてスワップを大量に追加すれば、少し遅いけど一応動くよ。とにかく、システムRAMを使うためだけに巨大なモデルをロードするのは(メモリ帯域のせいで)めちゃくちゃ遅い。1〜5 t/sくらいだし、実用的じゃないよ。86kトークンのリクエストを1つ処理するのに丸一日かかる。クラウドプロバイダーに0.01ドル払って10秒で終わらせたほうがいい。
「ベストな戦略は、EXL3量子化かModelOpt PTQでモデルを収まるまで小さくして、GreenBoostのDDR4プールはKVキャッシュ専用に使うことだ」 これって理にかなってる?KVは100%確実に使われるけど、MoEとかだと重みは必ずしも全部使われるわけじゃないと思ってた。まあ、巨大なコンテキストを狙うなら、まだ使ってない分をRAMに割り当てるのは納得だけど。
システムメモリへの物理的なボトルネックは残ったままだね。だから、どのレイヤーをオフロードするか手動で調整したほうが良い結果が出ると思う。自分なら、埋め込み(embedding)やリランカー、TTS(音声合成)なんかの別モデルをキャッシュするためにシステムメモリを使いたいな。そうすれば、例えばMem0経由で複雑なRAGをローカルで動かして、メインの大きなLLMはクラウドを使う、みたいな構成ができるし。
エンジニアリングとしてはすごく面白いけど、他の人も言ってるように、ベンチマークのせいでどの要素がどれくらい寄与してるのか分かりにくいね。 「ExLlamaV3 EXL3 2bpw (8 GB, full VRAM)」の行はベースラインより桁違いに速いけど、ベースラインの方は32GBモデルをKVキャッシュだけシステムメモリに共有して動かしてるっぽい(たぶん)。 でも、もし8GBモデルで十分な品質が出るなら、共有メモリとか使わなくても動いたんじゃないかな? 今のところ、意味のある比較は「Ollama + GreenBoost shim (baseline)」(2-5 tps) vs 「ExLlamaV3 + GreenBoost cache」(8–20 tps) だと思う。 既存のllamaのCPU/メモリへのオフロードと比較してくれたらすごく助かるんだけど。最初に「レイヤーをCPUにオフロードするのは、CPU RAMにCUDAのコヒーレンスがないから5〜10倍遅くなる」って注釈があるけど、この5〜10倍っていうのが、フルGPU実行と比べてなのか、GreenBoostの手法と比べてなのかがハッキリしない。たぶんGPUとの比較だろうけど、それならパフォーマンスはGreenBoostと同じくらいで、安定性はもっと高いってことになりそう。