llama.py
1.0.0
llama.pyはllama.cppのフォークで、純粋なC/C ++のLlamaモデルの推論ランタイムにPythonバインディングを提供します。
主な目標は、ラップトップで4ビット量子化を使用してモデルを実行することです。
[命令の構築]が続きます。
cmake -S . -B build/release
cmake --build build/release
ln -s build/release/llama/cc/_llama.cpython-310-x86_64-linux-gnu.so llama元のLlamaモデルの重みを取得し、それらをdata/modelディレクトリに配置します。
python -m llama pull -m data/model/7B -s 7Bモデルの重みが正常に取得されるため、ディレクトリ構造は以下のように見えます。
data/model
├── 7B
│ ├── checklist.chk
│ ├── consolidated.00.pth
│ └── params.json
├── tokenizer_checklist.chk
└── tokenizer.model
その後、7BモデルをGGML FP16形式に変換する必要があります。
python -m llama convert data/model/7Bモデルを4ビットに定量化します。
python -m llama quantize data/model/7Bその後、Pythonインタープリターを起動して、裸のバインディングで遊ぶことができます。
from llama . _llama import *
nothreads = 8
model = LLaMA . load ( './data/model/7B/ggml-model-q4_0.bin' , 512 , GGMLType . F32 )
mem_per_token = model . estimate_mem_per_token ( nothreads )
logits = model . apply ( context , context_size , mem_per_token , nothreads )
token_id = sample_next_token ( context , logits )
tokenizer = model . get_tokenizer ()
tokenizer . decode ( token_id )またはCLIインターフェイスを実行します。
モデルは現在メモリに完全にロードされているため、それらを保存するには適切なディスクスペースとそれらをロードするのに十分なRAMが必要になります。現時点では、メモリとディスクの要件は同じです。
| モデル | オリジナルサイズ | 量子化サイズ(4ビット) |
|---|---|---|
| 7b | 13 GB | 3.9 GB |
| 13b | 24 GB | 7.8 GB |
| 30b | 60 GB | 19.5 GB |
| 65b | 120 GB | 38.5 GB |