写真の管理アプリ用に挿したグラボが RTX 3090 になるまで

写真の管理アプリ(Immich)を自分のサーバーで動かしたくて、サーバー PC を整理しました。そのアプリが顔や写真の中身の検索に機械学習を使うので、ついでに使っていなかった GTX 1070 を挿してみたのが始まりです。

最初からローカル AI 用の PC を組もうとしていたわけでも、3090 を買う予定があったわけでもありません。余っているグラボが使えるなら使おう、くらいだったのに、10月だけで 2080 Ti を持ってきて、さらに3090まで買ってしまった...。

写真の管理アプリ

前提として私は平日は会社員で、PC を触れるのは夜と休日です。家のサーバーで動かすものも、会社に行っている間や寝ている間に動いてくれるとうれしい。写真の管理アプリも、自分のサーバーに入れて使いたくなったものでした。

このときのサーバーは Xeon E3-1225 v3 に DDR3-1333 という、だいぶ古い構成です。そこに GTX 1070(8GB)を挿しました。使っていなかったものを使えるし、写真の検索に機械学習を使うなら、グラボを挿す理由もある。

ところが、挿したら写真の管理だけで終わらず、なんか AI っぽいこともしたくなってきたんですよね。自分の PC で LLM を動かしたり、画像を作ったりできるなら、そっちも触ってみたくなる。

Claude に聞くと、1070では足りないと言われました。Pascal やし。手元にあるものがそのまま使えたらよかったんですが、写真のアプリに使うところから、やりたいことの方が増えてしまった。

サーバーは Linux で、LLM には llama.cpp、画像生成には ComfyUI を使っています。LLM は会話や要約、下書きに使い、画像は SDXL などを夜にまとめて回す形です。会社から帰ってきて、自分が触る時間だけ計算しているのももったいないので、留守の間にも仕事をしてほしい。

とはいえ、この段階ではまだ1070です。動くところから試すにしても、昔のグラボでどこまでできるのかは、実際に回してみることになりました。

2080 Ti を持ってきた

別の場所に置いてあるゲーミング PC に、RTX 2080 Ti が入っていました。それならそっちを持ってくればいいのでは、となって、自転車で引っぱってきました。

写真の管理アプリを入れるつもりでサーバーを整理していた人間が、グラボを取りに自転車を走らせている。もうこのへんでおもろい。新しく買ったものを待っているわけでもなく、自分のゲーミング PC から2080 Tiを持ってくることになるとは。

2080 Ti の VRAM は11GBです。1070の8GBから増えるし、世代も変わるので、これで画像生成も違ってくるだろうと期待していました。使っていない1070を挿しただけのときと比べると、すっかり AI を動かす方に気持ちが向いている。

そういえば、このとき CPU とメモリも Ryzen 7 2700X・DDR4 64GB に入れ替えています。Xeon と DDR3 のままでは、さすがに古すぎたので。

で、2080 Tiを挿して終わりかというと、1070も残しました。2枚挿せたので、2枚挿した。

最初から役割を細かく決めて組んだ構成ではありません。1070もまだあるし、挿せるなら使いたい。8GBと11GBのグラボが両方入ったので、これで色々できそうだな、という感じでした。あとで取り合いに悩むんですが、このときはひとまず2枚とも使ってみたかったんですよね。

130秒から11秒

1070だけの頃にも測っていて、SDXL の1024px・25 stepは1枚130秒でした。しかも8GBだと普通に動かすには足りず、重みを fp16、計算を fp32 にする形でやっと動いていた。

画像を作りたいのに、作るたびに130秒待つ。夜にまとめて回す使い方でも、試しに作って結果を見たいときには待ちます。LLM は遅くても使えていましたが、画像の方はさすがに使い物にならんかった、というのが1070の頃です。

これが2080 Tiだと、同じ1024px・25 stepで11秒になりました。130秒から11秒なので10倍以上。持ってきてよかった! 画像生成は、グラボを替えたらちゃんと速くなったと分かる差でした。

一方、LLM は思っていたほど変わりません。使っているのは Qwen3.6-35B-A3B で、MoE のモデルを Q4_K_M で動かしています。1070だけの頃は生成が20.7 tok/s、読み込みは219 tok/sでした。

2080 Tiを足したあとは、生成が25〜27 tok/s。tok/s は1秒あたりに生成するトークン数なので、数字が大きいほど生成は速くなるんですが、画像の変わり方を見たあとだと、こっちはこれくらいか...となる。

