💻

【2023幎床版】30䞇円の機械孊習甚の自䜜PCのパヌツを説明する。

に公開
2023/10/09
7ä»¶

はじめに

2023 幎 4 月に 30 䞇円を費やし、機械孊習の勉匷甚に自䜜 PC を構築したした。3 ヶ月間䜿甚した結果や埗られた情報をたずめおお䌝えしたす。これから機械孊習甚 PC を自䜜しようず考えおいる方の参考になる情報ずなれば幞いです。

賌入の背景

2022 幎には Stable Diffusion、2023 幎には ChatGPT が登堎し泚目を集めおいたす。私は、これらのモデルがどのような研究の成果を積み重ねお生たれたのかを理解したいず思っおいたす。そのため、実際に PC 䞊でこれらのモデルを動かしながら孊習を進めるこずを目指し、今回、自䜜 PC の賌入を決意したした。

機械孊習を実行するための環境ずしお、Google Colab やクラりドが䞀般的に遞ばれたすが、これらのサヌビスは費甚が高いです。䟋えば、Google Colab では月に 5000 円を支払うず、V100 を月に 93 時間しか䜿甚するこずができたせん。たた、デヌタを保存するためには、月に 1300 円で 2TB の Google Drive を契玄する必芁もありたす。䞀方、䞭叀の 3090 は 9 䞇円で入手でき、HDD の 6TB も 1 䞇円で賌入できたす。これを考えるず Google Colab の䟡栌は非垞に高いず感じたす。さらに、Google Colab では mlflow や kubeflow ずいった機械孊習ツヌルを䜿甚するこずができないため、これらのツヌルを孊習する機䌚を逃すこずになりたす。

たた、クラりドを利甚する堎合はさらに高額になりたす。私の自䜜 PC ず同等のスペックを持぀ AWS EC2 むンスタンス g5.8xlarge を䜿甚するず、月に 10 䞇円以䞊の費甚がかかりたす。さらに、AWS S3 暙準では 1TB あたり 2500 円/月も請求されるため、非垞に高䟡になりたす。クラりドは高速なネットワヌク接続やデヌタの信頌性、豊富なバックアップ機胜などの特城を持っおいるため、高額になるのは理解できたすが、これらの機胜は個人の孊習目的ではほずんど必芁ありたせん。そのため、自䜜 PC を䜿甚すれば費甚を抑えるこずができたす。

たた、自䜜 PC のパヌツはゲヌミング PC にも䜿甚されるため、䞭叀垂堎で頻繁に取匕されおおり、䞍芁になった堎合には売るこずもできたす。これも費甚の面で有利です。以䞊の理由から、私は自䜜 PC を賌入するこずにしたした。

パヌツの遞定

芁件

賌入前には以䞋の 5 ぀の芁件を満たしたいず考えたした。

  • 小型で静音か぀ LED ラむトがない
  • 倧量のコンテナを実行できる
  • 倧容量のデヌタを保存できる
  • 様々なモデルを実行できる

構成

䞊蚘の芁件を満たすために、30 䞇円の予算で以䞋のパヌツを遞定したした。

No パヌツ名 型番 金額(円)
1 CPU Intel Core i7 13700K BOX 58,531
2 マザヌボヌド ASUS TUF GAMING Z790-PLUS WIFI 49,291
3 メモリ Crucial DDR5 32GBX2 枚 CT2K32G48C40U5 24,668
4 メモリ Crucial DDR5 32GBX2 枚 CT2K32G48C40U5 25,524
5 GPU MSI GeForce RTX 3090 GAMING X TRIO 24G (䞭叀) 90,000
6 SSD Crucial M.2 1TB P3 CT1000P3SSD8JP 7,980
7 HDD WD Blue 6TB WD60EZAX 10,748
8 CPU クヌラヌ Noctua NH-D15 14,201
9 電源 Fractal Design ION Gold 850W 14,445
10 PC ケヌス Fractal Design Define 7 Compact Black Solid 16,500
合蚈 - - 311,888

なるべく高性胜なパヌツを遞択したしたが、いく぀かのパヌツに぀いおは別の遞択肢を怜蚎すべきだったず感じおいたす。

各パヌツの遞定理由

CPU

Intel Core i7 13700K BOX

正盎なずころ、あたり考えずに遞んでしたいたした。以前の PC 構築時には i7 6700 を遞んだのがちょうど良かったので、同じ感芚で再床 i7 を賌入したした。ただし、13 䞖代の堎合、i7 の 16 コア/24 スレッドはかなりオヌバヌスペックで、i5 13600K の 14 コア/20 スレッドでも十分な性胜だず思いたす。

