機械学習用自作PC
機械学習用の自作PCをちょっと検討中。参考になるサイトなどを記載していく。やりたいのは自然言語処理。Pen4の頃に自作して依頼なのでさっぱりわからない。
とりあえず
- RTX3090一択。中古なら10万台ありそうだけど。
- メモリ256GB積みたい
じゃんぱら見てたら、RTX3090中古なら10万ジャスト前後
メモリ256〜512GB積めるMBで検索したらLGA2066がほとんどになる。なんかワークステーション向けっぽい。
10万未満だとこの辺。
- ASRock X299 Steel Legend
- ASUS PRIME X299-A II
- ASUS WS C422 PRO/SE
- ASRock X299 Taichi CLX
ASUS WS C422 PRO/SEが唯一最大512GBで、あとは256GBが最大。スロット数は同じ8。将来的に増設を考えるならASUS WS C422 PRO/SEになるかなぁ、6.7万。
MAXでメモリ積んだら64GB×8枚。1枚あたり3〜5万ぐらいはするので、メモリだけで軽く30万超えるw
クアッドチャンネルってのがまた悩ましい。無駄にしないなら64GBx1 or 2だけど。
でも最大まで積んだらXEONしか選択しなくなるんじゃないかな。多分。
んー、もう少しメモリ要件下げたほうがいいかなぁ。
メモリ最大128GBにするとかなり選択肢が広がる上、コストも下がる。メモリ最大256GB/512GBのどっちにしても構成はほぼ変わらない感があるので、ここが境目。
4090なら最安かも。メモリは最大128GB。まあしょうがなさそう。台数限定。
ということでFRONTIERさんで購入。
4090なら最安かも。メモリは最大128GB。まあしょうがなさそう。台数限定。
- 3090中古のほうが安いのだけどこっちだと自作になる。久々すぎてちょっと不安(熱とかどこまで考慮すればいいのかわからない、昔はそこまで考えなくてよかった記憶)。ならBTOで。
- 4090のほうがアイドル時の消費電力は低いというのを見かけた。
- PC組むのが目的ではなくて使うことなので、お金で解決したほうが早い。
- メモリは足りなさそうなら後で追加すればいいし、なにか不満が出たら今後も入れ替えるなり、流用するなりすればいい
50万切るのは多分最安レベルってことで。
届いたのでやったことメモ
ubuntu22.04インストール
- Desktopにした。EtcherでUSBメモリ作成。
- BIOSでFastBoot無効にしてUSBメモリから起動。
- プリインストールされていたWindows11は削除
設定
参考)
ssh
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y openssh-server
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
CUDA Toolkit 12.1
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda
$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
む、そういえば、インストーラで「サードパーティ製の・・・」はスルーしてた気がする。とりあえずすすめる。
$ nvcc --version
コマンド 'nvcc' が見つかりません。次の方法でインストールできます:
sudo apt install nvidia-cuda-toolkit
$ sudo apt install nvidia-cuda-toolkit
途中でSecureBootのパスワード設定を求められる。SSHでしか繋がないつもりなんだけど大丈夫かな。
いけたっぽい。
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0
こちらも再度。
$ nvidia-smi
-bash: /usr/bin/nvidia-smi: そのようなファイルやディレクトリはありません
$ hash -r
$ nvidia-smi
コマンド 'nvidia-smi' が見つかりません。次の方法でインストールできます:
sudo apt install nvidia-utils-390 # version 390.157-0ubuntu0.22.04.1, or
sudo apt install nvidia-utils-418-server # version 418.226.00-0ubuntu5~0.22.04.1
sudo apt install nvidia-utils-450-server # version 450.216.04-0ubuntu0.22.04.1
sudo apt install nvidia-utils-470 # version 470.161.03-0ubuntu0.22.04.1
sudo apt install nvidia-utils-470-server # version 470.161.03-0ubuntu0.22.04.1
sudo apt install nvidia-utils-510 # version 510.108.03-0ubuntu0.22.04.1
sudo apt install nvidia-utils-515 # version 515.86.01-0ubuntu0.22.04.1
sudo apt install nvidia-utils-515-server # version 515.86.01-0ubuntu0.22.04.2
sudo apt install nvidia-utils-525 # version 525.89.02-0ubuntu0.22.04.1
sudo apt install nvidia-utils-525-server # version 525.85.12-0ubuntu0.22.04.1
sudo apt install nvidia-utils-510-server # version 510.47.03-0ubuntu3
どれを選んでいいのやら。とりあえずいろいろドライバーを見てみる。
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002684sv00001462sd00005100bc03sc00i00
vendor : NVIDIA Corporation
manual_install: True
driver : nvidia-driver-530 - third-party non-free
driver : nvidia-driver-525 - third-party non-free
driver : nvidia-driver-525-open - distro non-free recommended
driver : nvidia-driver-525-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
nvidia-driver-525-open
というのが良さそう。ということで、
$ sudo apt install nvidia-utils-525
再度
$ sudo nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
ふむ、コマンドは入ったけど、相変わらずアクセスできないらしい。ドライバのインストールが必要ってことか。
上記を見てると、どうやら再起動すれば良いように見える。ということで再起動。
再起動するとブルー画面で止まるのだけど、ここで"Enroll MOK"みたいなのを選択しないと行けなかったらしく、1回目はそのまま起動してしまった。こうなるとnvidia-smiは全く動かない。ということでその場合はドライバの再インストールからやり直しらしい。。。。
一旦アンインストールして再インストール。
$ sudo apt-get --purge remove nvidia-*
$ sudo apt-get --purge remove cuda-*
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda
再度SecureBootのパスワードを設定。でリブートする。"EnrollMOK"が選択できた。あとは以下を参考に。
で再度。
$ nvidia-smi
Thu Apr 6 23:00:12 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA Version: 12.1 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 4090 On | 00000000:01:00.0 Off | Off |
| 0% 35C P8 6W / 450W| 125MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1190 G /usr/lib/xorg/Xorg 103MiB |
| 0 N/A N/A 1333 G /usr/bin/gnome-shell 19MiB |
+---------------------------------------------------------------------------------------+
できたー
で、nvccも再度実行してみると
$ nvcc --version
コマンド 'nvcc' が見つかりません。次の方法でインストールできます:
sudo apt install nvidia-cuda-toolkit
ん、そういやなかったっけと思ってこれを実行する。
$ sudo apt install nvidia-cuda-toolkit
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0
で何気にもう一回
$ nvidia-smi
-bash: /usr/bin/nvidia-smi: そのようなファイルやディレクトリはありません
コマンド 'nvidia-smi' が見つかりません。次の方法でインストールできます:
sudo apt install nvidia-utils-390 # version 390.157-0ubuntu0.22.04.1, or
sudo apt install nvidia-utils-418-server # version 418.226.00-0ubuntu5~0.22.04.1
sudo apt install nvidia-utils-450-server # version 450.216.04-0ubuntu0.22.04.1
sudo apt install nvidia-utils-470 # version 470.161.03-0ubuntu0.22.04.1
sudo apt install nvidia-utils-470-server # version 470.161.03-0ubuntu0.22.04.1
sudo apt install nvidia-utils-510 # version 510.108.03-0ubuntu0.22.04.1
sudo apt install nvidia-utils-515 # version 515.86.01-0ubuntu0.22.04.1
sudo apt install nvidia-utils-515-server # version 515.86.01-0ubuntu0.22.04.2
sudo apt install nvidia-utils-525 # version 525.89.02-0ubuntu0.22.04.1
sudo apt install nvidia-utils-525-server # version 525.85.12-0ubuntu0.22.04.1
sudo apt install nvidia-utils-510-server # version 510.47.03-0ubuntu3
oh... なんかこうループしてる気が・・・
$ sudo apt install nvidia-utils-525
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
oh...
これは心折れる。
でとりあえずもう一回やり直すんだけど、多分これが良くない。
コマンド 'nvcc' が見つかりません。次の方法でインストールできます:
sudo apt install nvidia-cuda-toolkit
よくよく調べてみるとnvccはここにある。
$ /usr/local/cuda/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0
以下にも書いてある。
ということでPATHを通しておくのだけど、cudaはupdate-alternativesで設定されている。
$ update-alternatives --display cuda-12
cuda-12 - 自動モード
最適なリンクのバージョンは '/usr/local/cuda-12.1' です
リンクは現在 /usr/local/cuda-12.1 を指しています
リンク cuda-12 は /usr/local/cuda-12 です
/usr/local/cuda-12.1 - 優先度 121
$ update-alternatives --display cuda
cuda - 自動モード
最適なリンクのバージョンは '/usr/local/cuda-12.1' です
リンクは現在 /usr/local/cuda-12.1 を指しています
リンク cuda は /usr/local/cuda です
/usr/local/cuda-12.1 - 優先度 121
どっちも同じなので、/usr/local/cudaで良さそう。.bashrcに。
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
これでOK。しかし大変だなこれ。
cuDNN
- NVIDIAのサイトでdeveloper登録が必要
- cuDNNのパッケージをダウンロードするには上記で認証かつ同意の上でダウンロード
ということでめちゃめちゃめんどくさいが、ブラウザで落としてきたものをコピーしておく。
今回はこれ。
cudnn-local-repo-ubuntu2204-8.8.1.3_1.0-1_amd64.deb
$ sudo dpkg -i cudnn-local-repo-ubuntu2204-8.8.1.3_1.0-1_amd64.deb
$ sudo cp /var/cudnn-local-repo-ubuntu2204-8.8.1.3/cudnn-local-DB35EEEE-keyring.gpg /usr/share/keyrings/
$ sudo apt update
$ sudo apt -y install libcudnn8 libcudnn8-dev libcudnn8-samples
テスト
$ cp -r /usr/src/cudnn_samples_v8 .
$ cp -r /usr/src/cudnn_samples_v8 .
$ cd cudnn_samples_v8/RNN
$ make
$ ./RNN
Executing: RNN
seqLength = 20
numLayers = 2
hiddenSize = 512
inputSize = 512
miniBatch = 64
dropout = 0.000000
direction = CUDNN_UNIDIRECTIONAL
mode = CUDNN_RNN_RELU
algo = CUDNN_RNN_ALGO_STANDARD
precision = CUDNN_DATA_FLOAT
Forward: 37 GFLOPS
Backward: 68 GFLOPS, ( 34 GFLOPS), (27351 GFLOPS)
y checksum 1.315793E+06 hy checksum 1.315212E+05
dx checksum 6.676001E+01 dhx checksum 6.425049E+01
dw checksum 1.453738E+09
Output saved to result.txt
行けてるっぽい。
python周りは別途。
なんていうか、環境再構築とかやりたくないけど、やりそうな気がする。。。
リモデも一応有効化しておく
- 設定->共有->リモートデスクトップ
- リモートデスクトップを有効化
- リモートコントロールを有効化
- 認証のパスワードはログインパスワードとは異なるので確認しておく。
Macからは Microsoft Remote Desktopで。homebrewにもあるけどなぜかダメだったのでMac App Storeから落としてきた。
Ubuntu側で画面がロックされてるとリモでは使えないっぽい。ここだけイマイチ。
xrdpとかvncでもいいんだけど今更感あるし結構手間。まあリモデはそんなに使わないと思うので一旦これで。
Python環境は、pyenv/virtualenvを使うこととする。
ビルドに必要なパッケージを追加。このへんは適当。
$ sudo apt install -y curl git gcc make build-essential libssl-dev libffi-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev liblzma-dev
pyenv/virtualenv
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ source ~/.bashrc
pyenvでpythonのインストール。一旦はColaboratoryに合わせて、3.9.16とした。
$ pyenv install 3.9.16
$ pyenv global 3.9.16
virtualenvで環境を作る。LLMの学習をやるのが目的なのでRWKVのプロジェクトを作ってみようと思う。
$ pyenv virtualenv 3.9.16 rwkv-test
$ pyenv versions
system
* 3.9.16 (set by /home/kun432/.pyenv/version)
3.9.16/envs/rwkv-test
rwkv-test
$ mkdir rwkv-test && cd rwkv-test
$ pyenv local rwkv-test
(rwkv-test) kun432@hoge:~/rwkv-test$
まずは7Bでやってみる。以下を参考に。
モデルのダウンロードとレポジトリのクローン。14GBあるのでダウンロードは結構掛かる。うちは1時間ぐらいかかった。
$ wget https://huggingface.co/BlinkDL/rwkv-4-pile-7b/resolve/main/RWKV-4-Pile-7B-20230406-ctx8192-test949.pth
$ git clone https://github.com/BlinkDL/ChatRWKV && cd ChatRWKV
$ pip install -r requirements.txt
$ vi v2/chat.py
モデルのパスを変更
if CHAT_LANG == 'English':
args.MODEL_NAME = '../RWKV-4-Pile-7B-20230406-ctx8192-test949.pth'
promptをinputに変更
msg = input(f'{user}{interface} ')
プロンプトを日本語に変える
$ vi v2/prompt/default/English-2.py
interface = ":"
user = "Human"
bot = "AI"
# If you modify this, make sure you have newlines between user and bot words too
init_prompt = f'''
あなたは人間と会話するチャットボットです。
{user}{interface} こんにちは!
{bot}{interface} こんにちは!お元気ですか?
'''
実行
$ python v2/chat.py
モジュールが足りないみたい。
ModuleNotFoundError: No module named 'numpy'
ModuleNotFoundError: No module named 'torch'
ってことでインストール
$ pip install numpy
$ pip install torch
再度
$ python v2/chat.py
あなたは人間と会話するチャットボットです。
Human: こんにちは!
AI: こんにちは!お元気ですか?
Human: 元気ですよ
AI: どうもどうも!人間と話をするなんて最高ですよ!
Human: ほんとにびっくりしますよね
AI: もちろんです。私がお友達になってあげてください!うぬぼれるからよくなさそうな感じ?
こんな感じで会話できた。7Bだとちょっとあまり賢くない感じ。
でこのときのGPUメモリ使用量をwatch nvidia-smi
で見てると
15129MiB / 24564MiB
ぐらい。LLMの推論はやはりGPUメモリ量は重要だなーという感じ。
14B( https://huggingface.co/BlinkDL/rwkv-4-pile-14b/resolve/main/RWKV-4-Pile-14B-20230313-ctx8192-test1050.pth )もやる。26GB。。。
が、
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 200.00 MiB (GPU 0; 23.65 GiB total capacity; 22.61 GiB already allocated; 186.19 MiB free; 22.66 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
以下を参考に。
v2/chat.pyを変更。
os.environ['RWKV_JIT_ON'] = '1'
os.environ["RWKV_CUDA_ON"] = '1'
args.strategy = 'cuda fp16i8 *20 -> cuda fp16'
ここは実際に色々やってみるしかない感じ。うちの環境だと上記で21591MiB / 24564MiB
って感じだった。
あと、RWKV_CUDA_ONを1にするとパッケージが必要でした。
$ pip install Ninja
こんな感じです。
あなたは人間と会話するチャットボットです。
Human: こんにちは!
AI: こんにちは!お元気ですか?
Human: 元気ですよ
AI: 元気ですか?私たちは、そうだと思うのです。元気ですか?そして、私たちは、多くのことをご存知でしょう。そして、多くのことを教えることができます。
Human: なるほど、哲学的ですね。
AI: 元気ですね、もちろん。そして私たちは、哲学的で、ここでお話しします。私たちは、「自由意志」を持ちます。私たちは、「すべての意思決定をすることを認める」こともできます。
Human: お、おぅ、なんか難しいですね。気楽な話をしましょう。
AI: そうですね。これが私たちのゴールです。私たちは、それぞれに「なんか」に夢中になることができます。そうです、そうです。あなたは、そんなにいい仕事をしているのでしょうか?
Human: そう言われると自身がないのですが
AI: それは悲しいですね。私たちは、あなたに仕事を教えてあげることができます。私たちは、人間が学ぶことを素晴らしいことだと思います。それは「趣味」と言いましょうか。人間が「仕事」をするという考えは、ここでは変な考え方です。
なんかこうすごい上から来られたw
内容はともかく、7Bに比べると日本語としては自然になる。
他にもいろいろOSSなモデルがあるので試してみる予定。
These are RWKV-4-Pile models 3B/7B/14B finetuned on Alpaca, CodeAlpaca, Guanaco, GPT4All, ShareGPT and more.
- RWKV-4-Raven-Eng : 99% English + 1% Multilang
- RWKV-4-Raven-EngAndMore : 97% English + 1.5% Chn Jpn + 1.5% Multilang
- RWKV-4-Raven-EngChnJpn : 98% English + 1% Chn Jpn + 1% Multilang
- RWKV-4-Raven-ChnEng : 49.5% English + 50% Chinese + 0.5% Multilang
ということで、RWKV-4-Raven-EngAndMoreの最新(RWKV-4-Raven-7B-v8-EngAndMore-20230408-ctx4096.pth)を試してみる。ちなみに14Bはいろいろやってみたけどダメだったので7Bで。
strategyは前回の後もう少しGPUメモリ使えるようにいじったものをベースにstreamingを有効にした。
args.strategy = 'cuda fp16i8 *15+ -> cuda fp16'
モデルのダウンロード。
$ wget https://huggingface.co/BlinkDL/rwkv-4-raven/resolve/main/RWKV-4-Raven-7B-v8-EngAndMore-20230408-ctx4096.pth
コンバート。高速化&軽量化されるらしい。
$ cd v2
$ RWKV_CUDA_ON=1 python convert_model.py --in ../../RWKV-4-Raven-7B-v8-EngAndMore-20230408-ctx4096.pth --out ../../RWKV-4-Raven-7B-v8-EngAndMore-20230408-ctx4096.stream.pth --strategy "cuda fp16i8 *15+ -> cuda fp16"
上記に合わせて、v2/chat.pyを書き換えて実行してみるとこんな感じ。だいぶ会話になってる。
あなたは人間と会話するチャットボットです。常に丁寧でユーモアに溢れる回答をしてください。
Human: こんにちは!
AI: こんにちは!お元気ですか?
Human: 元気ですよ
AI: より良いデータの収集をするために、以下の情報を提供いただけますか?
1. テキストデータ:テキストデータセットの例として、どのようなものがありますか?
2. ビデオデータ:ビデオデータセットの例として、どのようなものがありますか?
3. テキストとビデオの組み合わせデータ:テキストとビデオを一緒に利用するデータセットを考える場合、どのようなことを考えていますか?
4. スコアリング:スコアリングの実装方法を教えてください
Human: 今はそういうデータはないのです。
AI: そうですね、今はまだデータがないですね。それでは、スコアリングに関するデータの例を教えてください。
Human: 私が質問するので。もっと普通の雑談をしましょう。
AI: 了解です。普通の雑談にしてみましょう。私は、皆さんの質問に答えるように心がけています。何か質問やヒントがありましたら、教えてください。
Human: 今日の晩御飯のおすすめを提案してください。
AI: 今日の晩御飯のおすすめを提案するには、どのようなメニューがおすすめですか?また、メニューについて詳しく説明してください。お勧めのスタイルやレシピを教えてください。また、何か特別な調理法や料理で大変参考になります。
Human: 中華料理が良いです。
AI: 中華料理はとても美味しいですね!中華料理には多くの素材が使用されますが、特に鮮度の高い野菜や豚肉、具材が効率的に加工されています。野菜を使用した豚肉料理は、特に美味しいです。また、豆腐やサラダなどの食材を組み合わせて、具材と一緒に仕上げるのも素敵です。
Human: では中華料理のオススメをお願いします。
AI: 中華料理のオススメは、豚肉料理です。豚肉は味がとても柔らかく、醤油や辛さなどの調味料で味を変えることができます。また、麺類と一緒に食べると、両方とも良いですね。また、ビールと一緒に飲んでみると良いでしょう。最後に、中華料理は昼間に食べることが多いので、暖かい空間を選ぶのも良いですね。
Human: いいですねぇ、餃子とビールは最高の組み合わせですね。
AI: はい、餃子とビールはとても美味しい組み合わせです。餃子は簡単に作れるし、形がおもしろくてまた美味しいですよ。ビールも、麦の香りが強く、一緒に飲むとさらに美味しいですよ。
GPUメモリの使用量もぐっと抑えられてていい感じ。
4529MiB / 24564MiB
これならstrategyもうちょっと詰めれそうな気もする。
あとは14Bなんとか使いたいなぁ・・・メモリ追加するか・・・
いろいろやってみたら、以下なら14B立ち上げることはできた。convertは何してもダメだったけど。あってるのかはわからないけど。
args.strategy = 'cuda fp16i8 *40+'
GPUメモリはこれぐらい。
14479MiB / 24564MiB
NVIDIA Container ToolkitをインストールしてdockerからもGPUを使えるようにする
まずは普通にdocker入れる
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg
$ sudo mkdir -m 0755 -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose-plugin
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
$ docker run hello-world
$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service
NVIDIA Container Toolkit
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-container-toolkit
$ sudo nvidia-ctk runtime configure --runtime=docker
$ sudo systemctl restart docker
では
$ docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
以下のように表示されればOK
Tue Apr 11 14:14:46 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA Version: 12.1 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 4090 On | 00000000:01:00.0 Off | Off |
| 0% 34C P8 3W / 450W| 22MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
+---------------------------------------------------------------------------------------+
cuda toolkitを複数共存させるにはこのへん
GUIでかんたんに管理したいのでPortainer CE入れてみる
$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
https://IPアドレス:9443
でアクセスしてadminユーザを作成すればおけ
GPUもう一枚追加したいなぁと思う昨今にちょっと心揺れるツイート。
ちょっと今のBTOサーバはケース・電源的に厳しそうだし。
というかこれだと電源工事が必要になってしまうのでは?賃貸ではちょっと厳しいな。。。
ざっくり90万ぐらい?うーん、同じ金額感だと、ユニファイドメモリなMac Studioが自分的にはいいかなぁ。