summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornopperl <54780682+nopperl@users.noreply.github.com>2024-05-07 19:39:43 +0000
committerGitHub <noreply@github.com>2024-05-07 21:39:43 +0200
commitb6aa6702030320a3d5fbc2508307af0d7c947e40 (patch)
tree9a6f9ec0bb711e3a94a83347dc7da6442e2aa0a2
parent260b7c65296fba0568eeb1ff05244ea0be206b54 (diff)
Fix OLMo HF to GGUF conversion (#6910)
-rwxr-xr-xconvert-hf-to-gguf-update.py1
-rwxr-xr-xconvert-hf-to-gguf.py8
-rw-r--r--llama.cpp4
-rw-r--r--llama.h1
4 files changed, 12 insertions, 2 deletions
diff --git a/convert-hf-to-gguf-update.py b/convert-hf-to-gguf-update.py
index 46a22546..ae901e24 100755
--- a/convert-hf-to-gguf-update.py
+++ b/convert-hf-to-gguf-update.py
@@ -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
diff --git a/convert-hf-to-gguf.py b/convert-hf-to-gguf.py
index f7441e6b..f65d9320 100755
--- a/convert-hf-to-gguf.py
+++ b/convert-hf-to-gguf.py
@@ -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
diff --git a/llama.cpp b/llama.cpp
index aeb5c08d..07fde361 100644
--- 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 e2fd53ab..d7f4bf8e 100644
--- 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