2台目の機械学習用PCを買った
先週、2台目の機械学習用PCを買って、今日届いたのでそれについてつらつらと。
2台目を買うまで
1台目
2017年に、機械学習の勉強をしようと思ってPCを買った。スペックとかは以下の通り。
- ミドルタワー、水冷(静か!)
- GeForce GTX 1080 Ti
- メモリ 32GB
- Linux (Ubuntu)
2年くらいほぼ放置→最近はかなり使ってる
とはいえ、最初の2年くらいはほとんど使っていなかった。2019年頃に、さすがに勿体ないと思い、複数人で機械学習の作業が出来るように、業務委託の人にセットアップしてもらった。
その後、同僚達が使い始めて、2021年になると結構使う頻度が高くなってきた。すると、「Aさんが今学習を回しているから」とかで使えないこともちょくちょく出てきたので、2台目を買うことにした。
小さなPCがいい
1台目は、普段は静かだしスペック的にも満足してたんだけど、ミドルタワーなので結構場所を取る。2台目もミドルタワーにすると部屋が狭くなるし電気も食うし、と思って最初はゲーミングノートPCを探した。ただ、ノートだと、やっぱり GPU のスペックが低いのと、その割に値段が高いのが難点。
そんな中、同僚から小型のPCを勧められ、それでも良いかなと思い、結局 Mini-ITX のマシンにした。ただ、小型PCは GPU の選択肢が少なく、多くの会社は GeForce 3060 までだった。いくつかの会社が、3070 のモデルを出していたので、比較検討した結果、ツクモのを購入することにした。
ゲーミングPC【G-GEAR mini】- TSUKUMOおすすめのBTOゲーミングパソコン
スペックは以下の通り。
- Mini-ITX 750W
- GeForce RTX 3070
- メモリ64GB
- SSD 2TB + 2TB
それなりにパワフルで筐体も小さく、個人的には満足。もちろん GeForce RTX 3070 は 3080 の 2/3 くらいの性能だけど、消費電力も 2/3 くらいなのでまぁ良いかなと。スペックの比較は、以下のページを参照。
Where to buy Nvidia RTX 3080 Ti, plus price, specs, release date | Rock Paper Shotgun
買った PC は元々はゲーミング PC なので、Linux のモデルは無かったため、自分でインストールした。1台目をセットアップした2017年以来約4年ぶりにだったので、色々変化があって驚いた。
驚いたこと・気がついたこと
デスクトップなのに Wi-Fi が使える
購入時点でまず驚いたのが、デスクトップなのに Wi-Fi が標準装備。まぁ今となっては自宅で有線 LAN を使っている人なんて少数派だと思うし、当たり前といえば当たり前なんだけど。
PC 本体の後ろに端子があって、そこにアンテナを付けるという感じ。
ブートの仕組みが変わった?UEFI?
パソコンの起動は、昔からある仕組みだと以下のような流れになっている。
BIOS の画面 → OS のブートローダー(GRUB 等)→ OS 起動
今回、Ubuntu のインストール DVD でインストールしたりインストール後に起動している時に、TSUKUMO と Ubuntu のロゴが一緒に出ている画面が出てきて驚いた。
従来の仕組みだと、BIOS が動いている間に TSUKUMO のログが出て、ブートローダー→ OS 起動となった時点で Ubuntu のロゴが出る、という風にしか出来ないと思う。
軽く検索したところ UEFI という仕組みらしい。
GRUB 2 になってた(menu.lst がなくなってた)
今までは、GRUB の設定は /boot/grub/menu.lst
というファイルに記載されていた。一方、今回 Ubuntu をインストール後に GRUB の設定を変えようとしたところ、 menu.lst
がなかった。Ubuntu 20.04 は GRUB 2 だかららしい。
しかし、GRUB 2 が Ubuntu に導入されたのは随分前のようだけど、Ubuntu 18.04 が動いている1台目の機械学習サーバー(元々は 16.04 で、バージョンアップした)には menu.lst
が存在している。謎・・・
GRUB と LVM、GRUB_RECORDFAIL_TIMEOUT
Ubuntu 20.04 を LVM 有りで新規インストールした。特に問題無く終わったが、起動時に GRUB のスクリーンが出て、何もキーを押さないと30秒待たされる。/etc/default/grug
には GRUB_TIMEOUT=0
となっているのになぜだろうと思った。
以下のように grep してみると、 GRUB_RECORDFAIL_TIMEOUT
という変数が関係しそう。
$ grep 30 /etc/grub.d/*
/etc/grub.d/00_header: set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
/etc/grub.d/00_header: set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
GRUB_RECORDFAIL_TIMEOUT
で検索してみると、以下の答えが出た。
boot – ubuntu 20.04 LTS can’t Hide grub menu – Ask Ubuntu
対処方法としては以下のどちらか。
GRUB_RECORDFAIL_TIMEOUT
を0
とか5
に設定しupdate-grub
を実行/boot
を独立したパーティションにして LVM 管理下には置かない
以前のバージョンやはデフォルトのインストールで /boot
だけ別パーティションにしてくれたけど、Ubuntu 20.04 は /boot/efi
だけ別パーティション。LVM を使わない場合はこれでも問題無いけど、LVM を使う場合は /boot
も別パーティションにして欲しい。
ディスクの暗号化を使う場合はもっと面倒そう。
Full_Disk_Encryption_Howto_2019 – Community Help Wiki
その他
ホスト名をつけるのが面倒になってきた
インストール時にホスト名を明示的に設定しないと、OS・ディストリビューションにもよるが
- ランダムな英数字
TaroYamada
など、最初のユーザーの名前(+α)
のようなホスト名がデフォルトで設定される。それは嫌だし、大学時代からの習慣で、1つ1つホスト名を付けていた。
ホスト名を付ける際は、大体テーマに沿って付けていて、以下の通りだった。
- 大学時代(研究室の慣例): 昔の日本の国名
- edo, mikawa, yamato, etc.
- 会社員時代: 使っていたベースのメーカー、機種名
- その後〜現在まで: 日本神話の神の名前
- izanagi, izanami, susanoo, tsukuyomi, amaterasu, ninigi, kushinada
日本神話の神は沢山いるので、名前が枯渇することは当面無いが、以下の問題点がある。
- 名前が長くなることがある
- 「○○のみこと」の場合は「○○」だけにする
- それでも長い場合がある
- 古事記・日本書紀などは大昔に一通り読んだものの、大分忘れているので、Wikipedia とかを色々参照しつつ名前を考えるのが面倒
今回は、正哉吾勝勝速日天忍穗耳尊、あるいは天忍穗耳尊(あめのおしほみみのみこと)を使う事に決めたが、あめのおしほみみでも十分長い。色々悩んだ末、oshihomimi にした。
やっぱり「一番いいのを頼む」と言いたい
今回は小さいマシンにしたので GeForce RTX 3070 を選択したが、スペックとかを見比べているとやっぱり一番いいのも欲しくなる。
あと1〜2年して、1台目の機械学習サーバー(ミドルタワー、1080 Ti のやつ)を退役させたら、次はまたミドルタワーで GeForce の一番良いやつを載せたのを買おうと思う。
最後に
最近は何でもクラウドになっていて、自分で PC を買ったりセットアップしたりって機会が少なくなってるけど、やっぱり新しいマシンが家に届くときの高揚感はクラウドでは味わえない。
自作とかは面倒くさくなったのでもうやらないけど、今後も、BTO マシンを買って自宅 LAN を組んだりってのは、勉強にもやるし続けてこうと思う。