Llama.py est une fourche de llama.cpp qui fournit des liaisons Python à un runtime d'inférence pour le modèle LLAMA en pur C / C ++.
L'objectif principal est d'exécuter le modèle en utilisant la quantification 4 bits sur un ordinateur portable.
L'instruction de construction suit.
cmake -S . -B build/release
cmake --build build/release
ln -s build/release/llama/cc/_llama.cpython-310-x86_64-linux-gnu.so llama Obtenez les poids du modèle LLAMA d'origine et placez-les dans le répertoire data/model .
python -m llama pull -m data/model/7B -s 7BComme les poids du modèle sont récupérés avec succès, la structure du répertoire devrait ressembler ci-dessous.
data/model
├── 7B
│ ├── checklist.chk
│ ├── consolidated.00.pth
│ └── params.json
├── tokenizer_checklist.chk
└── tokenizer.model
Ensuite, il faut convertir le modèle 7B au format GGML FP16.
python -m llama convert data/model/7BEt quantifiez le modèle en 4 bits.
python -m llama quantize data/model/7BEnsuite, on peut démarrer l'interprète Python et jouer avec des reliures nues.
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 )Ou exécutez l'interface CLI.
Comme les modèles sont actuellement entièrement chargés en mémoire, vous aurez besoin d'espace disque adéquat pour les sauver et suffisamment de RAM pour les charger. Pour le moment, les exigences de mémoire et de disque sont les mêmes.
| modèle | taille d'origine | Taille quantifiée (4 bits) |
|---|---|---|
| 7b | 13 Go | 3,9 Go |
| 13B | 24 Go | 7,8 Go |
| 30b | 60 Go | 19,5 Go |
| 65b | 120 Go | 38,5 Go |