mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-11-03 09:22:01 +00:00 
			
		
		
		
	gptneox-main.cpp : fixes
This commit is contained in:
		@@ -391,6 +391,7 @@ bool gpt_neox_model_load(const std::string & fname, gpt_neox_model & model, gpt2
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        int keyidx;
 | 
					        int keyidx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // check model architecture kv
 | 
				
			||||||
        keyidx = gguf_find_key(ggufctx, "general.architecture");
 | 
					        keyidx = gguf_find_key(ggufctx, "general.architecture");
 | 
				
			||||||
        if (keyidx != -1) {
 | 
					        if (keyidx != -1) {
 | 
				
			||||||
            if ( strcmp(gguf_get_val_str(ggufctx, keyidx), "gptneox") != 0) {
 | 
					            if ( strcmp(gguf_get_val_str(ggufctx, keyidx), "gptneox") != 0) {
 | 
				
			||||||
@@ -492,6 +493,9 @@ bool gpt_neox_model_load(const std::string & fname, gpt_neox_model & model, gpt2
 | 
				
			|||||||
            vocab.token_to_id[word] = i;
 | 
					            vocab.token_to_id[word] = i;
 | 
				
			||||||
            vocab.id_to_token[i] = word;
 | 
					            vocab.id_to_token[i] = word;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if( vocab.id_to_token[i] == "\n" ) {
 | 
				
			||||||
 | 
					                vocab.linefeed_id = i;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        std::vector<std::pair<std::string, std::string>> bpe_merges;
 | 
					        std::vector<std::pair<std::string, std::string>> bpe_merges;
 | 
				
			||||||
@@ -514,17 +518,18 @@ bool gpt_neox_model_load(const std::string & fname, gpt_neox_model & model, gpt2
 | 
				
			|||||||
        vocab.populate_bpe_ranks(bpe_merges);
 | 
					        vocab.populate_bpe_ranks(bpe_merges);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.bos_token_id"); if( keyidx != -1 ) {       vocab.special_bos_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); vocab.special_have_bos=true; }
 | 
					        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.bos_token_id"); if( keyidx != -1 ) {       vocab.special_bos_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); }
 | 
				
			||||||
        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.eos_token_id"); if( keyidx != -1 ) {       vocab.special_eos_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); vocab.special_have_eos=true; }
 | 
					        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.eos_token_id"); if( keyidx != -1 ) {       vocab.special_eos_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); }
 | 
				
			||||||
        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.unknown_token_id"); if( keyidx != -1 ) {   vocab.special_unk_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); vocab.special_have_unk=true; }
 | 
					        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.unknown_token_id"); if( keyidx != -1 ) {   vocab.special_unk_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); }
 | 
				
			||||||
        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.separator_token_id"); if( keyidx != -1 ) { vocab.special_sep_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); vocab.special_have_sep=true; }
 | 
					        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.separator_token_id"); if( keyidx != -1 ) { vocab.special_sep_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); }
 | 
				
			||||||
        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.padding_token_id"); if( keyidx != -1 ) {   vocab.special_pad_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); vocab.special_have_pad=true; }
 | 
					        keyidx = gguf_find_key(ggufctx, "tokenizer.ggml.padding_token_id"); if( keyidx != -1 ) {   vocab.special_pad_id = (int32_t)gguf_get_val_u32(ggufctx, keyidx); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if( vocab.special_have_bos ) { fprintf(stdout, "%s: bos token = %d '%s'\n", __func__, vocab.special_bos_id, vocab.id_to_token[vocab.special_bos_id].c_str() ); }
 | 
					        if( vocab.special_bos_id != -1 ) { fprintf(stdout, "%s: BOS token = %d '%s'\n", __func__, vocab.special_bos_id, vocab.id_to_token[vocab.special_bos_id].c_str() ); }
 | 
				
			||||||
        if( vocab.special_have_eos ) { fprintf(stdout, "%s: eos token = %d '%s'\n", __func__, vocab.special_eos_id, vocab.id_to_token[vocab.special_eos_id].c_str() ); }
 | 
					        if( vocab.special_eos_id != -1 ) { fprintf(stdout, "%s: EOS token = %d '%s'\n", __func__, vocab.special_eos_id, vocab.id_to_token[vocab.special_eos_id].c_str() ); }
 | 
				
			||||||
        if( vocab.special_have_unk ) { fprintf(stdout, "%s: unk token = %d '%s'\n", __func__, vocab.special_unk_id, vocab.id_to_token[vocab.special_unk_id].c_str() ); }
 | 
					        if( vocab.special_unk_id != -1 ) { fprintf(stdout, "%s: UNK token = %d '%s'\n", __func__, vocab.special_unk_id, vocab.id_to_token[vocab.special_unk_id].c_str() ); }
 | 
				
			||||||
        if( vocab.special_have_sep ) { fprintf(stdout, "%s: sep token = %d '%s'\n", __func__, vocab.special_sep_id, vocab.id_to_token[vocab.special_sep_id].c_str() ); }
 | 
					        if( vocab.special_sep_id != -1 ) { fprintf(stdout, "%s: SEP token = %d '%s'\n", __func__, vocab.special_sep_id, vocab.id_to_token[vocab.special_sep_id].c_str() ); }
 | 
				
			||||||
        if( vocab.special_have_pad ) { fprintf(stdout, "%s: pad token = %d '%s'\n", __func__, vocab.special_pad_id, vocab.id_to_token[vocab.special_pad_id].c_str() ); }
 | 
					        if( vocab.special_pad_id != -1 ) { fprintf(stdout, "%s: PAD token = %d '%s'\n", __func__, vocab.special_pad_id, vocab.id_to_token[vocab.special_pad_id].c_str() ); }
 | 
				
			||||||
 | 
					        if( vocab.linefeed_id    != -1 ) { fprintf(stdout, "%s: LF token  = %d\n",      __func__, vocab.linefeed_id ); }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -656,6 +661,7 @@ ggml_tensor * gpt_neox_ff(
 | 
				
			|||||||
        const gpt_neox_block &block,
 | 
					        const gpt_neox_block &block,
 | 
				
			||||||
        ggml_context * ctx0,
 | 
					        ggml_context * ctx0,
 | 
				
			||||||
        ggml_tensor * inp) {
 | 
					        ggml_tensor * inp) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ggml_tensor * cur = ggml_norm(ctx0, inp);
 | 
					    ggml_tensor * cur = ggml_norm(ctx0, inp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cur = ggml_add(ctx0, ggml_mul(ctx0, ggml_repeat(ctx0, block.ln_2_g, cur), cur), ggml_repeat(ctx0, block.ln_2_b, cur));
 | 
					    cur = ggml_add(ctx0, ggml_mul(ctx0, ggml_repeat(ctx0, block.ln_2_g, cur), cur), ggml_repeat(ctx0, block.ln_2_b, cur));
 | 
				
			||||||
@@ -1053,7 +1059,7 @@ int main(int argc, char ** argv) {
 | 
				
			|||||||
        fflush(stdout);
 | 
					        fflush(stdout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // end of text token
 | 
					        // end of text token
 | 
				
			||||||
        if (vocab.special_have_eos && embd.back() == vocab.special_eos_id) {
 | 
					        if (vocab.special_eos_id != -1 && embd.back() == vocab.special_eos_id) {
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user