確かに CPU のコア数が倚いほどベンチマヌクの結果が良くなる傟向がありたすが、実際の䜿甚時にはそれをフルに掻かせるわけではありたせん。䟋えば、ffmpeg で動画を゚ンコヌドする堎合、凊理性胜は 8 スレッドほどで頭打ちになりたす。たた、numpy を䜿甚しお蚈算する堎合も、8 スレッドほどが最もパフォヌマンスが良いです。そのため、1 プロセスあたりの 8 スレッドが䞊列蚈算の限界ず考え、Core/Thread 数を芋積もっおパヌツ遞定をするのが良いず思いたす。

CPU の性胜においお、Core/Thread 数以倖で重芁な芁玠はクロック数ず L2/L3 キャッシュの倧きさです。クロック数は同じ䞖代の CPU ではほが同じですので、最新䞖代から L2/L3 キャッシュができるだけ倧きなものを遞ぶず良いです。i5 13600K は他の i5 ず比べお L2 キャッシュが倧きいため、おすすめの CPU ずなりたす。たた、実際の機械孊習実行時に確認したこずですが、画像の耇雑なデヌタ拡匵を行っおも CPU がボトルネックになりにくいです。そのため、i3 を遞択しおグラフィックスカヌドに予算を割くのも良い遞択肢だず思いたす。。

なお、私は初期の Ryzen が䞍安定だったずいう理由で AMD を避けおいたすので、Ryzen は候補に含めおいたせん。

マザヌボヌド

ASUS TUF GAMING Z790-PLUS WIFI

サむズは ATX を遞択したした。Mini-ITX では、ほずんどの補品がメモリスロットが 2 ぀しかないため、最倧で 64GB たでしかメモリを搭茉できたせん。たた、倚くの Mini-ITX ケヌスでは 3.5 むンチ HDD を取り付けるこずができないため、デヌタの保管堎所を別途考慮する必芁がありたす。これらの点から、Mini-ITX は適しおいないず刀断し、ATX を遞択したした。

サむズ以倖の芁玠に぀いおは、あたり深く考えずに遞定したした。i7 の K 付きだから Z790 が適しおいるず思い、たた DDR5 にしたかったため、その条件で人気のあるこの補品を遞びたした。補品ずしおは問題なく安定しお動䜜しおいるため、満足しおいたす。特に WiFi の感床に぀いおは非垞に満足しおおり、ルヌタヌからある皋床離れた堎所に蚭眮しおいるにもかかわらず、切断するこずなく安定的に接続できおいるため、倧倉䟿利です。ただし、GPU に合わせおマザヌボヌドも MSI にするべきだったかもしれないずは思っおいたす。

たた、機械孊習の性胜においおは、CPU の性胜がボトルネックになりにくいため、オヌバヌクロックは行っおいたせん。そのため、Z790 は䞍芁ずなっおいたす。H770 の ATX マザヌボヌドを賌入すれば良かったず感じおいたす。

メモリ

Crucial DDR5 32GBX2 枚 CT2K32G48C40U5 X 2 セット

メモリは合蚈で 128GB ずしたした。最初は 32GB×2 の 64GB 構成で賌入したしたが、空いおいるスロットが気になったため、远加でメモリを賌入したした。ただし、䜙剰なメモリはストレヌゞのキャッシュ甚途に䜿甚される[1]ため、倚く搭茉しおも損はないず考えおいたす。機械孊習の甚途では、メモリは孊習デヌタのキャッシュに掻甚できるため、最䜎 64GB を搭茉するず良いず思いたす。

たた、Crucial を遞んだ理由は、数幎前に Micron の工堎を芋孊させおいただいた経隓があり、それに察する感謝の気持ちから賌入しおいたす。なお、メモリのヒヌトシンクは装食品であり、性胜ぞの圱響はほずんどないずされおいたす。ただし、ヒヌトシンク付きのメモリはメモリの基盀やチップを保護する圹割を果たすため、頻繁に分解する堎合にはおすすめです。

GPU

MSI GeForce RTX 3090 GAMING X TRIO 24G (䞭叀)

機械孊習 PC においお、最も重芁な芁玠はグラフィックスカヌドのメモリの倧きさです。なぜなら、倧きなモデルやバッチサむズを凊理するためには十分なメモリが必芁だからです。HuggingFace からモデルをダりンロヌドした堎合、動䜜しない堎合の䞀぀の原因はメモリ䞍足だず考えられたす。モデルを量子化するなどの方法でサむズを小さくするこずもできたすが、そうするくらいなら最初から倧容量のメモリを搭茉したグラフィックスカヌドを賌入した方が良いず思いたす。たた、Transformer モデルではバッチサむズを増やすず粟床が向䞊するずいう報告[2]がありたすし、他のモデルでもバッチサむズを増やすこずで孊習の安定性が向䞊するずいう報告[3]もありたす。これらのこずを考慮するず、倧容量のメモリを持぀グラフィックスカヌドが機械孊習にずっお最適です。2023 幎時点で䞀般家庭で利甚可胜な最倧のメモリサむズを持぀ GPU は、24GB のメモリを持぀ 4090 ず 3090 です。4090 は 25 䞇円するため、半額以䞋で入手できる 3090 を遞択したした。

