File size: 1,230 Bytes
42905ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
"""Correct HF->GGUF f16 conversion for the rebuilt v4 ByteLevel tokenizer:
force pre='gpt-2' (verified full token parity) instead of the wrong 'sarvam-moe'.
Keeps the BYTE-retype patch for <0xXX> byte-fallback tokens."""
import os, sys, re, gguf
LL = "/workspace/llm/llama.cpp"
SRC = "/workspace/llm/kos-v4-conv"
OUT = "/workspace/llm/kos-v4-gguf/kosv4-f16.gguf"
sys.path.insert(0, LL); os.chdir(LL)
from conversion.base import TextModel

def _pre(self, tokenizer):
    return "gpt-2"
TextModel.get_vocab_base_pre = _pre

_byte = re.compile(r"^<0x[0-9A-Fa-f]{2}>$")
_orig_base = TextModel.get_vocab_base
def _base_patched(self):
    tokens, toktypes, tokpre = _orig_base(self)
    n = 0
    for i, t in enumerate(tokens):
        if _byte.match(t) and toktypes[i] != gguf.TokenType.BYTE:
            toktypes[i] = gguf.TokenType.BYTE; n += 1
    if n: print(f"[patch] retyped {n} byte-fallback tokens as BYTE", file=sys.stderr)
    return tokens, toktypes, tokpre
TextModel.get_vocab_base = _base_patched

import convert_hf_to_gguf as conv
sys.argv = ["convert_hf_to_gguf.py", "--outfile", OUT, "--outtype", "f16", SRC]
try:
    conv.main()
except SystemExit as e:
    if e.code not in (None, 0): raise
print("[done] wrote", OUT)