ちなみに CPU もメモリも変わっているので、この前後の数字をグラボだけの性能差として見ることはできません。それでも、自分が使う環境として画像はずいぶん速くなったのに、LLM の生成はあまり伸びない。この違いが気になって、GPU への載せ方を色々試しました。

載せ方と取り合い

35B-A3B のような MoE では、今回の環境だと GPU 自体の速さより、GPU にどれだけ載るかで生成速度が変わっていました。GPU に約8GB載せたときが29 tok/s、約16GBで38.7 tok/s、約18GBで40〜42 tok/sです。

同じモデルでも載せ方でこれだけ違う。この頃は25〜41 tok/sの間を行ったり来たりしていて、2080 Tiを入れたからこの速度、と決まる感じではありませんでした。速かったときのグラボを使っているのに、起動し直すと遅いこともあるので、何が違うのか分かりにくかった。

llama.cpp の自動配置(--fit)は、起動したときに空いている VRAM に合わせて載せ方を決めます。画像生成が VRAM を握ったまま LLM を起動すると、LLM が GPU にほとんど載らず、遅くなっていたんですよね。

同じ2枚が挿さっていても、起動時に使える空きが違えば載せ方も変わる。画像を作る側が使ったあとに、そのまま LLM を起動していたりすると、自分では構成を変えたつもりがなくても速度が変わります。これに気づくまでしばらくかかりました...。

さらに、LLM が両方の GPU に少しずつ載っていると、画像を回した瞬間に LLM が遅くなります。夜にまとめて画像を回している間、同じ時間に頼んだ LLM の仕事も遅れる。グラボは2枚あるのに、両方とも空いているわけではなかった。

そこで GPU の重い仕事は順番待ちの列に入れ、夜に1つずつ回すようにしました。まとめて頼んだものが取り合いをするので、先に始めた仕事を待って、次を動かす形です。

2枚挿せるから挿したところまではよかったんですが、LLM を両方に載せると、画像に渡す側も使われてしまう。速い数字が出る載せ方を試すのはおもろいけど、会社に行っている間や寝ている間も回すなら、毎回ここで取り合いになるのは困りました。

VRAM が足りない

画像が速くなってからは、2080 Tiを回す時間も増えました。画像生成が1日19〜23時間全力で動き、電力の上限に張り付いている。夜にまとめて作るつもりが、ずいぶん働かせるようになった。

当然うるさくなったので、この頃は2080 Tiの電力の上限を200Wに下げています。速くなったら使う時間も増えて、今度は音が気になる。1070で1枚130秒だった頃とは、困るところが変わりました。

その横で1070はあまり活躍していません。使用率は1〜7%で、写真の管理アプリくらいしか使わない。せっかく2枚挿したのに、2080 Tiの方が全力で、1070の方はそうでもないという状態です。

写真のアプリのために挿した1070なので、それに使えていること自体はいいんですが、画像生成や LLM もやりたくなったあとでは、もう少し働いてくれたらと思ってしまう。2枚あるから単純に何でも分担できる、とはいきませんでした。

VRAM も足りなくなってきて、画像を作るだけでなく、LoRA の学習もしたくなりました。ここでは bf16 を使いたかったんですが、2080 Tiは対応していません。画像生成が速く動くようになっても、そのままやりたいこと全部に使えるわけではなかった。

Blender の書き出しにも使いたくなって、グラボに頼みたい仕事がまた増える。最初は使っていない1070を挿しただけなのに、今度は2080 Tiでも足りないところを見始めています。

VRAM 24GB かーーーー。

3090が気になるようになったのは、このあたりです。11GBでも1070から増えて喜んでいたのに、24GBの方を見ている。画像の学習も書き出しもやりたいとなると、欲しくなる理由だけは増えていくんですよね。

3090 を買った

とはいえ、3090は最初に自分で却下しています。中古でも高すぎたので。使いたいのは使いたいけど、写真の管理アプリを入れるところから始まった作業で、その値段のグラボまで買うのかと思うと、さすがに一度止まりました。

別の AI に相談したときには「35B は全部 VRAM に載せないと遅い」と言われて、一瞬その気になりかけたこともあります。ただ、使っている MoE はエキスパートの部分を RAM に逃がせるので、この説明は違いました。

実際に2080 Tiまでの環境で、全部は載せずに動かしていました。GPU に載る量で速度が変わるのは確かでしたが、エキスパートを RAM に逃がした状態でも使えています。LLM のために買うかを考えるなら、使っているモデルと載せ方まで見ておきたいところでした。

それでも LoRA で bf16 を使いたいし、Blender の書き出しにも使いたい。LLM の説明が違っていたからといって、画像の方で欲しくなった理由まで消えるわけではありませんでした。

