From 3d2907d208ea3324517972d4cc3964c0959d6f1a Mon Sep 17 00:00:00 2001 From: Concedo <39025047+LostRuins@users.noreply.github.com> Date: Sun, 2 Jul 2023 18:28:09 +0800 Subject: [PATCH] make gptneox and gptj work with extended context too --- otherarch/gptj_v3.cpp | 6 ++++-- otherarch/neox_v3.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/otherarch/gptj_v3.cpp b/otherarch/gptj_v3.cpp index d10d8172b7f70..13f39b6bfc682 100644 --- a/otherarch/gptj_v3.cpp +++ b/otherarch/gptj_v3.cpp @@ -68,6 +68,8 @@ ModelLoadResult gptj_model_load(const std::string & fname, gptj_model & model, g printf("%s: ftype = %d\n", __func__, hparams.ftype); printf("%s: qntvr = %d\n", __func__, qntvr); + hparams.n_ctx = std::max(origmaxctx,hparams.n_ctx); + hparams.ftype %= GGML_QNT_VERSION_FACTOR; } @@ -474,8 +476,8 @@ bool gptj_eval( // self-attention { - struct ggml_tensor * Qcur = ggml_rope_inplace(ctx0, ggml_reshape_3d(ctx0, ggml_mul_mat(ctx0, model.layers[il].c_attn_q_proj_w, cur), n_embd/n_head, n_head, N), n_past, n_rot, 0, 0); - struct ggml_tensor * Kcur = ggml_rope_inplace(ctx0, ggml_reshape_3d(ctx0, ggml_mul_mat(ctx0, model.layers[il].c_attn_k_proj_w, cur), n_embd/n_head, n_head, N), n_past, n_rot, 0, 0); + struct ggml_tensor * Qcur = ggml_rope_inplace(ctx0, ggml_reshape_3d(ctx0, ggml_mul_mat(ctx0, model.layers[il].c_attn_q_proj_w, cur), n_embd/n_head, n_head, N), n_past, n_rot, 0, n_ctx); + struct ggml_tensor * Kcur = ggml_rope_inplace(ctx0, ggml_reshape_3d(ctx0, ggml_mul_mat(ctx0, model.layers[il].c_attn_k_proj_w, cur), n_embd/n_head, n_head, N), n_past, n_rot, 0, n_ctx); // store key and value to memory { diff --git a/otherarch/neox_v3.cpp b/otherarch/neox_v3.cpp index 3eaeccede4b4d..6df5d534bda39 100644 --- a/otherarch/neox_v3.cpp +++ b/otherarch/neox_v3.cpp @@ -68,6 +68,8 @@ ModelLoadResult gpt_neox_model_load(const std::string & fname, gpt_neox_model & printf("%s: ftype = %d\n", __func__, hparams.ftype); printf("%s: qntvr = %d\n", __func__, qntvr); + hparams.n_ctx = std::max(origmaxctx,hparams.n_ctx); + hparams.ftype %= GGML_QNT_VERSION_FACTOR; } @@ -502,8 +504,8 @@ bool gpt_neox_eval( struct ggml_tensor * Vcur = ggml_cont(ctx0, ggml_view_3d(ctx0, cur, n_embd/n_head, n_head, N, cur->nb[1]/n_head, cur->nb[1], 2*sizeof(float)*n_embd/n_head)); // using mode = 2 for GPT-NeoX mode - Qcur = ggml_rope_inplace(ctx0, Qcur, n_past, n_rot, 2, 0); - Kcur = ggml_rope_inplace(ctx0, Kcur, n_past, n_rot, 2, 0); + Qcur = ggml_rope_inplace(ctx0, Qcur, n_past, n_rot, 2, n_ctx); + Kcur = ggml_rope_inplace(ctx0, Kcur, n_past, n_rot, 2, n_ctx); // store key and value to memory {