駄文。

プログラマーの日常でつまずいたこと・気づいたことなどの記録です

Threadripper Proでサーバを作ってみた

ディープラーニングの評価でメモリ、GPUの要求が厳しくなってきてついに、ワークステーションクラスのマシンを構築しました。

最近流行りのChatGPTに始まるLLM(Large Language Model)は本当にリソースに優しくない。 流石に自宅でChatGPTレベルのものは稼働できないけど、OSSで出ているChatGPTもどきはなんとか色々工夫すれば動くことが 見えてきた。

とはいえ、vramは24Gクラスはないとまともなスピードで動かない。ではどのくらいのGPUが必要かとというと、RTX 3090 / 4090クラスが必要なんだよね。いわゆるコンシューマ機の最上位機種。 こだわらなければ、マイニングのお下がりが今なら格安で手に入るので RTX3090はおすすめかも。

RAMもそれなりに必要なので、最近はPCだと上限が128Gですが、ワークステーションクラスであれば PC用の安価なunbufferedなUDIMMを使っても256Gまで実装できるし、 まぁないけど、RDIMMを使えば上限2Tまで実装できるらしい。

ということで中古でいいマザー(ASUS PRO WS WRX80E-SAGE WIFI)見つけたので組み立ててみたらいきなり動かない。

マザーボードのQ-Codeの起動処理診断コードはなんと 00。マニュアル見ると示す意味は undefined だと。 なお、診断用のLEDはメモリチェックが光っている状況。

うーん、とりあえずメモリ1枚挿しで確認してみる... 状況変わらず ググる... どうやら 00は実際に世の中ではみられる現象らしい。どうもCPUの認識前で発生しているらしい。

そういえば、今回のCPUは 5955wxで3000番台の互換の後継機種CPU。 もしかすると、マザーボードは意外に古いのかも(30x5wxが出てた当時にリリースされたものか?)

bingo!

HP上のボード紹介は 59xxもサポートと書いているがBIOSの新しいもの(ver1003@2022/3月版)でサポートになっている。 当然、マザーボードBIOSは古い(マザーの発表時期のもの = ver 0211 @ 2020/12月版、当然2022年に発売された5000番台のCPUはサポートされないのだ)ので動かないわけだ。

なんか、以前 5950xでPC組んだ時も同じ話があったなぁ。あの時はショップが親切で5900番台CPUを 使用する時はBIOSアップデートしてね(このボードはCPUなしでBIOS更新もできるよとも書いてて)安心して購入していたんだけどね。

流石に中古で買うマザーボードにそこまで期待しちゃダメだね。

ということで早速BIOSアップデートについてASUSのHPで調べる。 あれ、もしかしてこのマザーボード CPUなしでBIOS更新できないの?

やばい、詰んだかも。

こんな時はサポートに電話。ASUSに電話すると代理店で聞いてとあっさりした応対。 で代理店に電話したら、やっぱりないという話。

やっぱり詰んだ。

マザーを買うか、CPUを買うか。どうしようと無駄に悩んでいたら先ほどの代理店から 折り返しの電話があり、あの後もう少し調べてくれたようでマニュアルにはないが、 CPUなしでBIOS更新できる BIOS Flashback機能が搭載されているとのことで そちらで更新可能ということを教えてもらった。

神様はいた。

ということで、無事BIOSアップデートして今、動くワークステーションが出来上がった。

いやぁ、ヒヤヒヤした。

あ、実はラックマウント用のレールスライドは型番間違って書い直しになったのは ちょっと秘密。

同じ4Uのケースなのに必要なレールスライドが違うって、気が付かないよねw

--

本当にBIOS Flashback機能って隠しだったのか?という疑問が頭をよぎり(だって堂々とバックパネルにボタンがあるんだから)、 もう少し、HPやマニュアル見返してみた。

いやぁ、まいったHPに堂々と書いてますね。目玉機能の一つにもなっている(かなり後ろに書いてますが、CPUメモリなしで更新可能ともしっかり書いてましたw) マニュアルにもしっかり書いてました。(BIOS更新の章ではなく、独自に前に説明が書いてありましたw) BIOSマニュアルって出ているのに、そっちには記載なし。

うーん、機能はありがたいが、もう少しマニュアルは丁寧にあって欲しかった。

結果、ちゃんと書いてありました。しっかり調べましょう>自分。

VisualStudio CodeでArduino

最近、Arduinoでプログラムをすることになり久々にArduino IDEでプログラム...と思っていましたが、そういえばウェブでVS CodeArduinoが使える記事があったなということで試してみました。

基本的に Arduino拡張機能をインストールする & Arduino IDEをインストールしておくの2つで使えました。 なんとなく Arduino IDEなしでも使えそうな気がしましたが、すでにインストール済みだったのと、お試しだったのでそこまで探らなかったのでそちらの方はもし次の機会があったらということで。

あと、このような拡張機能を使う場合、2023年3月くらいから有効になった profile機能を使用して個別の環境として拡張環境や設定を分離することができるので何でもかんでも一つの開発環境でごちゃっとするのが嫌な人にはおすすめです。 私も普段の環境とArduinoの開発環境は分離したいので Profileを使ってみましたが非常に有用でしたので是非使ってみてください。

使用感としてはなんとなく、設定周りはArduino IDEの方がやりやすい感じがありますが、基本的な部分は 基本的には下部のステータスバーの設定項目で設定します(ボード設定、ポート設定、ビルド対象のプロジェクトの選択など)。 ビルド(verify)、イメージの転送(import)は右上のコマンドボタンで実行できます。