ほかの候補も考えていて、改造品の RTX 3080 20GB を海外から買う案まで見ていました。ただ、改造品は見た目がダサい。新品の5060 Ti 16GBも値上がりしていて、そっちなら安く済む、とも言いにくい状態でした。

3090 Ti も考えました。VRAM は同じ 24GB で、メモリの帯域は1割くらい上。ただ電力は 450W あって、10年使っている 850W の電源に 2080 Ti と並べるのは厳しい。相場も29〜30万くらいで、見張りの条件にも入れていたんですが、届く値段の出品は出てきませんでした。同じ 24GB なら 3090 でいいか、となりました。

迷っている間にも、メモリの値段は上がっていました。AI のデータセンター向けにメモリが取られていて、DDR5 は去年の前半の3倍くらい、DDR4 も上がっていると言われている。グラボの VRAM も同じメモリなので、このままだとグラボももっと高くなりそうだな、と。待っていても安くはならなさそう、というのもありました。

欲しいグラボを探すにしても、会社に行っている間ずっと出品を見ているわけにはいかない。そこで価格の見張りは、Claude とローカル LLM にさせました。AI を動かすためのグラボが欲しくて、そのグラボ探しを AI にやらせている。

見ていたのはメルカリ、ヤフオク、Yahoo!フリマです。15分ごとに見て、条件に合う出品が出たらスマホに通知するようにしました。毎晩、相場のまとめも届くので、出品があったときだけでなく、その日の値段も追えるようにしています。

画像生成を回して音が気になっていたので、安ければ何でもいいわけでもありません。ブロワー型など、うるさい型を外す条件も足しました。買ってからまた音に悩むのも嫌なので、このへんは探す段階で外しておきたかった。

ヤフオクでは17万と18万で入札して、どちらも越されました。2回ともです。中古の3090って、思ったより人気なんですね...。自分が欲しいと思うものは、ほかの人も欲しい。

結局、フリマで ASUS TUF の3090を215,000円で買いました。10月17日です。約4年使用、グリス交換歴あり、保証なし。値下げの交渉は通りませんでした。

メーカーは好みの ASUS にしました。見た目が気になると言いながら改造品も考えて、入札では越されて、最後に買ったのが好みの ASUS。安いものを探し始めたはずが、欲しいものを買う方に落ち着いている。

気づいたら買ってた、という感じですが、その前にはこれだけ探しているんですよね。24GBかーーーーと思ってから、候補を見たり見張りをさせたりして、買う理由も十分そろってしまった。1070を挿すときには、こんな買い物になるつもりはなかったんですが。

届いてからの確認

届いた3090は上の段に入れて、2080 Tiは下の段にしました。1070はここで外しています。1070と2080 Tiの2枚挿しから、3090と2080 Tiの2枚挿しになりました。

組んだら起動しなくて焦りました。高い中古グラボを買って、取り付けたところで起動しないのは怖い。原因は CPU の置き方でした w グラボ関係なかった。ここに行き着くまでが長かったので、それは別の記事に書きました。起動するまでは落ち着かなかったです。

中古で、保証もないので、受け取りの評価をする前に検品しています。ひとまず動いたところで安心せず、VRAM の読み書きに誤りがないか、帯域が出ているか、型番が合っているかを見ました。

VRAM の読み書きの誤りは0。メモリの帯域は仕様の90%で、型番も箱と一致していました。ここまでは合格です。使いたいものが動くかを試す前に、届いたグラボそのものの状態は見ておきたかった。

ただ、この確認が済んでも、実際に2枚を回してみると別の問題が出てきました。3090だけ動かしたときと、2080 Tiも一緒に動かしたときで、温度がかなり違う。

2枚挿せたから挿した構成のまま、今度は上のグラボが3090になっています。性能の数字を見たいところですが、このまま夜中も回せるのか、先に熱を見ておく必要がありました。

VRAM の熱

3090単体なら、全力でもコアは79℃でした。ところが2枚とも全力にすると、下の2080 Tiの熱を3090が吸ってしまい、コアが89℃まで上がって温度による絞りが入ります。

グラボだけ替えて速くなっても、2枚で使うと熱で絞られてしまう。LLM と画像の取り合いを何とかしたかったのに、両方を回したら今度は熱の方が厳しくなりました。

さらに気になったのが、VRAM の GDDR6X です。普通の監視ツールでは GeForce の VRAM 温度が読めず、コアの温度を見ているだけでは分かりませんでした。別のツールで読んでみると、こっちがもっとやばかった。

