| 5084 | } |
| 5085 | |
| 5086 | struct ggml_cgraph * build_opt() { |
| 5087 | struct ggml_cgraph * gf = ggml_new_graph_custom(ctx0, LLAMA_MAX_NODES, false); |
| 5088 | |
| 5089 | struct ggml_tensor * cur; |
| 5090 | struct ggml_tensor * pos; |
| 5091 | struct ggml_tensor * inpL; |
| 5092 | |
| 5093 | inpL = llm_build_inp_embd(ctx0, hparams, batch, model.tok_embd, cb); |
| 5094 | cb(inpL, "inp_embd", -1); |
| 5095 | |
| 5096 | struct ggml_tensor * inp_pos = ggml_new_tensor_1d(ctx0, GGML_TYPE_I32, n_tokens); |
| 5097 | cb(inp_pos, "inp_pos", -1); |
| 5098 | |
| 5099 | struct ggml_tensor * KQ_scale = ggml_new_tensor_1d(ctx0, GGML_TYPE_F32, 1); |
| 5100 | cb(KQ_scale, "KQ_scale", -1); |
| 5101 | |
| 5102 | struct ggml_tensor * KQ_mask = ggml_new_tensor_3d(ctx0, GGML_TYPE_F32, n_kv, n_tokens, 1); |
| 5103 | cb(KQ_mask, "KQ_mask", -1); |
| 5104 | |
| 5105 | pos = ggml_get_rows(ctx0, model.pos_embd, inp_pos); |
| 5106 | cb(pos, "pos_embd", -1); |
| 5107 | |
| 5108 | inpL = ggml_add(ctx0, inpL, pos); |
| 5109 | cb(inpL, "inpL", -1); |
| 5110 | |
| 5111 | for (int il = 0; il < n_layer; ++il) { |
| 5112 | cur = llm_build_norm(ctx0, inpL, hparams, |
| 5113 | model.layers[il].attn_norm, model.layers[il].attn_norm_b, |
| 5114 | LLM_NORM, cb, il); |
| 5115 | cb(cur, "attn_norm", il); |
| 5116 | |
| 5117 | // self-attention |
| 5118 | { |
| 5119 | struct ggml_tensor * Qcur = ggml_mul_mat(ctx0, model.layers[il].wq, cur); |
| 5120 | cb(Qcur, "Qcur", il); |
| 5121 | if (model.layers[il].bq) { |
| 5122 | Qcur = ggml_add(ctx0, Qcur, model.layers[il].bq); |
| 5123 | cb(Qcur, "Qcur", il); |
| 5124 | } |
| 5125 | |
| 5126 | struct ggml_tensor * Kcur = ggml_mul_mat(ctx0, model.layers[il].wk, cur); |
| 5127 | cb(Kcur, "Kcur", il); |
| 5128 | if (model.layers[il].bk) { |
| 5129 | Kcur = ggml_add(ctx0, Kcur, model.layers[il].bk); |
| 5130 | cb(Kcur, "Kcur", il); |
| 5131 | } |
| 5132 | |
| 5133 | struct ggml_tensor * Vcur = ggml_mul_mat(ctx0, model.layers[il].wv, cur); |
| 5134 | cb(Vcur, "Vcur", il); |
| 5135 | if (model.layers[il].bv) { |
| 5136 | Vcur = ggml_add(ctx0, Vcur, model.layers[il].bv); |
| 5137 | cb(Vcur, "Vcur", il); |
| 5138 | } |
| 5139 | |
| 5140 | Qcur = ggml_reshape_3d(ctx0, Qcur, n_embd_head, n_head, n_tokens); |
| 5141 | |
| 5142 | std::tie(k_cpy, v_cpy) = llm_build_kv_store(ctx0, hparams, kv_self, gf, Kcur, Vcur, n_ctx, n_tokens, kv_head, cb, il); |
| 5143 |
no test coverage detected