Migrate inference to llama_batch and llama_decode api (#795)
* Add low-level batching notebook * fix: tokenization of special characters: (#850) It should behave like llama.cpp, where most out of the box usages treat special characters accordingly * Update CHANGELOG * Cleanup * Fix runner label * Update notebook * Use llama_decode and batch api * Support logits_all parameter --------- Co-authored-by: Antoine Lizee <antoine.lizee@gmail.com>
This commit is contained in:
parent
f436e0c872
commit
ab028cb878
3 changed files with 753 additions and 8 deletions
723
examples/notebooks/Batching.ipynb
Normal file
723
examples/notebooks/Batching.ipynb
Normal file
|
@ -0,0 +1,723 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import llama_cpp"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"ggml_init_cublas: GGML_CUDA_FORCE_MMQ: no\n",
|
||||
"ggml_init_cublas: CUDA_USE_TENSOR_CORES: yes\n",
|
||||
"ggml_init_cublas: found 1 CUDA devices:\n",
|
||||
" Device 0: NVIDIA GeForce RTX 2060, compute capability 7.5\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"llama_cpp.llama_backend_init(numa=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"llama_model_loader: loaded meta data with 16 key-value pairs and 291 tensors from ../../models/mistral-7b-v0.1-GGUF/ggml-model-Q4_K.gguf (version GGUF V2)\n",
|
||||
"llama_model_loader: - tensor 0: token_embd.weight q4_K [ 4096, 32000, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 1: output_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 2: output.weight q6_K [ 4096, 32000, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 3: blk.0.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 4: blk.0.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 5: blk.0.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 6: blk.0.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 7: blk.0.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 8: blk.0.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 9: blk.0.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 10: blk.0.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 11: blk.0.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 12: blk.1.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 13: blk.1.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 14: blk.1.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 15: blk.1.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 16: blk.1.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 17: blk.1.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 18: blk.1.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 19: blk.1.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 20: blk.1.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 21: blk.2.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 22: blk.2.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 23: blk.2.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 24: blk.2.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 25: blk.2.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 26: blk.2.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 27: blk.2.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 28: blk.2.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 29: blk.2.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 30: blk.3.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 31: blk.3.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 32: blk.3.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 33: blk.3.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 34: blk.3.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 35: blk.3.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 36: blk.3.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 37: blk.3.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 38: blk.3.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 39: blk.4.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 40: blk.4.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 41: blk.4.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 42: blk.4.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 43: blk.4.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 44: blk.4.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 45: blk.4.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 46: blk.4.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 47: blk.4.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 48: blk.5.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 49: blk.5.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 50: blk.5.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 51: blk.5.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 52: blk.5.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 53: blk.5.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 54: blk.5.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 55: blk.5.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 56: blk.5.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 57: blk.6.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 58: blk.6.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 59: blk.6.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 60: blk.6.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 61: blk.6.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 62: blk.6.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 63: blk.6.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 64: blk.6.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 65: blk.6.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 66: blk.7.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 67: blk.7.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 68: blk.7.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 69: blk.7.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 70: blk.7.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 71: blk.7.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 72: blk.7.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 73: blk.7.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 74: blk.7.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 75: blk.8.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 76: blk.8.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 77: blk.8.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 78: blk.8.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 79: blk.8.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 80: blk.8.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 81: blk.8.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 82: blk.8.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 83: blk.8.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 84: blk.9.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 85: blk.9.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 86: blk.9.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 87: blk.9.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 88: blk.9.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 89: blk.9.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 90: blk.9.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 91: blk.9.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 92: blk.9.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 93: blk.10.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 94: blk.10.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 95: blk.10.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 96: blk.10.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 97: blk.10.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 98: blk.10.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 99: blk.10.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 100: blk.10.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 101: blk.10.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 102: blk.11.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 103: blk.11.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 104: blk.11.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 105: blk.11.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 106: blk.11.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 107: blk.11.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 108: blk.11.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 109: blk.11.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 110: blk.11.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 111: blk.12.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 112: blk.12.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 113: blk.12.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 114: blk.12.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 115: blk.12.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 116: blk.12.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 117: blk.12.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 118: blk.12.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 119: blk.12.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 120: blk.13.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 121: blk.13.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 122: blk.13.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 123: blk.13.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 124: blk.13.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 125: blk.13.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 126: blk.13.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 127: blk.13.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 128: blk.13.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 129: blk.14.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 130: blk.14.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 131: blk.14.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 132: blk.14.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 133: blk.14.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 134: blk.14.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 135: blk.14.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 136: blk.14.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 137: blk.14.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 138: blk.15.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 139: blk.15.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 140: blk.15.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 141: blk.15.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 142: blk.15.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 143: blk.15.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 144: blk.15.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 145: blk.15.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 146: blk.15.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 147: blk.16.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 148: blk.16.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 149: blk.16.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 150: blk.16.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 151: blk.16.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 152: blk.16.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 153: blk.16.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 154: blk.16.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 155: blk.16.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 156: blk.17.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 157: blk.17.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 158: blk.17.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 159: blk.17.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 160: blk.17.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 161: blk.17.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 162: blk.17.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 163: blk.17.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 164: blk.17.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 165: blk.18.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 166: blk.18.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 167: blk.18.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 168: blk.18.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 169: blk.18.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 170: blk.18.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 171: blk.18.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 172: blk.18.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 173: blk.18.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 174: blk.19.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 175: blk.19.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 176: blk.19.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 177: blk.19.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 178: blk.19.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 179: blk.19.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 180: blk.19.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 181: blk.19.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 182: blk.19.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 183: blk.20.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 184: blk.20.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 185: blk.20.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 186: blk.20.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 187: blk.20.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 188: blk.20.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 189: blk.20.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 190: blk.20.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 191: blk.20.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 192: blk.21.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 193: blk.21.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 194: blk.21.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 195: blk.21.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 196: blk.21.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 197: blk.21.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 198: blk.21.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 199: blk.21.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 200: blk.21.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 201: blk.22.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 202: blk.22.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 203: blk.22.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 204: blk.22.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 205: blk.22.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 206: blk.22.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 207: blk.22.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 208: blk.22.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 209: blk.22.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 210: blk.23.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 211: blk.23.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 212: blk.23.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 213: blk.23.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 214: blk.23.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 215: blk.23.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 216: blk.23.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 217: blk.23.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 218: blk.23.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 219: blk.24.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 220: blk.24.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 221: blk.24.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 222: blk.24.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 223: blk.24.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 224: blk.24.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 225: blk.24.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 226: blk.24.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 227: blk.24.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 228: blk.25.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 229: blk.25.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 230: blk.25.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 231: blk.25.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 232: blk.25.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 233: blk.25.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 234: blk.25.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 235: blk.25.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 236: blk.25.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 237: blk.26.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 238: blk.26.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 239: blk.26.attn_v.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 240: blk.26.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 241: blk.26.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 242: blk.26.ffn_down.weight q4_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 243: blk.26.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 244: blk.26.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 245: blk.26.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 246: blk.27.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 247: blk.27.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 248: blk.27.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 249: blk.27.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 250: blk.27.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 251: blk.27.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 252: blk.27.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 253: blk.27.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 254: blk.27.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 255: blk.28.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 256: blk.28.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 257: blk.28.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 258: blk.28.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 259: blk.28.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 260: blk.28.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 261: blk.28.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 262: blk.28.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 263: blk.28.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 264: blk.29.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 265: blk.29.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 266: blk.29.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 267: blk.29.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 268: blk.29.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 269: blk.29.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 270: blk.29.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 271: blk.29.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 272: blk.29.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 273: blk.30.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 274: blk.30.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 275: blk.30.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 276: blk.30.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 277: blk.30.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 278: blk.30.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 279: blk.30.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 280: blk.30.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 281: blk.30.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 282: blk.31.attn_q.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 283: blk.31.attn_k.weight q4_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 284: blk.31.attn_v.weight q6_K [ 4096, 1024, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 285: blk.31.attn_output.weight q4_K [ 4096, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 286: blk.31.ffn_gate.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 287: blk.31.ffn_down.weight q6_K [ 14336, 4096, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 288: blk.31.ffn_up.weight q4_K [ 4096, 14336, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 289: blk.31.attn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - tensor 290: blk.31.ffn_norm.weight f32 [ 4096, 1, 1, 1 ]\n",
|
||||
"llama_model_loader: - kv 0: general.architecture str \n",
|
||||
"llama_model_loader: - kv 1: general.name str \n",
|
||||
"llama_model_loader: - kv 2: llama.context_length u32 \n",
|
||||
"llama_model_loader: - kv 3: llama.embedding_length u32 \n",
|
||||
"llama_model_loader: - kv 4: llama.block_count u32 \n",
|
||||
"llama_model_loader: - kv 5: llama.feed_forward_length u32 \n",
|
||||
"llama_model_loader: - kv 6: llama.rope.dimension_count u32 \n",
|
||||
"llama_model_loader: - kv 7: llama.attention.head_count u32 \n",
|
||||
"llama_model_loader: - kv 8: llama.attention.head_count_kv u32 \n",
|
||||
"llama_model_loader: - kv 9: llama.attention.layer_norm_rms_epsilon f32 \n",
|
||||
"llama_model_loader: - kv 10: general.file_type u32 \n",
|
||||
"llama_model_loader: - kv 11: tokenizer.ggml.model str \n",
|
||||
"llama_model_loader: - kv 12: tokenizer.ggml.tokens arr \n",
|
||||
"llama_model_loader: - kv 13: tokenizer.ggml.scores arr \n",
|
||||
"llama_model_loader: - kv 14: tokenizer.ggml.token_type arr \n",
|
||||
"llama_model_loader: - kv 15: general.quantization_version u32 \n",
|
||||
"llama_model_loader: - type f32: 65 tensors\n",
|
||||
"llama_model_loader: - type q4_K: 193 tensors\n",
|
||||
"llama_model_loader: - type q6_K: 33 tensors\n",
|
||||
"llm_load_vocab: special tokens definition check successful ( 259/32000 ).\n",
|
||||
"llm_load_print_meta: format = GGUF V2\n",
|
||||
"llm_load_print_meta: arch = llama\n",
|
||||
"llm_load_print_meta: vocab type = SPM\n",
|
||||
"llm_load_print_meta: n_vocab = 32000\n",
|
||||
"llm_load_print_meta: n_merges = 0\n",
|
||||
"llm_load_print_meta: n_ctx_train = 4096\n",
|
||||
"llm_load_print_meta: n_embd = 4096\n",
|
||||
"llm_load_print_meta: n_head = 32\n",
|
||||
"llm_load_print_meta: n_head_kv = 8\n",
|
||||
"llm_load_print_meta: n_layer = 32\n",
|
||||
"llm_load_print_meta: n_rot = 128\n",
|
||||
"llm_load_print_meta: n_gqa = 4\n",
|
||||
"llm_load_print_meta: f_norm_eps = 0.0e+00\n",
|
||||
"llm_load_print_meta: f_norm_rms_eps = 1.0e-05\n",
|
||||
"llm_load_print_meta: f_clamp_kqv = 0.0e+00\n",
|
||||
"llm_load_print_meta: f_max_alibi_bias = 0.0e+00\n",
|
||||
"llm_load_print_meta: n_ff = 14336\n",
|
||||
"llm_load_print_meta: freq_base_train = 10000.0\n",
|
||||
"llm_load_print_meta: freq_scale_train = 1\n",
|
||||
"llm_load_print_meta: model type = 7B\n",
|
||||
"llm_load_print_meta: model ftype = mostly Q4_K - Medium\n",
|
||||
"llm_load_print_meta: model params = 7.24 B\n",
|
||||
"llm_load_print_meta: model size = 4.07 GiB (4.83 BPW) \n",
|
||||
"llm_load_print_meta: general.name = LLaMA v2\n",
|
||||
"llm_load_print_meta: BOS token = 1 '<s>'\n",
|
||||
"llm_load_print_meta: EOS token = 2 '</s>'\n",
|
||||
"llm_load_print_meta: UNK token = 0 '<unk>'\n",
|
||||
"llm_load_print_meta: LF token = 13 '<0x0A>'\n",
|
||||
"llm_load_tensors: ggml ctx size = 0.10 MB\n",
|
||||
"llm_load_tensors: using CUDA for GPU acceleration\n",
|
||||
"llm_load_tensors: mem required = 70.41 MB\n",
|
||||
"llm_load_tensors: offloading 32 repeating layers to GPU\n",
|
||||
"llm_load_tensors: offloading non-repeating layers to GPU\n",
|
||||
"llm_load_tensors: offloaded 35/35 layers to GPU\n",
|
||||
"llm_load_tensors: VRAM used: 4095.05 MB\n",
|
||||
".................................................................................................\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"params = llama_cpp.llama_model_default_params()\n",
|
||||
"params.n_gpu_layers = 35\n",
|
||||
"model = llama_cpp.llama_load_model_from_file(b\"../../models/mistral-7b-v0.1-GGUF/ggml-model-Q4_K.gguf\", params=params) # Update this to whatever"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[1, 1014, 2936, 9060, 285, 1142]\n",
|
||||
"58\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"n_ctx = 512\n",
|
||||
"n_len = 32\n",
|
||||
"n_parallel = 2\n",
|
||||
"prompt = b\"The quick brown fox\"\n",
|
||||
"\n",
|
||||
"tokens = (llama_cpp.llama_token * n_ctx)()\n",
|
||||
"tokens_len = llama_cpp.llama_tokenize(model, prompt, len(prompt), tokens, len(tokens), True, True)\n",
|
||||
"print(tokens[:tokens_len])\n",
|
||||
"\n",
|
||||
"n_kv_req = tokens_len + (n_len - tokens_len) * n_parallel\n",
|
||||
"print(n_kv_req)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"llama_new_context_with_model: n_ctx = 58\n",
|
||||
"llama_new_context_with_model: freq_base = 10000.0\n",
|
||||
"llama_new_context_with_model: freq_scale = 1\n",
|
||||
"llama_kv_cache_init: offloading v cache to GPU\n",
|
||||
"llama_kv_cache_init: offloading k cache to GPU\n",
|
||||
"llama_kv_cache_init: VRAM kv self = 7.25 MB\n",
|
||||
"llama_new_context_with_model: kv self size = 7.25 MB\n",
|
||||
"llama_build_graph: non-view tensors processed: 740/740\n",
|
||||
"llama_new_context_with_model: compute buffer total size = 10.63 MB\n",
|
||||
"llama_new_context_with_model: VRAM scratch buffer: 4.51 MB\n",
|
||||
"llama_new_context_with_model: total VRAM used: 4106.81 MB (model: 4095.05 MB, context: 11.76 MB)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"\n",
|
||||
"ctx_params = llama_cpp.llama_context_default_params()\n",
|
||||
"ctx_params.seed = 1234\n",
|
||||
"ctx_params.n_ctx = n_kv_req\n",
|
||||
"ctx_params.n_batch = max(n_len, n_parallel)\n",
|
||||
"ctx_params.n_threads = 1\n",
|
||||
"ctx_params.n_threads_batch = 1\n",
|
||||
"ctx = llama_cpp.llama_new_context_with_model(model, ctx_params)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"n_ctx = llama_cpp.llama_n_ctx(ctx)\n",
|
||||
"batch = llama_cpp.llama_batch_init(max(tokens_len, n_parallel), 0, 1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import ctypes\n",
|
||||
"\n",
|
||||
"batch.n_tokens = tokens_len\n",
|
||||
"for i in range(tokens_len):\n",
|
||||
" batch.token[i] = tokens[i]\n",
|
||||
" batch.pos[i] = i\n",
|
||||
" batch.seq_id[i][0] = 0\n",
|
||||
" batch.n_seq_id[i] = 1\n",
|
||||
" batch.logits[i] = False\n",
|
||||
"\n",
|
||||
"batch.logits[batch.n_tokens - 1] = True\n",
|
||||
"\n",
|
||||
"if llama_cpp.llama_decode(ctx, batch) != 0:\n",
|
||||
" print(\"Error decoding\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"for i in range(n_parallel):\n",
|
||||
" llama_cpp.llama_kv_cache_seq_cp(ctx, 0, i, 0, batch.n_tokens)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"7\n",
|
||||
"[' j', ' jumped']\n",
|
||||
"8\n",
|
||||
"[' jumps', ' jumped over']\n",
|
||||
"9\n",
|
||||
"[' jumps over', ' jumped over the']\n",
|
||||
"10\n",
|
||||
"[' jumps over the', ' jumped over the lazy']\n",
|
||||
"11\n",
|
||||
"[' jumps over the lazy', ' jumped over the lazy dog']\n",
|
||||
"12\n",
|
||||
"[' jumps over the lazy dog', ' jumped over the lazy dog.']\n",
|
||||
"13\n",
|
||||
"[' jumps over the lazy dog.', ' jumped over the lazy dog.\\n']\n",
|
||||
"14\n",
|
||||
"[' jumps over the lazy dog.\\n', ' jumped over the lazy dog.\\n\\n']\n",
|
||||
"15\n",
|
||||
"[' jumps over the lazy dog.\\n\\n', ' jumped over the lazy dog.\\n\\nThe']\n",
|
||||
"16\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI', ' jumped over the lazy dog.\\n\\nThe quick']\n",
|
||||
"17\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’', ' jumped over the lazy dog.\\n\\nThe quick brown']\n",
|
||||
"18\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m', ' jumped over the lazy dog.\\n\\nThe quick brown f']\n",
|
||||
"19\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not', ' jumped over the lazy dog.\\n\\nThe quick brown fox']\n",
|
||||
"20\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped']\n",
|
||||
"21\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over']\n",
|
||||
"22\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the']\n",
|
||||
"23\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy']\n",
|
||||
"24\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog']\n",
|
||||
"25\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.']\n",
|
||||
"26\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n']\n",
|
||||
"27\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most famous', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n\\n']\n",
|
||||
"28\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most famous sentence', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n\\nThe']\n",
|
||||
"29\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most famous sentence in', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n\\nThe quick']\n",
|
||||
"30\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most famous sentence in the', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n\\nThe quick brown']\n",
|
||||
"31\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most famous sentence in the English', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n\\nThe quick brown f']\n",
|
||||
"32\n",
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most famous sentence in the English language', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n\\nThe quick brown fox']\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import ctypes\n",
|
||||
"\n",
|
||||
"streams = [\"\"] * n_parallel\n",
|
||||
"i_batch = [batch.n_tokens - 1] * n_parallel\n",
|
||||
"\n",
|
||||
"n_cur = batch.n_tokens\n",
|
||||
"n_decode = 0\n",
|
||||
"\n",
|
||||
"while n_cur <= n_len:\n",
|
||||
" batch.n_tokens = 0\n",
|
||||
" for i in range(n_parallel):\n",
|
||||
" if i_batch[i] < 0:\n",
|
||||
" continue\n",
|
||||
" \n",
|
||||
" n_vocab = llama_cpp.llama_n_vocab(model)\n",
|
||||
" logits = llama_cpp.llama_get_logits_ith(ctx, i_batch[i])\n",
|
||||
"\n",
|
||||
" candidates = (llama_cpp.llama_token_data * n_vocab)()\n",
|
||||
"\n",
|
||||
" for token_id in range(n_vocab):\n",
|
||||
" candidates[token_id].id = token_id\n",
|
||||
" candidates[token_id].logit = logits[token_id]\n",
|
||||
" candidates[token_id].p = 0.0\n",
|
||||
"\n",
|
||||
" candidates_p = llama_cpp.llama_token_data_array(candidates, len(candidates), False)\n",
|
||||
"\n",
|
||||
" top_k = 40\n",
|
||||
" top_p = 0.9\n",
|
||||
" temp = 0.4\n",
|
||||
"\n",
|
||||
" llama_cpp.llama_sample_top_k(ctx, ctypes.byref(candidates_p), top_k, 1)\n",
|
||||
" llama_cpp.llama_sample_top_p(ctx, ctypes.byref(candidates_p), top_p, 1)\n",
|
||||
" llama_cpp.llama_sample_temp (ctx, ctypes.byref(candidates_p), temp)\n",
|
||||
" \n",
|
||||
" new_token_id = llama_cpp.llama_sample_token(ctx, ctypes.byref(candidates_p))\n",
|
||||
"\n",
|
||||
" if new_token_id == llama_cpp.llama_token_eos(ctx) or n_cur == n_len:\n",
|
||||
" i_batch[i] = -1\n",
|
||||
" continue\n",
|
||||
"\n",
|
||||
" buf = (ctypes.c_char * 32)()\n",
|
||||
" outlen = llama_cpp.llama_token_to_piece(model, new_token_id, buf, len(buf))\n",
|
||||
" streams[i] += bytes(buf[:outlen]).decode(\"utf-8\")\n",
|
||||
"\n",
|
||||
" batch.token[batch.n_tokens] = new_token_id\n",
|
||||
" batch.pos[batch.n_tokens] = n_cur\n",
|
||||
" batch.seq_id[batch.n_tokens][0] = i\n",
|
||||
" batch.n_seq_id[batch.n_tokens] = 1\n",
|
||||
" batch.logits[batch.n_tokens] = True\n",
|
||||
"\n",
|
||||
" i_batch[i] = batch.n_tokens\n",
|
||||
" batch.n_tokens += 1\n",
|
||||
" n_decode += 1\n",
|
||||
" \n",
|
||||
" if batch.n_tokens == 0:\n",
|
||||
" break\n",
|
||||
"\n",
|
||||
" n_cur += 1\n",
|
||||
"\n",
|
||||
" if llama_cpp.llama_decode(ctx, batch) != 0:\n",
|
||||
" print(\"Error decoding\", flush=True)\n",
|
||||
" break\n",
|
||||
" print(n_cur)\n",
|
||||
" print(streams)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[' jumps over the lazy dog.\\n\\nI’m not sure if that’s the most famous sentence in the English language', ' jumped over the lazy dog.\\n\\nThe quick brown fox jumped over the lazy dog.\\n\\nThe quick brown fox']\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print(streams)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"llama_cpp.llama_batch_free(batch)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"llama_cpp.llama_free(ctx)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"llama_cpp.llama_free_model(model)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"llama_cpp.llama_backend_free()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": ".venv",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.5+"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
|
@ -402,6 +402,16 @@ class Llama:
|
|||
|
||||
assert self.ctx is not None
|
||||
|
||||
if verbose:
|
||||
self.batch = llama_cpp.llama_batch_init(
|
||||
self.n_batch, 0, 1
|
||||
)
|
||||
else:
|
||||
with suppress_stdout_stderr():
|
||||
self.batch = llama_cpp.llama_batch_init(
|
||||
self.n_batch, 0, 1
|
||||
)
|
||||
|
||||
if self.lora_path:
|
||||
if llama_cpp.llama_model_apply_lora_from_file(
|
||||
self.model,
|
||||
|
@ -554,19 +564,27 @@ class Llama:
|
|||
tokens: The list of tokens to evaluate.
|
||||
"""
|
||||
assert self.ctx is not None
|
||||
assert self.batch is not None
|
||||
n_ctx = self._n_ctx
|
||||
for i in range(0, len(tokens), self.n_batch):
|
||||
batch = tokens[i : min(len(tokens), i + self.n_batch)]
|
||||
n_past = min(n_ctx - len(batch), len(self._input_ids))
|
||||
n_tokens = len(batch)
|
||||
return_code = llama_cpp.llama_eval(
|
||||
llama_cpp.llama_kv_cache_seq_rm(self.ctx, -1, n_past, -1)
|
||||
self.batch.n_tokens = n_tokens
|
||||
for i in range(n_tokens):
|
||||
self.batch.token[i] = batch[i]
|
||||
self.batch.pos[i] = n_past + i
|
||||
self.batch.seq_id[i][0] = 0
|
||||
self.batch.n_seq_id[i] = 1
|
||||
self.batch.logits[i] = True if self.context_params.logits_all else False
|
||||
self.batch.logits[n_tokens - 1] = True
|
||||
return_code = llama_cpp.llama_decode(
|
||||
ctx=self.ctx,
|
||||
tokens=(llama_cpp.llama_token * len(batch))(*batch),
|
||||
n_tokens=n_tokens,
|
||||
n_past=n_past,
|
||||
batch=self.batch,
|
||||
)
|
||||
if return_code != 0:
|
||||
raise RuntimeError(f"llama_eval returned {return_code}")
|
||||
raise RuntimeError(f"llama_decode returned {return_code}")
|
||||
# Save tokens
|
||||
self.input_ids[self.n_tokens : self.n_tokens + n_tokens] = batch
|
||||
# Save logits
|
||||
|
@ -1662,7 +1680,11 @@ class Llama:
|
|||
)
|
||||
return self._convert_completion_to_chat(completion_or_chunks, stream=stream) # type: ignore
|
||||
|
||||
def _free_model(self, *, _lfree_model=llama_cpp._lib.llama_free_model, _free=llama_cpp._lib.llama_free):
|
||||
def _free_model(self, *, _lbatch_free=llama_cpp._lib.llama_batch_free, _lfree_model=llama_cpp._lib.llama_free_model, _free=llama_cpp._lib.llama_free):
|
||||
batch = getattr(self, 'batch', None)
|
||||
if batch is not None:
|
||||
_lbatch_free(batch)
|
||||
self.batch = None
|
||||
model = getattr(self, 'model', None)
|
||||
if model is not None:
|
||||
_lfree_model(model)
|
||||
|
|
|
@ -48,7 +48,7 @@ def test_llama_patch(monkeypatch):
|
|||
*[llama_cpp.c_float(0) for _ in range(n_vocab)]
|
||||
)
|
||||
|
||||
monkeypatch.setattr("llama_cpp.llama_cpp.llama_eval", mock_eval)
|
||||
monkeypatch.setattr("llama_cpp.llama_cpp.llama_decode", mock_eval)
|
||||
monkeypatch.setattr("llama_cpp.llama_cpp.llama_get_logits", mock_get_logits)
|
||||
|
||||
output_text = " jumps over the lazy dog."
|
||||
|
@ -138,7 +138,7 @@ def test_utf8(monkeypatch):
|
|||
*[llama_cpp.c_float(0) for _ in range(n_vocab)]
|
||||
)
|
||||
|
||||
monkeypatch.setattr("llama_cpp.llama_cpp.llama_eval", mock_eval)
|
||||
monkeypatch.setattr("llama_cpp.llama_cpp.llama_decode", mock_eval)
|
||||
monkeypatch.setattr("llama_cpp.llama_cpp.llama_get_logits", mock_get_logits)
|
||||
|
||||
output_text = "😀"
|
||||
|
|
Loading…
Reference in a new issue