![見出し画像](https://assets.st-note.com/production/uploads/images/123018420/rectangle_large_type_2_9e3160c0ba3b8a4625094716f1c99411.png?width=1200)
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のファインチューニングはできそうである。
試してみよう。