LoginSignup
6
5

More than 3 years have passed since last update.

ディープラーニング用の自作PCを作ってDockerでjupyterlabとPyTorchを導入するまで

Last updated at Posted at 2020-06-22

自作PCのテーマ

機械学習エンジニア的な仕事をしつつ、趣味でもディープラーニングをいじっていたら自宅にGPUが欲しくなりました。会社のGPUもkaggle用とか研究用なら使わせてもらえるようなのですが、自分個人のコンピュータで計算したいという思いを止められず、コロナで10万円の給付金をもらえることですし(?)、購入することにしました。

今回の自作PCを作るに際して、以下の基準を立てました。

  • 10万円以内
  • GPUのメモリ8GB以上
  • CPU 8スレッド以上
  • ストレージ4TB以上(オープンデータセットをいくつか保存したいため)

また、パーツの選定の際にはこれらの記事を参考にさせていただきました。特に上側2つの記事は構成についても参考にしました、ありがとうございました。
ディープラーニングのための初めての自作PC
ディープラーニング用に自作PCを作る
GPU(グラフィックボード)性能比較表【2020年最新版】

選定パーツ一覧

さて、上記の基準に合わせてパーツ選定をしていったわけですが、結果的に10.5万円くらいになってしまいました。PCケースをデザイン的な部分で妥協できなかったためです。一応、10万円以内に収まるプランも書いておきます。

10万円で収まるパーツ一覧

No. 部品 商品名 価格(購入時、税込) 購入場所
1 GPU MSI GeForce RTX 2060 SUPER VENTUS XS J OC ¥44,978 Amazon
2 CPU AMD Ryzen 3 3100 3.6GHz 4コア / 8スレッド 65W ¥13178 Tsukumo ex.
3 メモリ TEAM DDR4 2666Mhz PC4-21300 8GBx2枚 ¥7,780 Amazon
4 Cドライブ用ストレージ Crucial SSD 内蔵2.5インチ SATA接続 BX500 シリーズ 120GB ¥2,981 Tsukumo ex.
5 Dドライブ用ストレージ Seagate BarraCuda 3.5インチ 6TB 内蔵ハードディスク HDD ¥11,091 Amazon
6 マザーボード GIGABYTE B450M S2H ¥6,578 (1000円割引後) Tsukumo ex.
7 電源ユニット Corsair CX550M 80PLUS ¥6,364 Amazon
8 ケース Versa H18 CA-1J4-00S1WN-00 ¥3,108 Amazon
9 ファン Novonest 120mm PCケースファン 静音タイプ 25mm厚 3ピン1200rpm(3本1セット) ¥1,080 Amazon
10 ファン電源用分岐ケーブル 変換名人 ペリフェラル(大4ピン) → FAN用電源(3ピン)変換4分岐ケーブル ¥494 Amazon
合計 ¥97,632

PCケースにファンが付いていない場合はファンが必要になる。ケースにファンが無い状態だと、ディープラーニングでGPUを回しっぱなしにするとケース内部が熱くなりすぎて、GPUの方で一定温度以上の時に制御されてパフォーマンスが100%出なくなったりしてしまう。

Tsukumo ex.で見た最安値のPCケース。Amazonでも売れ行きは良いみたい。
IMG_3273.jpg

また、このマザーボードは本当に最低限の機能(というか足りないからファン電源用分岐ケーブルを買うのだが)しか持ち合わせておらず、メモリは2枚までで最大32GBまで対応している。大きさもMicro ATXなためGPUは1枚しか乗せられない。もし後でGPUを追加したいと考えているならば、ATXやExtended ATXを購入する必要がある。

今回買ったパーツ一覧

No. 部品 商品名 価格(購入時、税込) 購入場所
1 GPU MSI GeForce RTX 2060 SUPER VENTUS XS J OC ¥44,978 Amazon
2 CPU AMD Ryzen 3 3100 3.6GHz 4コア / 8スレッド 65W ¥13,178 Tsukumo ex.
3 メモリ TEAM DDR4 2666Mhz PC4-21300 8GBx2枚 ¥7,780 Amazon
4 Dドライブ用ストレージ Seagate BarraCuda 3.5インチ 6TB 内蔵ハードディスク HDD ¥11,091 Amazon
5 マザーボード GIGABYTE B450M S2H ¥6,578 (1000円割引後) Tsukumo ex.
6 電源ユニット Corsair CX550M 80PLUS ¥6,364 Amazon
7 ケース LANCOOL ONE Digital White ¥13,808 Tsukumo ex.
8 ファン電源用分岐ケーブル ainexアイネックスCA-864 ファン用電源4分岐ケーブル ¥13,808 Tsukumo ex.
合計 ¥103,777

(目標より4000円オーバーした。。。)
※ SSDは修士の時とある先生にもらったCrucialのSSD(128GB)を使うことにしたため、その分は入れていない。

用意したパーツの一覧写真
IMG_3275.jpg

パーツ選定には3日くらいかけた。自作PCを作った経験がある友人に聞きつつ、ネットやお店や調べて選定した。いつも通りAppleのnote appを使ってメモして比較しました。