また他のメニューでやるような操作はわかりづらかったのですが、VS Codeのコマンドパレットからできるのでライブラリの登録やボードの登録などはこちらからやれば大丈夫。

ちょっと慣れるのに時間は必要な気がしますが、エディタの操作性についてはArduinoIDEと比べてダンチでよいので、私はこれからはこっちで行こうかな。

RWKVその2

さて昨日は GPT系のOSSがすごいという紹介をしたのだが、その中で今日は自分の中で一番ホットなRWKVについて書いてみる。

RWKVは、ChatGPTが実現している方式のTransformerだけでなくRNNを組み合わせて 使用メモリを大幅に削減したプラットフォームで、実際 GPUのメモリ3Gでも動作が可能になっている(ただし、速度はそれなり と思われる。実際に挙動を確認まではしていないので..)

私自身は RTX A5000(VRAM 24G) x2の環境で動作確認しました。

RWKV自体は使用する使用する精度(fp32, fp16, fp16i8など)と、オンメモリ展開するレイヤ数などを細かく指定して精度・速度と 引き換えに使用メモリを削減する手段を提供しているため、少ないVRAM環境のGPUでの動作を実現している。

私自身は fp16を指定し、2枚のGPUにレイヤを分散させることでオンメモリ実行できたため一応理想の速度での動作を確認できた と思うが、この条件下でパラメタ14Bのモデルでの動作でもChatGPTのサービスのレスポンスを超える速さで応答があったのは びっくりであった。

実際他のOSSではここまで反応性の良いものはなかった。

しかもRWKV自体、日本語のサポートについても取り組んでいるらしくChatインターフェイス向けのパッケージであるChatRWKV でも日本語のUIや日本語に強化したモデルの提供が行われている点も心強い。

ただ、やっぱりパラメタ数ではChatGPTに比べると桁が1つ違う分やりとりでは少し物足りない点もあるが、OSSでfine tuning等も やりやすい点など今後の利用については広がりがあり、今後も注目していこうと思う。

ChatGPTとかRWKVとか

とりあえず、ブログ始めるにあたって何から書こうかとおもっていましたが まずは旬なChatGPT、GPT-4からにしましょう。

いやぁ、この手のAIは学生時代にエライザ人工無能って言っていたころから自分の中では実現性はかなり疑問符でした。 と思っていたのに、来ちゃいましたね。びっくりしました。

マジでちゃんとした(まぁ、基本的な仕組み考えると信頼性についてはこれからの課題でしょうけど)回答返すし、なんだったらそこらへんの人より賢いらしい。 ただ、動かすためのリソースも尋常じゃなく(昔でいうスパコンクラス並み)が必要だから、まぁ自分としては利用者であり開発に使うものじゃないよねって雰囲気もバシバシ感じて距離感もあったのだ。

と思っていたのに、半年?一年もしないうちに動いちゃうんだよパソコンで。びっくり。 PCのリソースレベルで動くOSS実装が出てきちゃった。

色々もう出てきていて乱立していますが、試したのは以下のもの。

まぁ流石に知識ベースの指標であるパラメタ数が1750億個(175B)とかで、次世代のgpt-4になるとさらに100兆個とほぼ1000倍になっていてもうどれだけすごいかわからんくらい。

で、今出てきているOSSは知識ベースは最大で30BのものがほとんどでchatGPTの1/5くらい。

ただ、会話くらいなら成立するくらいに利用できるのがびっくり。

今、個人的には RWKVが注目中でこれだと RTX3090があればほぼ実用的なスピードで応答を返します。なんだったらchatGPTよりも速いくらい(でも内容の質はChatGPTがかなり勝るが)

とここまで書いて、ChatGPTに要約してもらったw

ブログを始めるにあたり、最新のAIであるChatGPTやGPT-4について触れることに決めた。昔から人工無能のエライザに疑問を持っていたが、最新のAIは信頼性も高く、賢いと言われている。ただし、リソースが必要であり、個人が開発に使うものではないと感じていた。しかし、最近はRWKVやGPT4ALL、vicunaなどのOSSが登場し、RTX3090を使用すれば実用的なスピードで応答できるようになってきている。

実にこの記事の中身のなさが端的に現れてw

ただ、ちょっとニュアンスが違うところ(RTX3090を使用すれば実用的なスピードで応答できるようはRWKVにかかっているのでここも含めて欲しかった)もあるのでおまかせにはまだできないな。

さらに研究者ならどう書くか、という観点でchatGPTに書きなおしてもらった。

ブログを始めるにあたり、最初は何を書こうか迷っていましたが、まずはChatGPTやGPT-4の最新情報について紹介しようと思います。

私は学生時代に「エライザ」という人工無能を知って以来、この手のAIの実現可能性について疑問を持っていました。しかし、最近ではChatGPTやGPT-4など、信頼性の高い回答を返すAIが登場しました。ただし、これらのAIを動かすためにはスパコンクラスのリソースが必要であり、開発者や専門家以外には利用が難しいという雰囲気もありました。

しかしながら、最近ではRWKV、GPT4ALL、vicunaなどのオープンソース実装が登場し、個人でも利用が可能になってきました。これらの実装は、パラメータ数が1750億個(175B)を超え、次世代のGPT-4になると100兆個以上になるなど、非常に高度な知識ベースを持っています。

これらの実装を試してみると、会話などの一般的なタスクにおいても十分な性能を発揮することがわかりました。私は現在、RWKVが特に注目されており、RTX3090があれば非常に高速に応答を返すことができます。ChatGPTよりもさらに速い場合もあります。

やっぱり、私の文章が頭が悪い感じになっていることもわかって悲しいw