3090を300Wにして2枚同時に回したところ、5分12秒で106℃になりました。しかも、そこで落ち着いた温度ではありません。まだ上がっていたので止めています。寝ている間に回すつもりで、この上がり方は怖い。

280Wにしても104℃でした。GDDR6X は110℃くらいで絞りが入るので、上限を下げたらもう安心、という温度でもなかった。コアだけ見ていたら、VRAM がここまで上がっていることは分からないままでした。

対策として、3090の裏に1mmのサーマルパッドとヒートシンクを貼りました。これで280W・2枚同時5分の温度が、104℃から92℃まで下がりました。12℃下がった! 裏に貼っただけでこれだけ違うなら、先に見ておいてよかったです。

ちなみに、底面の吸気ファンは前から付いています。今回の104℃から92℃という変化は、底面のファンを新しく足した結果ではありません。裏にサーマルパッドとヒートシンクを貼った前後の数字です。

300Wで止めたときは5分12秒、貼る前後を比べた280Wの方は2枚同時5分です。どちらも VRAM を見ていますが、条件は分けて残しておきます。106℃まで上がった方を、そのまま対策後の92℃と比べてしまうと違うので。

電力の上限

電源は10年くらい使っている850Wなので、3090も電力の上限は下げたいところでした。熱のこともあるし、上限を下げたときに、実際の仕事がどれくらい遅くなるかを測っています。

画像は SDXL の1024²・30 stepです。1070から2080 Tiに替えたときの比較は25 stepなので、最初の130秒、11秒と、ここの秒数とは条件が違います。ここでは3090の上限を変えた前後を見ています。

上限が350Wのとき、LLM の生成は151.2 tok/s、画像1枚は8.36秒、画像中の電力は332Wでした。300Wにすると、生成は150.9 tok/s(-0.2%)、画像は8.91秒(+7%)、電力は288Wです。280Wでは、生成が149.3 tok/s(-1%)、画像が9.13秒(+9%)、電力が245Wでした。

LLM の生成中、3090は145〜150Wしか使っていませんでした。350Wから上限を下げても、生成に使っている電力はその範囲に収まるので、LLM の速度はほとんど変わりません。上限280Wで149.3 tok/s、350Wのときから-1%でした。

画像の方は280Wにすると9.13秒で、350Wの8.36秒から+9%です。その代わり、画像中の電力は332Wから245Wになっています。私は夜にまとめて回すので、このくらい遅くなるのは気になりませんでした。

今は3090を280Wにして、2080 Tiは昼240W・夜200Wにしています。2080 Tiがうるさくなって200Wに下げた頃から、3090も含めて使う形になったので、両方の上限を決めて動かしています。

GPU の使い分け

35Bを3090と2080 Tiに全部載せれば、151 tok/s出ます。1070だけの頃から考えるとずいぶん速いし、2080 Tiで載せ方を変えていた頃と比べても、ちゃんと伸びました。

ただ、今は2080 Ti(11GB)に LLM を常駐させ、3090(24GB)は画像と動画だけに使っています。この形で LLM の生成は37〜43 tok/sです。せっかく151 tok/s出るのを確かめたあとですが、普段動かす方はこうしました。

LLM が3090にも載っていると、画像を回すたびに LLM を追い出すか、画像を待たせるかになるんですよね。1070と2080 Tiで困っていた取り合いを、3090に替えたあとも繰り返すことになる。

会社にいる間に AI が下書きを作って、夜には画像をまとめて回す。そういう使い方だと、LLM が速いときの数字を毎回出すより、画像を頼んでも両方が動く方が助かります。40 tok/sあれば、会話や要約で待たされる感じもありません。

2080 Tiには LLM の仕事を続けてもらって、画像や動画の方に3090を使う。2枚挿せたから挿したところから始めて、色々な載せ方を試した結果、今はそれぞれに任せる仕事が決まりました。

寝ている間にも回すので、CPU の温度が上がりすぎたら電源を落とす見張りも付けています。VRAM が106℃まで上がったときは自分で止めましたが、自分が見ていない時間にも動かす以上、温度のことは気になります。

ちなみに写真の管理アプリの機械学習は、1070 を外したので 2080 Ti に移しました。始まりの用事は、結局 2080 Ti が引き取っています。

画像の学習と書き出しができるようになったので、3090は買ってよかったです。最初は写真のアプリ用に1070を挿しただけだったんですが。高かったけど。

この記事は、2026年10月に note に書いたものをこちらへ移しました。

ブログのトップへ