この記事では、最先端の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の代わりというのは無理ですね。






