見出し画像

4bit量子化版Command R+ (104B版)とゲーム用ノートパソコンで中編小説を評論

 先の記事でVRAMを16GB搭載したマシンで4bit量子化版Command R+ (104B版)を動かして、3.6万文字の小説を批評して頂いたと報告した。

 これ、実はNVIDIA GeForce RTX 3800(16GB)を搭載したノートパソコンだったりする。よくまあ1~2時間で批評を出力できるものだと感心している。
 ただし、実はそこに至るまでは涙なくしては語れない苦労話があったりする。今回はその苦労話を語らせて頂くことにする。


購入理由とハードウェア強化

 僕は既にMicrosoft Surface Goなどを持っており、日頃は何も不自由していない。ただしプレゼンテーションやChatGPTなどを利用する程度ならば十分だけれども、実際にローカル環境で生成AI(LLM)をデモ実現するのには向いていない。会社には若手が多いけれども、実際に指導する場合にも実機があった方が便利だ。いずれはどこかでお客様に説明へ参上する必要に迫られることもあるかもしれない。
 そう思って、財布を文字通り空にして断腸の思いで購入した。(できるだけ中古品を安く…)

  • 17.3インチ画面

  • Core i9-11900H (8コア/16スレッド)

  • 32GBメモリ

  • GeForce RTX 3080 Laptop (16GB)

  • SSD

 ちなみに生成AI(LLM)ではVRAM容量がないと話にならないので、「ともかく販売されているマシンの中でも最大容量」ということでGeForce RTX 3080 (16GB) 搭載マシンを選択した。
 ただし16GBではパラメータ7B版のLLMを実行するのが精一杯だ。70B版LLMなどは量子化(4bit化が主流)してCPUメモリに置いて実行することが多い。その場合は35GB程度が必要になる訳で、32GBメモリでは心もとない。そこで奮発して最大搭載可能な64GBへとメモリ交換した。SSDも早いことに越したことはない(SSDへのメモリスワップ発生時)ので、1TB版SSDへと換装しておいた。
 ちなみに最近ではAppleがCPUとGPUを統合したMチップとやらを採用しており、最新のM3チップで128GB搭載したMacだと、「ざっくり言ってNVIDIA A100の半分くらい」の性能を出せるとウワサされている。共通メモリなのでGPUとしては128GBのモンスター級である。ぜひNVIDIA GB200(これもCPUとGPUを統合したタイプ)の登場を待ちたいところだ。

Command R+ (104B版)への挑戦

 Command R+ (104B版) は208GB程度のVRAMが必要になりそうだから、最新NVIDIA H100 (VRAM/80GB) であっても3枚は必要となる。企業でも多くの技術者が簡単にはアクセスできない超高級ITシステムである。
 それを先のnote記事のように心ある人(神?)が量子化版をhugging faceで公開して下さったので、さっそく試してみた。4bit量子化だったら104Bの約半分… 52GB程度のCPUメモリがあれば動きそうであり、実際にCPUだけで動かすことは可能だった。「ドラゴンボールに登場する孫悟空を紹介してください」というプロンプトを投げたら、懇切丁寧な説明をアッサリと返してくれた。
 しかし1万字の小説批評はダメだった。
 これはメモリに上げて実行するのがLLM(モデル本体)だけでなく、プロンプトも必要であることによる。普通ならば無視できるサイズだけれども、さすがに1万字ともなると相当なメモリを必要とする。
 で、64GBを以てしてもOS使用領域などもあるから、アッサリと異常終了してしまったという訳だ。ちなみに48GBのVRAMを搭載したモンスター級デスクトップPCで試したところ、-ngl 38と-c 30000というパラメータ設定で、何とか3.6万文字の文章データを批評することに成功した。
 そこら辺で「もしかしたらノートパソコンでも行けるんじゃないか?」ということで、本プロジェクトは始まった。

 ただしこれ、思った以上よりも自由時間を溶かす結果となってしまった。

Windows環境は不案内

 最大の理由は、僕がWindows開発環境に不案内だったので、LLama.cppをGPU/CPU併用させることが出来なかった為だ。
 スペック的にはギリギリなので、ひとまずWSL2 (Windows subsystem for Linux) でUbuntu 22.04を使うという案は、視野から外すことにした。
 そーするとWindows環境でLlama.cppをコンパイルする… これが上手くは行かなかった。なんかVisual Studioなども必要になるらしいけれども、そこら辺の構成がさっぱり分からない。とりあえずネットをググってコンパイル完了させるところまでは行ったけれども、どうも気になるメッセージを吐きまくってコンパイル完了するという塩梅だ。

 Lama2の7B版(GGUF)版で「日本で一番高い山は?」と質問すると、QとAが幾つも出て来るあたりが挙動不審だ。半年くらい前にWSL2上のUbuntu 22.04で動かした時はアッサリと数行が返って来て終わったので、「変」としか言いようがない。ともかくCommand R+さえ満足できる動きをしてくれればオッケーなんだけれども、何のエラーメッセージも表示せずに終了してしまう。エラーメッセージさえ表示されれば対応策が検討できるけれども、そのメッセージが表示されないのだから、どうしようもない。
 そんな訳で、Windows環境からLlama.cppをGPU/CPU併用で使用するのは諦めることにした。

Ubuntu 22.04との共存

 で、悪名高いWindows/Ubuntu環境の共存に挑戦することになった。WindowsがアップデートされたらGRUB領域が壊れてUbuntu起動しなくなるとか、あちこちでトラブルに事欠かない。
 これは結局のところ、素直にWIndowsの "ディスク管理" で空き容量を減らして 、そこに素直にUbuntuをインストールするという形に落ち着いた。で、私も大勢と同じく電源オン時にブートローダーが表示されず、勝手にWindowsが起動してしまうというインストール結果になった。

ITシステム管理者お約束の "運用で回避 (Workaound)"

 これは半ば予想していた通りで、ノートパソコンの起動時に起動ディスクを選択するF7キーを利用することにより、無事にUbuntu 22.04を起動できるようになった。
 僕の場合はWindows利用がメインで、Ubuntuを利用する機会は多くない。それであればこんな形であっても、まあ悪くはないと思っている… これ以上、状況が悪くなることは無さそうだし。
 そんな訳で冒頭のように、何とか3.6万字の小説を批評することに成功している。(WSL2は便利だけれども、やはりWindowsがH/W資源を消費するので "ギリギリの勝負" という時には結構つらい)

 それでは今回は、この辺で。では。

P.S.
そういやさすがに3.6万字の日本語文章をベクトル化するのは貧弱GPUをフル活用することになり、ものすごい発熱になりました。外付け空冷装置を装備していても、nvidia-smiコマンドで見ると70度を突破。取り込みが終わったら60度台に落ち着いたので、VRAM容量だけでなくGPU計算能力も重要だと痛感した次第。
(面倒だからとUSB-C電源を使っていたらば加熱し過ぎて、触ることが出来ない程の発熱。慌てて購入時に付属していた大型専用アダプターへ選手交代)

ノートパソコン空冷台(USB端子に接続して大型ファン回転)

ーーーーーー
記事作成:小野谷静 (オノセー)

この記事が気に入ったらサポートをしてみませんか?