マザーボードをCPUと一緒に買うことで、Tsukumo ex.で1000円(税別)の割引をしてくれた。Tsukumo ex.というのは秋葉原のPCパーツショップ。Tsukumoは本店も秋葉原にある。他にもドスパラ、パソコン工房というお店も有名。それらのお店も行った。軽い熱中症になりました。

私は秋葉原のすぐ近くに住んでいるため徒歩or自転車で何回か見に行けたが、秋葉原や新宿のようなPCショップが充実した場所から遠い人はこの記事などを参考にしてもらってネットで買った方が交通費もかからないし何より楽だと思う。(まあ当然、交通費や労力を気にしなければ実店舗に見に行くに越したことはない。)

1. GPU

どうしても8GB欲しい!ということで値段も手頃なところでRadeon RX 5700かGeForce RTX 2060あたりで考えた。Radeonの方が安いが、ドライバの安定性や信頼性を考えてGeForceを選んだ。
IMG_3280.jpg

2. CPU

本当はRyzen 3300Xにしたかったのだが、ネットも店舗も売り切れで、仕方なく3100にした。3300Xの方がクロック数が高く、3.8Hzもある。3100は3.6Hz。ただ3100も4コア8スレッドなため、次点には収まった。
IMG_3281.jpg

3. メモリ

普段メモリ16GBのMacBookProを使っていて、16GBで十分かなと思ったので16GBで揃えた。
IMG_3277.jpg

4. Cドライブ用ストレージ

Cドライブは速度的にSSD一択。HDDの起動スピードには戻れない。ディープラーニングではストレージの読み書きスピードよりも計算スピードの方がボトルネックになるので、システムが乗ればいいやということで128GBで良しとした。

5. Dドライブ用ストレージ

画像などの重いデータセットをいくつか保存するので、値段とのバランスを見て6TBにした。後で追加もできるが最初は6TBあれば十分だろう。

6. マザーボード

AMDのCPUが動作するマザーボード選んだ。下の画像は重視でAMD Ryzenを組むならこれ!マザーボード3選 (1/4)からスクショさせていただいた表。
Screen Shot 2020-06-17 at 23.20.25.png
自分にとってはマルチGPUにできるかどうかが一番の違いになりそう。また、CPUが最初に対応するのはB450で、A320は廉価版という扱いのようだ。GPUはほとんどのマザーボードで使えるらしい。
IMG_3276.jpg

7. 電源ユニット

最大消費電力を計算します。CPUが65W、GPUが175Wで合計240Wなので、他諸々入れてもだいたい300W。で、かなり安全を見て550Wにした。
IMG_3282.jpg

8. ケース

ケースを買うときには、特に対応マザーボードを確認する。だいたいはATX、microATX、Mini-ITXなのか、microATX、Mini-ITXのみなのかである。後者の場合にはATXというマザーボードの規格は使えない。

価格帯は3000円〜30000円くらいと幅広い。マイクロタワーは普通のWindowsデスクトップPCみたいなサイズ。ここの価格帯は分からないが他のサイズより安め。ミニタワーなら3000円〜10000円、ミドルタワーなら3000円〜20000円、フルタワーなら7000円〜30000円みたいな価格レンジ。

組み立て

今回購入したPCケースに全てのパーツを組み立てた。自作PCを組み立てたことがある友人に手伝いに来てもらったにもかかわらず、計7時間くらいかかった。結構疲れる。そしてどのケーブルがどれに接続されるべき、という感覚が友人にはあるようだったが筆者には無かったため、経験があるとかなり楽に自作PCを作れそうだと感じた。

組み立てには当然ながら工具も必要である。と言っても、プラスドライバーさえあれば大抵の場合大丈夫なようだ。今回も例に漏れずプラスドライバー、あとハサミがあればOKだった。

プラスドライバーが短すぎて回すのに苦労することがあったため、長めのプラスドライバーがあるといいかも
IMG_3299.jpg

友人と組み立てている様子
IMG_3287.jpg

フロントパネルを開けた状態
IMG_3295.jpg

PCケースのフロントパネルが開かずにかなり苦労した。15分くらい格闘していたが、ググって出てきたYouTubeの動画Building a full Gaming PC inside the Lian Li LANCOOL ONE R7 3800X RTX 2080 Super - Time Lapseを見て開け方が分かった。説明書的なものがついていないし、オンラインのマニュアルにもフロントパネルの開け方は書いてなかった。あの動画も英語だしググり方が甘い初心者には無理ゲーだったと思う。

Ubuntuを入れてDockerを使う

Ubuntuをインストール

まず、USBメモリにUbuntuを入れる。MacでUbuntu18.04LTSのブートUSBを作成するを参考にした。

nvidia-driverをインストール

Ubuntuインストール後にGIUでのログインロープ地獄にハマったので、ctrl + alt + F3でターミナルに移動する。

どのnvidia driverが必要かをNVIDIAドライバダウンロードで確認。自分の場合はGeForce 2060でLinuxだったためそのように選択すると次のページに移る。LINUX X64 (AMD64/EM64T) DISPLAY DRIVER

