mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-11-03 09:22:01 +00:00 
			
		
		
		
	cleanup useless code
This commit is contained in:
		
							
								
								
									
										114
									
								
								llama.cpp
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								llama.cpp
									
									
									
									
									
								
							@@ -1221,7 +1221,6 @@ static bool llama_kv_cache_init(
 | 
			
		||||
        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.v = ggml_new_tensor_1d(cache.ctx, wtype, n_elements);
 | 
			
		||||
    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_ctx       = hparams.n_ctx;
 | 
			
		||||
    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_gqa  = hparams.n_embd_gqa();
 | 
			
		||||
 | 
			
		||||
    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 int n_gpu_layers = model.n_gpu_layers;
 | 
			
		||||
 | 
			
		||||
    auto & buf_compute = lctx.buf_compute;
 | 
			
		||||
 | 
			
		||||
    struct ggml_init_params params = {
 | 
			
		||||
@@ -3517,56 +3510,18 @@ static struct ggml_cgraph * llm_build_starcoder(
 | 
			
		||||
 | 
			
		||||
    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) {
 | 
			
		||||
        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
 | 
			
		||||
            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);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            // Compute QKV
 | 
			
		||||
            cur = ggml_mul_mat(ctx0, model.layers[il].wqkv, cur);
 | 
			
		||||
            cur = ggml_add(ctx0, cur, model.layers[il].bqkv);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            // 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 * 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);
 | 
			
		||||
@@ -3580,8 +3535,6 @@ static struct ggml_cgraph * llm_build_starcoder(
 | 
			
		||||
                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 =
 | 
			
		||||
                ggml_permute(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)),
 | 
			
		||||
                        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 =
 | 
			
		||||
                ggml_permute(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),
 | 
			
		||||
                        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
 | 
			
		||||
            // [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)
 | 
			
		||||
            // [n_past + N, N, 12]
 | 
			
		||||
@@ -3649,18 +3588,13 @@ static struct ggml_cgraph * llm_build_starcoder(
 | 
			
		||||
            // [64, 12, N]
 | 
			
		||||
            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,
 | 
			
		||||
                    KQV_merged,
 | 
			
		||||
                    ggml_new_tensor_2d(ctx0, GGML_TYPE_F32, n_embd, N));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Projection
 | 
			
		||||
        {
 | 
			
		||||
            cur = ggml_mul_mat(ctx0, model.layers[il].wo, cur);
 | 
			
		||||
            cur = ggml_add(ctx0, cur, model.layers[il].bo);
 | 
			
		||||
        }
 | 
			
		||||
        cur = ggml_add(ctx0, ggml_mul_mat(ctx0, model.layers[il].wo, cur), model.layers[il].bo);
 | 
			
		||||
 | 
			
		||||
        // add the input
 | 
			
		||||
        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);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // fully connected
 | 
			
		||||
            // [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);
 | 
			
		||||
            cur = ggml_add(ctx0, ggml_mul_mat(ctx0, model.layers[il].w3, cur), model.layers[il].b3);
 | 
			
		||||
 | 
			
		||||
            // GELU activation
 | 
			
		||||
            // [3072, N]
 | 
			
		||||
            cur = ggml_gelu(ctx0, cur);
 | 
			
		||||
 | 
			
		||||
            // projection
 | 
			
		||||
            // [ 768, 3072] - model.layers[il].c_mlp_proj_w
 | 
			
		||||
            // [ 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);
 | 
			
		||||
            cur = ggml_add(ctx0, ggml_mul_mat(ctx0, model.layers[il].w2, cur), model.layers[il].b2);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        inpL = ggml_add(ctx0, cur, inpFF);
 | 
			
		||||
@@ -3716,16 +3626,12 @@ static struct ggml_cgraph * llm_build_starcoder(
 | 
			
		||||
 | 
			
		||||
	// norm
 | 
			
		||||
	{
 | 
			
		||||
		// [ 768, N]
 | 
			
		||||
		inpL = ggml_norm(ctx0, inpL, norm_eps);
 | 
			
		||||
 | 
			
		||||
		// 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);
 | 
			
		||||
		cur = ggml_norm(ctx0, inpL, norm_eps);
 | 
			
		||||
		cur = ggml_add(ctx0, ggml_mul(ctx0, cur, 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_build_forward_expand(gf, cur);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user