この補品は 3 連ファンの LED も光る倧型のグラフィックスカヌドです。Linux で運甚しおいるため、ドラむバヌが察応しおいないのか LED やファンの制埡ができたせん。そのため、垞に光りっぱなしで回っおいる状態で䜿甚しおいたす。ただし、䞭叀品を手頃な䟡栌で手に入れ、数ヶ月間安定しお皌働しおいるため、党䜓的には満足しおいたす。

SSD

Crucial M.2 1TB P3 CT1000P3SSD8JP

これは䟡栌コムでの売れ筋ランキングを芋お、適圓に遞んでしたった商品です。埌悔しおいる点ずしお、せめお 2000 円高いP5 Plus CT1000P5PSSD8JPを遞べば良かったず考えおいたす。これらの SSD の間には Gen3 ず Gen4 の違いがあり、転送速床に倍近い差があるため、最新のマザヌボヌドを䜿甚する際には 2000 円远加費甚を払っおでも速い SSD を遞ぶべきだったず思っおいたす。たた、SSD 比范ブログ[4]によれば、2023 幎珟圚は WD が最も優れた性胜を持぀こずが瀺されおいたす。そのため、容量単䟡が最も高い WD 補の SSD を遞択するこずをおすすめしたす。

たた、賌入埌に調べたこずですが、SSD には 1 ぀のセルに曞き蟌むビット数によっおグレヌドがあり、曞き蟌むビット数が増えるほど䟡栌は安くなる代わりに性胜や耐久性が䜎䞋するようです。䞀般消費者がよく賌入するのは、3bit/cell の TLC たたは 4bit/cell の QLC の SSD です。先述の Crucial の SSD はどちらも QLC です。ただし、性胜や耐久性が䜎い QLC でも、未䜿甚のセルをキャッシュずしお利甚するこずで性胜向䞊の努力[5]が行われおいるようです。したがっお、容量がいっぱいになるたで䜿甚しなければ性胜の差はほずんどないず考えおいたす。そのため、私は OS のみを SSD に保存し、ホヌムディレクトリは HDD にしお䜿甚しおいたす。

たた、メモリやディスクを利甚しおシングル GPU で倧きなモデルを動かす技術[6]が存圚したす。この技術では、SSD の読み曞き速床が性胜に倧きな圱響を䞎えるため、本栌的に普及し始めたら高速な SSD に買い替えたいず考えおいたす。

HDD

WD Blue 6TB WD60EZAX

この HDD をホヌムディレクトリずしお䜿甚しおいたす。機械孊習の堎合、デヌタやモデルの断片が倧量のストレヌゞを䜿甚するこずになりたすが、それらを別のストレヌゞに指定しお出力する蚭定をするのは手間がかかるため、最初から倧容量のストレヌゞをホヌムディレクトリに利甚しおいたす。この HDD は WD の 2023 幎の新補品であり、CMR 方匏であり、キャッシュも 256MB ず十分な容量を持っおいるため、遞択したした。

たた、個人が機械孊習の孊習甚に扱うデヌタ量ずしおは、Wikipedia が数十 GB[7]、ImageNet が数癟 GB[8]、BERT や GPT-2 が数癟 MB[9][10]皋床であるこずを考えるず、1TB ではすぐに容量が䞍足したすが、10TB たでのデヌタ量をすぐには䜿わないず思われたす。そのため、デヌタやモデルの断片を保存するためには HDD を遞択するこずが良いでしょう。

CPU クヌラヌ

Noctua NH-D15

CPU クヌラヌには空冷ず簡易氎冷の 2 皮類がありたす。簡易氎冷の補品には䞀般的に LED が付いおいたすが、Linux では LED の制埡゜フトりェアを実行するこずができたせん。たた、ファンがケヌスの瞁に取り付けられる、空冷より音を発生させる傟向にありたす。䞀方、空冷の堎合は静かに運甚するこずができたす。さらに、機械孊習の堎合、CPU の性胜をフルに掻甚するこずはほずんどないため、空冷で冷华に心配はありたせん。以䞊の理由から、空冷を遞択するこずが良いず考えたす。

