目的
Gemma 2 JPN を使ったことを記録する
注意事項
初めて実行したときから時間が経って記事にしたため、抜け漏れがあるかもしれません。ご了承ください。
環境
- Windows 11 Pro
- RTX3060 12GB
- NVIDIA DRIVE
560.94
- CUDA
12.6
- Python
3.12.5
- huggingface-cli version
0.25.1
# command # nvidia driver nvidia-smi # cuda version nvcc -V # $ nvidia-smi Mon Oct 14 21:26:53 2024 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 560.94 Driver Version: 560.94 CUDA Version: 12.6 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Driver-Model | 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 3060 WDDM | 00000000:01:00.0 On | N/A | | 0% 57C P5 46W / 170W | 1283MiB / 12288MiB | 2% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ $ $ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2024 NVIDIA Corporation Built on Thu_Sep_12_02:55:00_Pacific_Daylight_Time_2024 Cuda compilation tools, release 12.6, V12.6.77 Build cuda_12.6.r12.6/compiler.34841621_0 $
参考
事前準備
huggingface でアカウントを作り、 settings
ページで、アクセストークンを作る
https://huggingface.co/settings/tokens
前提条件
- CUDA はインストール済みであること
- テキストエディタは任意
準備
cd ~ mkdir -p projects/gemma-2-2b-jpn cd projects/gemma-2-2b-jpn python -m venv venv source venv/Scripts/activate # pip をとりあえずアップグレードしている # pip がなければインストールすること python -m pip install --upgrade pip # 足りないパッケージがあれば適宜インストールすること pip install accelerate inquirerpy torchaudio torchvision pip install -U transformers
コードを作る
cat << 'EOL' >> sample.py # pip install accelerate from transformers import AutoTokenizer, AutoModelForCausalLM import torch tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b-jpn-it") model = AutoModelForCausalLM.from_pretrained( "google/gemma-2-2b-jpn-it", device_map="auto", torch_dtype=torch.bfloat16, ) messages = [ {"role": "user", "content": "マシーンラーニングについての詩を書いてください。"}, ] inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True, return_dict=True).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) generated_text = tokenizer.batch_decode(outputs[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0] print(generated_text.strip()) EOL
content
の中身が入力プロンプトとなる
実行
python sample.py
log
$ python sample.py Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████| 2/2 [00:04<00:00, 2.19s/it] The 'max_batch_size' argument of HybridCache is deprecated and will be removed in v4.46. Use the more precisely named 'batch_size' argument instead. Starting from v4.46, the `logits` model output will have the same type as the model (except at train time, where it will always be FP32) ## マシーンラーニングの詩 **1.** データの海、深淵の広がり、 複雑なパターン、隠された知識。 機械学習、その力強さ、 未来を予測、新たな道を開く。 **2.** 教師あり学習、教師なし学習、 複雑なアルゴリズム、複雑な思考。 ニューラルネットワーク、複雑な構造、 膨大なデータ、学習の旅。 **3.** 分類、予測、生成、 機械学習の力、無限の可能性。 画像認識、自然言語処理、 未来の技術、新たな世界へ。 **4.** 誤差、学習、改善、 機械学習の進化、その過程。 複雑な問題、解決への道、 未来の技術、新たな時代へ。 $
GPU 使用量
大体 6GB
位 GPU 使っている
今後
OpenWebUI とか使って自由に使えるようにしてみたい