]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
Fix OLMo HF to GGUF conversion (#6910)
authornopperl <redacted>
Tue, 7 May 2024 19:39:43 +0000 (19:39 +0000)
committerGitHub <redacted>
Tue, 7 May 2024 19:39:43 +0000 (21:39 +0200)
convert-hf-to-gguf-update.py
convert-hf-to-gguf.py
llama.cpp
llama.h

index 46a225462a6130dd4447f6f8bdb29f6a5b9f9100..ae901e24c9a175e16dc207eb92026c3f4091450d 100755 (executable)
@@ -67,6 +67,7 @@ models = [
     {"name": "gpt-2",          "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/openai-community/gpt2", },
     {"name": "refact",         "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/smallcloudai/Refact-1_6-base", },
     {"name": "command-r",      "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/CohereForAI/c4ai-command-r-v01", },
+    {"name": "olmo",           "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/allenai/OLMo-1.7-7B-hf", },
 ]
 
 # make directory "models/tokenizers" if it doesn't exist
index f7441e6b8a8c5b47fc2ca4b62412b14e21836f89..f65d9320e9a1bdcfef5718bcdf21949984256759 100755 (executable)
@@ -314,6 +314,9 @@ class Model(ABC):
         if chkhsh == "9c2227e4dd922002fb81bde4fc02b0483ca4f12911410dee2255e4987644e3f8":
             # ref: https://huggingface.co/CohereForAI/c4ai-command-r-v01
             res = "command-r"
+        if chkhsh == "b6dc8df998e1cfbdc4eac8243701a65afe638679230920b50d6f17d81c098166":
+            # ref: https://huggingface.co/allenai/OLMo-1.7-7B-hf
+            res = "olmo"
 
         if res is None:
             logger.warning("\n")
@@ -2831,8 +2834,9 @@ class OlmoModel(Model):
     def set_gguf_parameters(self):
         super().set_gguf_parameters()
         self.gguf_writer.add_layer_norm_eps(1e-5)
-        if "clip_qkv" in self.hparams is not None:
-            self.gguf_writer.add_clamp_kqv(self.hparams["clip_qkv"])
+        clip_qkv = self.hparams.get("clip_qkv")
+        if clip_qkv is not None:
+            self.gguf_writer.add_clamp_kqv(clip_qkv)
 
     # Same as super class, but permuting q_proj, k_proj
     # Copied from: LlamaModel
index aeb5c08df64a5c4d5765828e7bb1730d74d553c2..07fde361951704cbb5b8bf5f9396be8d00f95cae 100644 (file)
--- a/llama.cpp
+++ b/llama.cpp
@@ -4389,6 +4389,9 @@ static void llm_load_vocab(
             } else if (
                 tokenizer_pre == "command-r") {
                 vocab.type_pre = LLAMA_VOCAB_PRE_TYPE_COMMAND_R;
+            } else if (
+                tokenizer_pre == "olmo") {
+                vocab.type_pre = LLAMA_VOCAB_PRE_TYPE_OLMO;
             } else {
                 throw std::runtime_error(format("unknown pre-tokenizer type: '%s'", tokenizer_pre.c_str()));
             }
@@ -12248,6 +12251,7 @@ struct llm_tokenizer_bpe {
                         });
                         break;
                     case LLAMA_VOCAB_PRE_TYPE_GPT2:
+                    case LLAMA_VOCAB_PRE_TYPE_OLMO:
                         word_collection = unicode_regex_split(text, {
                             "'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)",
                         });
diff --git a/llama.h b/llama.h
index e2fd53ab75e52a27ef1351522a2a96fbea564fef..d7f4bf8ea90d2d73885e4c201800fddb425c098c 100644 (file)
--- a/llama.h
+++ b/llama.h
@@ -81,6 +81,7 @@ extern "C" {
         LLAMA_VOCAB_PRE_TYPE_GPT2           = 7,
         LLAMA_VOCAB_PRE_TYPE_REFACT         = 8,
         LLAMA_VOCAB_PRE_TYPE_COMMAND_R      = 9,
+        LLAMA_VOCAB_PRE_TYPE_OLMO           = 10,
     };
 
     // note: these values should be synchronized with ggml_rope