どうやらnvidia-driver-440を入れればいいらしい。インストール後に再起動
sudo apt install nvidia-driver-430
reboot
すると、再起動後に無事にUbuntuのGUIホーム画面が出た。

sudo apt updateでエラー

まさかここでエラーが出るとは。
https://ts0818.hatenablog.com/entry/2018/01/08/094444 を参考に
sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock
をすると、
sudo apt update
がすんなり通った。ついでに
sudo apt upgrade
もしておく。

ssh接続

以下の記事を参考にした。
自宅のUbuntuサーバに外からsshでアクセスする

自分の場合はMacからUbuntu(今回作成したコンピュータ)にssh接続する。
Ubuntuの方で
hostname -I
とすると、
192.168.1.5 172.18.0.1 240d:1d:...
のような結果が表示される。この場合であればMacで
ssh username@192.168.1.5
とする。usernameはUbuntuの方で最初に設定したもので、だいたいはあなたのfirst nameとかlast nameにしているだろう。パスワードを求められるので、入力してEnterを押せばssh接続ができる。

Dockerを入れる

DockerでDeep Learningなどの環境をドカドカ構築
Docker(19.03)でgpu有効化してpytorchで訓練するまでやる(Ubuntu18.04) の「pytorchをビルド」
Python3.7.3 と jupyterLab を入れたコンテナの作成
を参考にした。

同じディレクトリにdocker-compose.yml, Dockerfile, jupyter_notebook_config.pyを保存する。各ファイルは以下のように書いた。dockerは初心者なので無駄なコードが結構あると思う。

docker-compose.yml

version: "3"
services:
  jupyter-lab:
    build:
      context: .
    environment:
      - USERNAME
      - JUPYTER_HOME=/mnt/jupyter
    image: jupyter-lab
    volumes:
      - /etc/passwd:/etc/passwd:ro
      - /etc/group:/etc/group:ro
      - /home:/home
      - ./:/mnt/jupyter
    ports:
      - "127.0.0.1:8888:8888"

Dockerfile

FROM pytorch/pytorch

# Install required libraries
RUN conda config --add channels pytorch \
 && conda config --append channels conda-forge \
 && conda update --all --yes --quiet \
 && conda install --yes --quiet \
    ipywidgets \
    jupyterlab \
    matplotlib \
    nodejs \
    opencv \
    pandas \
    scikit-learn \
    seaborn \
    sympy \
 && conda clean --all -f -y

# Install jupyter extensions
RUN jupyter nbextension enable --py --sys-prefix widgetsnbextension \
 && jupyter labextension install @jupyter-widgets/jupyterlab-manager

COPY jupyter_notebook_config.py /root/.jupyter/

WORKDIR /workspace

jupyter_notebook_config.py

c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = 8888
c.NotebookApp.open_browser = False
c.NotebookApp.allow_root = True
c.NotebookApp.password = 'sha1:xxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

sha1:xxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの部分は、ssh-keygenで得られた認証鍵です。そのへんは「ssh-keygen jupyter」とかでググれば出てくると思います。

上記のファイルが保存してあるディレクトリに移動し、以下のコマンドを実行していきます。
$ docker-compose build
$ docker run -d --rm --gpus all -v ~/ddrive/workspace:/workspace --shm-size=16g -p 8888:8888 --name pytorch jupyter-lab jupyter lab

docker-compose buildは実行に結構時間がかかる。

-v ~/xxx:/xxxは、ホストとdocker内でストレージを共有したい時に書く。筆者はworkspaceというディレクトリがあるので同じworkspaceディレクトリをdocker内で作成しworkspace以下を共有するようにした。

Docker上のjupyterlabでGPUの認識を確認

nvidia-smiで無事にGPUを認識していることを確認した。
Screen Shot 2020-06-22 at 18.43.07.png

75℃まで上がった。ファンはぶんぶん回っているのだが。。
IMG_3304.jpg
上記のソフトはapt install psensorとかでインストールできる。

Dockerを使わない(Pyenvを使った)セットアップ

cudaのインストール

nvidiaのインストールで失敗して再インストールを余儀なくされた。BIOSから入ってUbuntuをインストールし直した後、Ubuntu 18.04へのCUDAインストール方法の通りにやったらうまくいった。

D Driveをマウント

マウントはLinuxでのマウントに必要なコマンドを参考にした。

Google Chromeを入れる

ここは好み。

Pyenv、anaconda、pipで機械学習の実行環境を作る

タイトルの通りで、これらの単語でいい感じにググればやり方は出てきます。

まとめ

10.4万円くらいで自作PCを作れた。PCショップで既存PCのスペックと値段をいくつか見た感じ、既製品を買うより数万円以上安く済んでいるはずである。パーツ選定から購入、組み立てまで短く見積もって1週間は見た方がいい。

また、組み立ては初心者には難しいと感じた。経験のある友人に聞いたり手伝ったりしてもらうか、ググりまくって自己責任で頑張るかになる。筆者の場合はパーツ選定から自作PCを組み立てたことがある友人に聞いていたので比較的スムーズに進められた。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5