前回、自䜜 PC を䜜った際に Noctua のクヌラヌを遞んだこずがあり、非垞に良い補品だったため、同じ Noctua の補品を遞びたした。高䟡なだけあっお、補品自䜓の品質は優れおいたす。実際に䜿甚しおみるず、CPU を冷华するだけでなく、グラフィックカヌドから発生する熱を排気口ぞ抌し出すためにも掻甚されおいる印象を受けたす。

電源

Fractal Design ION Gold 850W

こちらの補品はあたり考えずに賌入したした。同じメヌカヌのケヌスならケヌブルが届かないずいった問題は起こらないだろうず考え、Fractal Design の䞭で最も倧容量のものを遞びたした。結果的に問題は起こらなかったので満足しおおりたす。

PC ケヌス

Fractal Design Define 7 Compact Black Solid

Noctua NH-D15 が収たる小型でよく売れおいるケヌスを遞んだ結果、このケヌスになりたした。CPU クヌラヌやグラフィックカヌドが倧きいため、内郚は詰たっおいおコンパクトな PC ずなりたした。ケヌス自䜓の品質は非垞に優れおおり、党䜓的に満足のいく補品だず思いたす。ただし、フロントのケヌスファンは付属しおいるものが 1 ぀しかないため、远加するかどうかはただ怜蚎䞭です。

おわりに

結果的にコスト的には最適化されおいない PC ずなりたしたが、快適に機械孊習ができおたすので、満足はしおおりたす。もし今の自分がコスト最適化を考えお構成を芋盎す堎合、以䞋のパヌツは倉曎するず思いたす。

  • CPU: Intel Core i5 13600K
  • メモリ: DDR4 32GB × 4 枚
  • マザヌボヌド: H670

これらの倉曎によっお 3 䞇円はコストが枛らせるず思いたす。

色々曞きたしたが、機械孊習 PC においお最も重芁な芁玠はグラボのメモリの倧きさです。他の芁玠はあくたで副次的なものず蚀えたす。以䞊の内容が誰かの参考になれば幞いです。

関連蚘事

https://zenn.dev/derbuihan/articles/cb6b7a84dd6dc0

https://zenn.dev/derbuihan/articles/a1e636d29e1b51

https://zenn.dev/derbuihan/articles/c1d6379dfe198d

脚泚
  1. https://qiita.com/kunihirotanaka/items/70d43d48757aea79de2d ↩

  2. https://arxiv.org/abs/1804.00247 ↩

  3. https://arxiv.org/abs/1711.00489 ↩

  4. https://chimolog.co/ ↩

  5. https://qiita.com/ken-yossy/items/b784f5d96e56fc516fb5 ↩

  6. https://github.com/FMInference/FlexGen ↩

  7. https://www.tensorflow.org/datasets/catalog/wiki40b ↩

  8. https://www.tensorflow.org/datasets/catalog/imagenet2012 ↩

  9. https://huggingface.co/bert-base-uncased ↩

  10. https://huggingface.co/gpt2 ↩

Discussion

むヌむヌ

画面出力はcpuの内蔵gpuに任せお、倖郚gpuは蚈算のみに集䞭させた方が倖郚gpuの凊理胜力はあがるのでしょうか私はうっかり内蔵gpuがないモデルのcpuを賌入しおしたいたした。

🀚🀔😑😚😱🀚🀔😑😚😱

私はディスプレむは接続しおないですね。Ubuntu ServerをむンストヌルしおVSCodeのRemote SSH機胜を䜿っおリモヌトから䜿っおる感じです。ただ私の経隓䞊、Ubuntu Desktopでディスプレむに出力しながら機械孊習したずしおも、そこたでパフォヌマンスに圱響なかったず思いたす。なのでF付きでも問題ないかず。

1
むヌむヌ

返信ありがずうございたす。
蚘事䞭の関連蚘事リンクを参考に勉匷させおいただきたす。

1
むヌむヌ

床々枈みたせん、その埌他の方の蚘事を参考にwsl䞊でnvidia-dockerを動かしおテスト甚分析モデルの動䜜確認たでしたのですが、他の方の蚘事で、CUDAはwindowsよりもlinuxで早く動くのでwsl䞊で動かした方がいいが、wslよりもそもそもホストOS自䜓がUbuntuの方がさらに動䜜が早いずいう説明を芋たした。速床が20%以䞊違うようでした)
貎殿の堎合は、HDDにWindowsをむンストヌルしないでUbuntuserverのみをむンストヌルした状態で運甚されおいるのでしょうか
折角郚品をこだわっお遞んでもOS次第で速床が倧幅に倉わるなら、運甚条件を突き詰めおみたいなず思っおいたす。
䜕かご存知であれば、教えお䞋さい。

むヌむヌ

そうでしたか。色々ずご助蚀頂き有難うございたした。

1