Llama.py es una bifurcación de Llama.cpp que proporciona enlaces de Python a un tiempo de ejecución de inferencia para el modelo de LLAMA en C/C ++ puro.
El objetivo principal es ejecutar el modelo utilizando cuantización de 4 bits en una computadora portátil.
Sigue la instrucción de construcción.
cmake -S . -B build/release
cmake --build build/release
ln -s build/release/llama/cc/_llama.cpython-310-x86_64-linux-gnu.so llama Obtenga los pesos del modelo de llama original y colóquelos en el directorio data/model .
python -m llama pull -m data/model/7B -s 7BComo los pesos del modelo se obtienen con éxito, la estructura del directorio debe verse a continuación.
data/model
├── 7B
│ ├── checklist.chk
│ ├── consolidated.00.pth
│ └── params.json
├── tokenizer_checklist.chk
└── tokenizer.model
Entonces se debe convertir el modelo 7B en formato GGML FP16.
python -m llama convert data/model/7BY cuantizar el modelo a 4 bits.
python -m llama quantize data/model/7BEntonces uno puede comenzar el intérprete de Python y jugar con ataduras desnudas.
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 )O ejecutar la interfaz CLI.
Como los modelos están completamente cargados por completo en la memoria, necesitará un espacio de disco adecuado para guardarlos y suficiente RAM para cargarlos. Por el momento, los requisitos de memoria y disco son los mismos.
| modelo | tamaño original | Tamaño cuantificado (4 bits) |
|---|---|---|
| 7b | 13 GB | 3.9 GB |
| 13B | 24 GB | 7.8 GB |
| 30b | 60 GB | 19.5 GB |
| 65b | 120 GB | 38.5 GB |