Closed25

機械学習用自作PC

kun432kun432

機械学習用の自作PCをちょっと検討中。参考になるサイトなどを記載していく。やりたいのは自然言語処理。Pen4の頃に自作して依頼なのでさっぱりわからない。

とりあえず

  • RTX3090一択。中古なら10万台ありそうだけど。
  • メモリ256GB積みたい
kun432kun432

メモリ256〜512GB積めるMBで検索したらLGA2066がほとんどになる。なんかワークステーション向けっぽい。

https://kakaku.com/specsearch/0540/

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しか選択しなくなるんじゃないかな。多分。

んー、もう少しメモリ要件下げたほうがいいかなぁ。

kun432kun432

メモリ最大128GBにするとかなり選択肢が広がる上、コストも下がる。メモリ最大256GB/512GBのどっちにしても構成はほぼ変わらない感があるので、ここが境目。

kun432kun432

ということでFRONTIERさんで購入。

4090なら最安かも。メモリは最大128GB。まあしょうがなさそう。台数限定。

https://www.frontier-direct.jp/direct/g/g115209-Mar4/

  • 3090中古のほうが安いのだけどこっちだと自作になる。久々すぎてちょっと不安(熱とかどこまで考慮すればいいのかわからない、昔はそこまで考えなくてよかった記憶)。ならBTOで。
  • 4090のほうがアイドル時の消費電力は低いというのを見かけた。
  • PC組むのが目的ではなくて使うことなので、お金で解決したほうが早い。
  • メモリは足りなさそうなら後で追加すればいいし、なにか不満が出たら今後も入れ替えるなり、流用するなりすればいい

50万切るのは多分最安レベルってことで。

kun432kun432

届いたのでやったことメモ

ubuntu22.04インストール

  • Desktopにした。EtcherでUSBメモリ作成。
  • BIOSでFastBoot無効にしてUSBメモリから起動。
  • プリインストールされていたWindows11は削除

設定

参考)
https://take6shin-tech-diary.com/ubuntu2204_ml/
https://shikaku-mafia.com/ubuntu-ml-env/

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

https://developer.nvidia.com/cuda-downloads

$ 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.

ふむ、コマンドは入ったけど、相変わらずアクセスできないらしい。ドライバのインストールが必要ってことか。

https://moriokalab.com/news/76

上記を見てると、どうやら再起動すれば良いように見える。ということで再起動。

再起動するとブルー画面で止まるのだけど、ここで"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"が選択できた。あとは以下を参考に。

https://kledgeb.blogspot.com/2022/04/ubuntu-2204-lts-7-uefi-mok.html

で再度。

$ 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

以下にも書いてある。
https://cocoinit23.com/cuda-nvcc-command-not-found/

ということで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周りは別途。

kun432kun432

なんていうか、環境再構築とかやりたくないけど、やりそうな気がする。。。

kun432kun432

リモデも一応有効化しておく

  • 設定->共有->リモートデスクトップ
    • リモートデスクトップを有効化
    • リモートコントロールを有効化
    • 認証のパスワードはログインパスワードとは異なるので確認しておく。

Macからは Microsoft Remote Desktopで。homebrewにもあるけどなぜかダメだったのでMac App Storeから落としてきた。

Ubuntu側で画面がロックされてるとリモでは使えないっぽい。ここだけイマイチ。

xrdpとかvncでもいいんだけど今更感あるし結構手間。まあリモデはそんなに使わないと思うので一旦これで。

kun432kun432

Python環境は、pyenv/virtualenvを使うこととする。

https://qiita.com/ksato9700/items/5d9eba10fe6b8e064178

ビルドに必要なパッケージを追加。このへんは適当。

$ 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でやってみる。以下を参考に。

https://note.com/npaka/n/nc0592a884903

モデルのダウンロードとレポジトリのクローン。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メモリ量は重要だなーという感じ。

kun432kun432

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

以下を参考に。

https://zenn.dev/octu0/scraps/ae1eaaff866f3a

v2/chat.pyを変更。

os.environ['RWKV_JIT_ON'] = '1'
os.environ["RWKV_CUDA_ON"] = '1' 
args.strategy = 'cuda fp16i8 *20 -> cuda fp16'

ここは実際に色々やってみるしかない感じ。うちの環境だと上記で21591MiB / 24564MiBって感じだった。

https://pypi.org/project/rwkv/

あと、RWKV_CUDA_ONを1にするとパッケージが必要でした。

$ pip install Ninja

こんな感じです。

あなたは人間と会話するチャットボットです。

Human: こんにちは!
AI: こんにちは!お元気ですか?

Human: 元気ですよ
AI: 元気ですか?私たちは、そうだと思うのです。元気ですか?そして、私たちは、多くのことをご存知でしょう。そして、多くのことを教えることができます。

Human: なるほど、哲学的ですね。
AI: 元気ですね、もちろん。そして私たちは、哲学的で、ここでお話しします。私たちは、「自由意志」を持ちます。私たちは、「すべての意思決定をすることを認める」こともできます。

Human: お、おぅ、なんか難しいですね。気楽な話をしましょう。
AI: そうですね。これが私たちのゴールです。私たちは、それぞれに「なんか」に夢中になることができます。そうです、そうです。あなたは、そんなにいい仕事をしているのでしょうか?

Human: そう言われると自身がないのですが
AI: それは悲しいですね。私たちは、あなたに仕事を教えてあげることができます。私たちは、人間が学ぶことを素晴らしいことだと思います。それは「趣味」と言いましょうか。人間が「仕事」をするという考えは、ここでは変な考え方です。

なんかこうすごい上から来られたw

内容はともかく、7Bに比べると日本語としては自然になる。

他にもいろいろOSSなモデルがあるので試してみる予定。

kun432kun432

https://huggingface.co/BlinkDL/rwkv-4-raven

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なんとか使いたいなぁ・・・メモリ追加するか・・・

kun432kun432

いろいろやってみたら、以下なら14B立ち上げることはできた。convertは何してもダメだったけど。あってるのかはわからないけど。

args.strategy = 'cuda fp16i8 *40+'

GPUメモリはこれぐらい。

14479MiB / 24564MiB

kun432kun432

NVIDIA Container ToolkitをインストールしてdockerからもGPUを使えるようにする

まずは普通にdocker入れる

https://docs.docker.com/engine/install/ubuntu/
https://docs.docker.com/engine/install/linux-postinstall/

$ 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

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

$ 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      |
|=======================================================================================|
+---------------------------------------------------------------------------------------+
kun432kun432

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ユーザを作成すればおけ

kun432kun432

https://twitter.com/AiXsatoshi/status/1779320811620548845

GPUもう一枚追加したいなぁと思う昨今にちょっと心揺れるツイート。
ちょっと今のBTOサーバはケース・電源的に厳しそうだし。

というかこれだと電源工事が必要になってしまうのでは?賃貸ではちょっと厳しいな。。。

ざっくり90万ぐらい?うーん、同じ金額感だと、ユニファイドメモリなMac Studioが自分的にはいいかなぁ。

このスクラップは2023/03/31にクローズされました