]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
convert : add BPE pre-tokenization for DBRX (#7132)
authorDAN™ <redacted>
Wed, 8 May 2024 10:43:23 +0000 (06:43 -0400)
committerGitHub <redacted>
Wed, 8 May 2024 10:43:23 +0000 (13:43 +0300)
* Add BPE pre-tokenization for DBRX.

* Add vocab GGUFs.

* Remove test.

* Remove GGUFs.

convert-hf-to-gguf-update.py
convert-hf-to-gguf.py
llama.cpp
llama.h

index a3fe67ee7de9c018169359582d7eb66abcbb6874..b51010983ab465c83364fd5768d96eeb17e8ab3d 100755 (executable)
@@ -68,6 +68,7 @@ models = [
     {"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", },
+    {"name": "dbrx",           "tokt": TOKENIZER_TYPE.BPE, "repo": "https://huggingface.co/databricks/dbrx-base", },
 ]
 
 # make directory "models/tokenizers" if it doesn't exist
index f65d9320e9a1bdcfef5718bcdf21949984256759..8b89575d5a2fc8baf9f2aae63800cdab5b8888b3 100755 (executable)
@@ -317,6 +317,9 @@ class Model(ABC):
         if chkhsh == "b6dc8df998e1cfbdc4eac8243701a65afe638679230920b50d6f17d81c098166":
             # ref: https://huggingface.co/allenai/OLMo-1.7-7B-hf
             res = "olmo"
+        if chkhsh == "a8594e3edff7c29c003940395316294b2c623e09894deebbc65f33f1515df79e":
+            # ref: https://huggingface.co/databricks/dbrx-instruct
+            res = "dbrx"
 
         if res is None:
             logger.warning("\n")
index 26e7a339183728ba70f382408f40e7bc25da9bb0..331c9d47243b33542d8d8a0df98516598fbd0a06 100644 (file)
--- a/llama.cpp
+++ b/llama.cpp
@@ -4394,6 +4394,9 @@ static void llm_load_vocab(
             } else if (
                 tokenizer_pre == "olmo") {
                 vocab.type_pre = LLAMA_VOCAB_PRE_TYPE_OLMO;
+            } else if (
+                tokenizer_pre == "dbrx") {
+                vocab.type_pre = LLAMA_VOCAB_PRE_TYPE_DBRX;
             } else {
                 throw std::runtime_error(format("unknown pre-tokenizer type: '%s'", tokenizer_pre.c_str()));
             }
@@ -12200,6 +12203,7 @@ struct llm_tokenizer_bpe {
             case LLAMA_VOCAB_TYPE_BPE:
                 switch (vocab.type_pre) {
                     case LLAMA_VOCAB_PRE_TYPE_LLAMA3:
+                    case LLAMA_VOCAB_PRE_TYPE_DBRX:
                         word_collection = unicode_regex_split(text, {
                             // original regex from tokenizer.json
                             //"(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?\\p{L}+|\\p{N}{1,3}| ?[^\\s\\p{L}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
diff --git a/llama.h b/llama.h
index 5761cacf4d7f41bd8a9db9d901ef31b3c0e1b574..388839f3995e11169d160f27cc6c1f22e1d3c0e9 100644 (file)
--- a/llama.h
+++ b/llama.h
@@ -82,6 +82,7 @@ extern "C" {
         LLAMA_VOCAB_PRE_TYPE_REFACT         = 8,
         LLAMA_VOCAB_PRE_TYPE_COMMAND_R      = 9,
         LLAMA_VOCAB_PRE_TYPE_OLMO           = 10,
+        LLAMA_VOCAB_PRE_TYPE_DBRX           = 11,
     };
 
     // note: these values should be synchronized with ggml_rope