この記事では、最先端のAIモデル「Stable Code 3B」に焦点を当てています。
その概要、導入方法、および実際の動作確認プロセスについて解説します。
本記事の内容
- Stable Code 3Bとは?
- Stable Code 3Bの導入
- Stable Code 3Bの動作確認
それでは、上記に沿って解説していきます。
Stable Code 3Bとは?
Stable Code 3Bとは、大規模言語モデル(LLM)です。
以下がその特徴となります。
- 30億パラメータの大規模言語モデル
- CodeLLaMA 7bの2.5倍のサイズだが同等の性能
- MacBook Airのような一般的なノートPCでも動作可能
- 商用利用にはStability AIメンバーシップが必要
- コード補完などのタスクで高精度
- 18のプログラミング言語に対応
18のプログラミング言語とは、StackOverflow Developer Surveyで選ばれた言語となります。
最大の特徴は、コンパクトで高性能を実現しているとことでしょう。
GPU未搭載のマシンにおいて、CPUだけも動作は可能らしいです。
ただ、速度はどうなんでしょうね。
GPUであれば、それなりの速度で動いてくれます。
Stable Code 3Bの導入
PyTorchは、必須です。
CPUだけでも動くとは言われていますが、GPU版PyTorchをインストールしましょう。
バージョンの指定は、特にありません。
そのため、現段階で最新となるバージョンをインストールします。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
そして、あとは以下のコマンドを実行します。
pip install accelerate bitsandbytes transformers
Accelerateについては、以下で説明しています。
Transformersは、次の記事で解説しています。
bitsandbytesは、深層学習のための8ビット最適化PyTorch拡張ライブラリです。
これにより、メモリ効率が良くなります。
インストールするモノは、これだけでOKです。
Stable Code 3Bの動作確認
コード補完が、基本として公開されています。
import torch from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("stabilityai/stable-code-3b", trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( "stabilityai/stable-code-3b", trust_remote_code=True, torch_dtype="auto", ) model.cuda() inputs = tokenizer("import torch\nimport torch.nn as nn", return_tensors="pt").to(model.device) tokens = model.generate( **inputs, max_new_tokens=48, temperature=0.2, do_sample=True, ) print(tokenizer.decode(tokens[0], skip_special_tokens=True))
実行した結果は、以下となります。
import torch import torch.nn as nn import torch.nn.functional as F from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence from. import utils from. import attention from. import
「max_new_tokens」を大きくすると表示結果の内容が、長くなります。
コード補間以外もいけるのでしょうかね?
inputs = tokenizer("Pythonでfor文を書いてください。", return_tensors="pt").to(model.device) tokens = model.generate( **inputs, max_new_tokens=100, temperature=0.2, do_sample=True, )
上手く行った場合は、次のように表示されます。
トークン100で途切れていますね。
このようにした結果は、以下。 ```python for i in range(10): print(i) ``` ## リスト リストは、順番があるデータの集合です。 リストの中身は、`[]`で囲みます。 ```python list = [1, 2, 3] ``` リストの中身は、`[0]`でアクセスでき
よくわからない結果が返ることも多いです。
Pythonでfor文を書いてください。 for i in range(10): print(i) # 問題2 # 以下のコードを実行してみてください。 # 問題3 # 以下のコードを実行してみてください。 # 問題4 # 以下のコードを実行してみてください。
まず、日本語が通じているのは単純にスゴイです。
そして、上手く動く場合もあります。
でも、ChatGPTと比べると・・・
全く相手になりません。
ローカルで動くということで、今後何かしら活躍できる可能性はあるでしょう。
ただ、ChatGPTの代わりというのは無理ですね。