見出し画像

AIスーパーコンピュータ「継之助」 試運転 34Bモデルを動かしてみる

よし、A100 80GB単体では動作できなかった34Bモデルをいよいよ動かしてみるぞ!

と意気込んだものの、ダウンロードにガッツリ時間がかかるので二日寝かせた。

いよいよ試運転開始。A100 80GBx8が火を吹くぜ。
でもまだ本気は出さない。
A100 80GBx8の20%も使ってない。このくらいだと温度も高くならない。

shi3z@tsuginosuke:/mnt/hdd$ nvidia-smi
Wed Nov 29 04:01:24 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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 A100 80GB PCIe          Off | 00000000:17:00.0 Off |                    0 |
| N/A   41C    P0              81W / 300W |  21061MiB / 81920MiB |     14%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   1  NVIDIA A100 80GB PCIe          Off | 00000000:3D:00.0 Off |                    0 |
| N/A   45C    P0              82W / 300W |  23985MiB / 81920MiB |     16%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   2  NVIDIA A100 80GB PCIe          Off | 00000000:63:00.0 Off |                    0 |
| N/A   44C    P0              76W / 300W |  23985MiB / 81920MiB |     16%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   3  NVIDIA A100 80GB PCIe          Off | 00000000:AB:00.0 Off |                    0 |
| N/A   51C    P0             139W / 300W |  23985MiB / 81920MiB |     16%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   4  NVIDIA A100 80GB PCIe          Off | 00000000:BD:00.0 Off |                    0 |
| N/A   49C    P0              85W / 300W |  23985MiB / 81920MiB |     16%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   5  NVIDIA A100 80GB PCIe          Off | 00000000:CF:00.0 Off |                    0 |
| N/A   51C    P0              80W / 300W |  23985MiB / 81920MiB |     16%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
|   6  NVIDIA A100 80GB PCIe          Off | 00000000:E1:00.0 Off |                    0 |
| N/A   49C    P0              85W / 300W |   7013MiB / 81920MiB |      4%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A    150182      C   ...ions/anaconda3-2023.09-0/bin/python    21048MiB |
|    1   N/A  N/A    150182      C   ...ions/anaconda3-2023.09-0/bin/python    23972MiB |
|    2   N/A  N/A    150182      C   ...ions/anaconda3-2023.09-0/bin/python    23972MiB |
|    3   N/A  N/A    150182      C   ...ions/anaconda3-2023.09-0/bin/python    23972MiB |
|    4   N/A  N/A    150182      C   ...ions/anaconda3-2023.09-0/bin/python    23972MiB |
|    5   N/A  N/A    150182      C   ...ions/anaconda3-2023.09-0/bin/python    23972MiB |
|    6   N/A  N/A    150182      C   ...ions/anaconda3-2023.09-0/bin/python     7000MiB |
+---------------------------------------------------------------------------------------+

いざ実行!出でよ!34Bモデル!


z$ python
Python 3.11.5 (main, Sep 11 2023, 13:54:46) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from transformers import AutoTokenizer, AutoModelForCausalLM
>>> model = AutoModelForCausalLM.from_pretrained("NousResearch/Nous-Capybara-34B",trust_remote_code=True,device_map="auto")
Loading checkpoint shards: 100%|███████████████████████████████████████████████████████████████████████████| 7/7 [01:06<00:00,  9.50s/it]
>>> tokenizer = AutoTokenizer.from_pretrained("NousResearch/Nous-Capybara-34B",trust_remote_code=True)
>>> t = tokenizer.encode("USER:フィボナッチ数列を出すプログラムをpythonで書いて\nASSISTANT: もちろんです",return_tensors='pt')
>>> r=model.generate(t,max_length=10000)
/home/shi3z/.pyenv/versions/anaconda3-2023.09-0/lib/python3.11/site-packages/transformers/generation/utils.py:1529: UserWarning: You are calling .generate() with the `input_ids` being on a device type different than your model's device. `input_ids` is on cpu, whereas the model is on cuda. You may experience unexpected behaviors or slower generation. Please make sure that you have put `input_ids` to the correct device by calling for example input_ids = input_ids.to('cuda') before running `.generate()`.
  warnings.warn(
>>> tokenizer.decode(r[0])
' USER:フィボナッチ数列を出すプログラムをpythonで書いて\nASSISTANT: もちろんですが、それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。</s><|endoftext|>'

出力

' USER:フィボナッチ数列を出すプログラムをpythonで書いて\nASSISTANT: もちろんですが、それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。それだけではありません。</s><|endoftext|>'

ダメだこりゃ。
なんでこうなっちゃったかというと、プロンプトを「USER:フィボナッチ数列を出すプログラムをpythonで書いて\nASSISTANT: もちろんです」にしてしまったので、「もちろんですが、それだけではありません」にしてしまったっぽい。

もう少しプロンプトをいじってみる。「USER:フィボナッチ数列を出すプログラムをpythonで書いて\nASSISTANT: もちろんです。以下にコードを示します。\n```」

最後の「`(バッククォート)」三つがミソで、これはマークダウン形式の時によくソースコードの挿入に使われる形式なのだ。結果はバッチリ

r=model.generate(t,max_length=10000)
>>> tokenizer.decode(r[0])
' USER:フィボナッチ数列を出すプログラムをpythonで書いて\nASSISTANT: もちろんです。以下にコードを示します。\n```python\nfibonacci_sequence = []\ndef fibonacci_sequence_generator(n=10)):\n    fibonacci_sequence = [1,1]\n    while fibonacci_sequence_index < n:\n        fibonacci_sequence_index = fibonacci_sequence_index\n        fibonacci_sequence.append(fibonacci_sequence[fibonacci_sequence_index-1]]+fibonacci_sequence[fibonacci_sequence_index-2]])))\n        fibonacci_sequence_index += 1\n    fibonacci_sequence = fibonacci_sequence_generator(n=10)))\nprint(fibonacci_sequence))\n```\n(おわび)</s><|endoftext|>'

出力を整形したもの

USER:フィボナッチ数列を出すプログラムをpythonで書いて
ASSISTANT: もちろんです。以下にコードを示します。
```python
fibonacci_sequence = []
def fibonacci_sequence_generator(n=10)):
  fibonacci_sequence = [1,1]
  while fibonacci_sequence_index < n:
     fibonacci_sequence_index = fibonacci_sequence_index
     fibonacci_sequence.append(fibonacci_sequence[fibonacci_sequence_index-1]]+fibonacci_sequence[fibonacci_sequence_index-2]])))
  fibonacci_sequence_index += 1

fibonacci_sequence = fibonacci_sequence_generator(n=10)))
print(fibonacci_sequence))
```
(おわび)</s><|endoftext|>'

いい線いってるが、プログラムはバグっていた。
まあでも動いた。これで34Bのファインチューニングはできそうである。
試してみよう。