mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-27 03:44:35 +00:00
cleanup useless code
This commit is contained in:
parent
a1cf66ea94
commit
6c353dc7c2
114
llama.cpp
114
llama.cpp
@ -1221,7 +1221,6 @@ static bool llama_kv_cache_init(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "n_embed: %d n_layer: %d n_ctx: %d n_elements: %d\n", n_embd, n_layer, n_ctx, n_elements);
|
|
||||||
cache.k = ggml_new_tensor_1d(cache.ctx, wtype, n_elements);
|
cache.k = ggml_new_tensor_1d(cache.ctx, wtype, n_elements);
|
||||||
cache.v = ggml_new_tensor_1d(cache.ctx, wtype, n_elements);
|
cache.v = ggml_new_tensor_1d(cache.ctx, wtype, n_elements);
|
||||||
ggml_set_name(cache.k, "cache_k");
|
ggml_set_name(cache.k, "cache_k");
|
||||||
@ -3447,18 +3446,12 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
const int64_t n_layer = hparams.n_layer;
|
const int64_t n_layer = hparams.n_layer;
|
||||||
const int64_t n_ctx = hparams.n_ctx;
|
const int64_t n_ctx = hparams.n_ctx;
|
||||||
const int64_t n_head = hparams.n_head;
|
const int64_t n_head = hparams.n_head;
|
||||||
const int64_t n_head_kv = hparams.n_head_kv;
|
|
||||||
const int64_t n_embd_head = hparams.n_embd_head();
|
const int64_t n_embd_head = hparams.n_embd_head();
|
||||||
const int64_t n_embd_gqa = hparams.n_embd_gqa();
|
|
||||||
|
|
||||||
GGML_ASSERT(n_embd_head == hparams.n_rot);
|
GGML_ASSERT(n_embd_head == hparams.n_rot);
|
||||||
|
|
||||||
const float freq_base = hparams.rope_freq_base;
|
|
||||||
const float freq_scale = hparams.rope_freq_scale;
|
|
||||||
const float norm_eps = hparams.f_norm_eps;
|
const float norm_eps = hparams.f_norm_eps;
|
||||||
|
|
||||||
const int n_gpu_layers = model.n_gpu_layers;
|
|
||||||
|
|
||||||
auto & buf_compute = lctx.buf_compute;
|
auto & buf_compute = lctx.buf_compute;
|
||||||
|
|
||||||
struct ggml_init_params params = {
|
struct ggml_init_params params = {
|
||||||
@ -3517,56 +3510,18 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
|
|
||||||
inpL = ggml_add(ctx0, token, position);
|
inpL = ggml_add(ctx0, token, position);
|
||||||
|
|
||||||
const int i_gpu_start = n_layer - n_gpu_layers;
|
|
||||||
(void) i_gpu_start;
|
|
||||||
|
|
||||||
// offload functions set the tensor output backend to GPU
|
|
||||||
// tensors are GPU-accelerated if any input or the output has been offloaded
|
|
||||||
//
|
|
||||||
// with the low VRAM option VRAM scratch is disabled in llama_load_model_internal
|
|
||||||
// in that case ggml_cuda_assign_buffers has no effect
|
|
||||||
offload_func_t offload_func_nr = llama_nop; // nr = non-repeating
|
|
||||||
offload_func_t offload_func_kq = llama_nop;
|
|
||||||
offload_func_t offload_func_v = llama_nop;
|
|
||||||
|
|
||||||
#ifdef GGML_USE_CUBLAS
|
|
||||||
if (n_gpu_layers > n_layer) {
|
|
||||||
offload_func_nr = ggml_cuda_assign_buffers_no_alloc;
|
|
||||||
}
|
|
||||||
if (n_gpu_layers > n_layer + 1) {
|
|
||||||
offload_func_v = ggml_cuda_assign_buffers_no_alloc;
|
|
||||||
}
|
|
||||||
if (n_gpu_layers > n_layer + 2) {
|
|
||||||
offload_func_kq = ggml_cuda_assign_buffers_no_alloc;
|
|
||||||
}
|
|
||||||
#endif // GGML_USE_CUBLAS
|
|
||||||
|
|
||||||
#define PRINT_SHAPE(x) fprintf(stderr, "%d %s: (%s)\n", __LINE__, #x, llama_format_tensor_shape(x).c_str())
|
|
||||||
for (int il = 0; il < n_layer; ++il) {
|
for (int il = 0; il < n_layer; ++il) {
|
||||||
offload_func_t offload_func = llama_nop;
|
|
||||||
|
|
||||||
#ifdef GGML_USE_CUBLAS
|
|
||||||
if (il >= i_gpu_start) {
|
|
||||||
offload_func = ggml_cuda_assign_buffers_no_alloc;
|
|
||||||
}
|
|
||||||
#endif // GGML_USE_CUBLAS
|
|
||||||
|
|
||||||
{
|
{
|
||||||
// Norm
|
// Norm
|
||||||
cur = ggml_norm(ctx0, inpL, norm_eps);
|
cur = ggml_norm(ctx0, inpL, norm_eps);
|
||||||
|
|
||||||
cur = ggml_add(ctx0, ggml_mul(ctx0, cur, model.layers[il].attn_norm), model.layers[il].attn_norm_b);
|
cur = ggml_add(ctx0, ggml_mul(ctx0, cur, model.layers[il].attn_norm), model.layers[il].attn_norm_b);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
// Compute QKV
|
|
||||||
cur = ggml_mul_mat(ctx0, model.layers[il].wqkv, cur);
|
|
||||||
cur = ggml_add(ctx0, cur, model.layers[il].bqkv);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
// Self Attention
|
// Self Attention
|
||||||
|
cur = ggml_add(ctx0, ggml_mul_mat(ctx0, model.layers[il].wqkv, cur), model.layers[il].bqkv);
|
||||||
|
|
||||||
struct ggml_tensor * Qcur = ggml_view_2d(ctx0, cur, n_embd, N, cur->nb[1], 0*sizeof(float)*n_embd);
|
struct ggml_tensor * Qcur = ggml_view_2d(ctx0, cur, n_embd, N, cur->nb[1], 0*sizeof(float)*n_embd);
|
||||||
struct ggml_tensor * Kcur = ggml_view_2d(ctx0, cur, n_embd, N, cur->nb[1], 1*sizeof(float)*n_embd);
|
struct ggml_tensor * Kcur = ggml_view_2d(ctx0, cur, n_embd, N, cur->nb[1], 1*sizeof(float)*n_embd);
|
||||||
struct ggml_tensor * Vcur = ggml_view_2d(ctx0, cur, n_embd, N, cur->nb[1], 2*sizeof(float)*n_embd);
|
struct ggml_tensor * Vcur = ggml_view_2d(ctx0, cur, n_embd, N, cur->nb[1], 2*sizeof(float)*n_embd);
|
||||||
@ -3580,8 +3535,6 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
ggml_build_forward_expand(gf, ggml_cpy(ctx0, Vcur, v));
|
ggml_build_forward_expand(gf, ggml_cpy(ctx0, Vcur, v));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Q = Qcur.contiguous().view(n_embd/n_head, n_head, N).permute(0, 2, 1, 3)
|
|
||||||
// [64, N, 12]
|
|
||||||
struct ggml_tensor * Q =
|
struct ggml_tensor * Q =
|
||||||
ggml_permute(ctx0,
|
ggml_permute(ctx0,
|
||||||
ggml_cpy(ctx0,
|
ggml_cpy(ctx0,
|
||||||
@ -3589,8 +3542,6 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
ggml_new_tensor_3d(ctx0, GGML_TYPE_F32, n_embd/n_head, n_head, N)),
|
ggml_new_tensor_3d(ctx0, GGML_TYPE_F32, n_embd/n_head, n_head, N)),
|
||||||
0, 2, 1, 3);
|
0, 2, 1, 3);
|
||||||
|
|
||||||
// K = Kmem.view(n_embd/n_head, n_head, n_past + N).permute(0, 2, 1, 3)
|
|
||||||
// [64, n_past + N, 12]
|
|
||||||
struct ggml_tensor * K =
|
struct ggml_tensor * K =
|
||||||
ggml_permute(ctx0,
|
ggml_permute(ctx0,
|
||||||
ggml_reshape_3d(ctx0,
|
ggml_reshape_3d(ctx0,
|
||||||
@ -3598,21 +3549,9 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
n_embd/n_head, n_head, n_past + N),
|
n_embd/n_head, n_head, n_past + N),
|
||||||
0, 2, 1, 3); //TODO: need to be tiled
|
0, 2, 1, 3); //TODO: need to be tiled
|
||||||
|
|
||||||
// GG: flash attention
|
|
||||||
//struct ggml_tensor * V =
|
|
||||||
// ggml_cpy(ctx0,
|
|
||||||
// ggml_permute(ctx0,
|
|
||||||
// ggml_reshape_3d(ctx0,
|
|
||||||
// ggml_view_1d(ctx0, kv_self.v, (n_past + N)*n_embd, il*n_ctx*ggml_element_size(kv_self.v)*n_embd),
|
|
||||||
// n_embd/n_head, n_head, n_past + N),
|
|
||||||
// 1, 2, 0, 3),
|
|
||||||
// ggml_new_tensor_3d(ctx0, GGML_TYPE_F32, n_past + N, n_embd/n_head, n_head));
|
|
||||||
|
|
||||||
//struct ggml_tensor * KQV = ggml_flash_attn(ctx0, Q, K, V, true);
|
|
||||||
|
|
||||||
// K * Q
|
// K * Q
|
||||||
// [n_past + N, N, 12]
|
// [n_past + N, N, 12]
|
||||||
struct ggml_tensor * KQ = ggml_mul_mat(ctx0, K, Q); //TODO: check if it broadcasts
|
struct ggml_tensor * KQ = ggml_mul_mat(ctx0, K, Q);
|
||||||
|
|
||||||
// KQ_scaled = KQ / sqrt(n_embd/n_head)
|
// KQ_scaled = KQ / sqrt(n_embd/n_head)
|
||||||
// [n_past + N, N, 12]
|
// [n_past + N, N, 12]
|
||||||
@ -3649,18 +3588,13 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
// [64, 12, N]
|
// [64, 12, N]
|
||||||
struct ggml_tensor * KQV_merged = ggml_permute(ctx0, KQV, 0, 2, 1, 3);
|
struct ggml_tensor * KQV_merged = ggml_permute(ctx0, KQV, 0, 2, 1, 3);
|
||||||
|
|
||||||
// cur = KQV_merged.contiguous().view(n_embd, N)
|
|
||||||
// [768, N]
|
|
||||||
cur = ggml_cpy(ctx0,
|
cur = ggml_cpy(ctx0,
|
||||||
KQV_merged,
|
KQV_merged,
|
||||||
ggml_new_tensor_2d(ctx0, GGML_TYPE_F32, n_embd, N));
|
ggml_new_tensor_2d(ctx0, GGML_TYPE_F32, n_embd, N));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Projection
|
// Projection
|
||||||
{
|
cur = ggml_add(ctx0, ggml_mul_mat(ctx0, model.layers[il].wo, cur), model.layers[il].bo);
|
||||||
cur = ggml_mul_mat(ctx0, model.layers[il].wo, cur);
|
|
||||||
cur = ggml_add(ctx0, cur, model.layers[il].bo);
|
|
||||||
}
|
|
||||||
|
|
||||||
// add the input
|
// add the input
|
||||||
cur = ggml_add(ctx0, cur, inpL);
|
cur = ggml_add(ctx0, cur, inpL);
|
||||||
@ -3678,37 +3612,13 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
cur = ggml_add(ctx0, ggml_mul(ctx0, cur, model.layers[il].ffn_norm), model.layers[il].ffn_norm_b);
|
cur = ggml_add(ctx0, ggml_mul(ctx0, cur, model.layers[il].ffn_norm), model.layers[il].ffn_norm_b);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fully connected
|
cur = ggml_add(ctx0, ggml_mul_mat(ctx0, model.layers[il].w3, cur), model.layers[il].b3);
|
||||||
// [3072, 768] - model.layers[il].c_mlp_fc_w
|
|
||||||
// [3072, 1] - model.layers[il].c_mlp_fc_b
|
|
||||||
// [ 768, N] - cur (in)
|
|
||||||
// [3072, N] - cur (out)
|
|
||||||
//
|
|
||||||
// cur = fc_w*cur + fc_b
|
|
||||||
// [3072, N]
|
|
||||||
cur = ggml_mul_mat(ctx0,
|
|
||||||
model.layers[il].w3,
|
|
||||||
cur);
|
|
||||||
|
|
||||||
cur = ggml_add(ctx0, cur, model.layers[il].b3);
|
|
||||||
|
|
||||||
// GELU activation
|
// GELU activation
|
||||||
// [3072, N]
|
|
||||||
cur = ggml_gelu(ctx0, cur);
|
cur = ggml_gelu(ctx0, cur);
|
||||||
|
|
||||||
// projection
|
// projection
|
||||||
// [ 768, 3072] - model.layers[il].c_mlp_proj_w
|
cur = ggml_add(ctx0, ggml_mul_mat(ctx0, model.layers[il].w2, cur), model.layers[il].b2);
|
||||||
// [ 768, 1] - model.layers[il].c_mlp_proj_b
|
|
||||||
// [3072, N] - cur (in)
|
|
||||||
// [ 768, N] - cur (out)
|
|
||||||
//
|
|
||||||
// cur = proj_w*cur + proj_b
|
|
||||||
// [768, N]
|
|
||||||
cur = ggml_mul_mat(ctx0,
|
|
||||||
model.layers[il].w2,
|
|
||||||
cur);
|
|
||||||
|
|
||||||
cur = ggml_add(ctx0, cur, model.layers[il].b2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inpL = ggml_add(ctx0, cur, inpFF);
|
inpL = ggml_add(ctx0, cur, inpFF);
|
||||||
@ -3716,16 +3626,12 @@ static struct ggml_cgraph * llm_build_starcoder(
|
|||||||
|
|
||||||
// norm
|
// norm
|
||||||
{
|
{
|
||||||
// [ 768, N]
|
cur = ggml_norm(ctx0, inpL, norm_eps);
|
||||||
inpL = ggml_norm(ctx0, inpL, norm_eps);
|
cur = ggml_add(ctx0, ggml_mul(ctx0, cur, model.output_norm), model.output_norm_b);
|
||||||
|
|
||||||
// inpL = ln_f_g*inpL + ln_f_b
|
|
||||||
// [ 768, N]
|
|
||||||
inpL = ggml_add(ctx0, ggml_mul(ctx0, inpL, model.output_norm), model.output_norm_b);
|
|
||||||
}
|
}
|
||||||
ggml_set_name(inpL, "result_norm");
|
ggml_set_name(cur, "result_norm");
|
||||||
|
|
||||||
cur = ggml_mul_mat(ctx0, model.output, inpL);
|
cur = ggml_mul_mat(ctx0, model.output, cur);
|
||||||
ggml_set_name(cur, "result_output");
|
ggml_set_name(cur, "result_output");
|
||||||
|
|
||||||
ggml_build_forward_expand(gf, cur);
|
ggml_build_forward_expand(gf, cur);
|
||||||
|
Loading…
Reference in New Issue
Block a user