llama原始模型如何tokenize中文

加载分词器:

tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
model = LlamaForCausalLM.from_pretrained(model_name_or_path)

如图所示:

在这里插入图片描述

原理:

print('强'.encode('utf-8'))
print('终'.encode('utf-8'))
输出:
b'\xe5\xbc\xba'
b'\xe7\xbb\x88'
def han_to_hex_bytes(han):
    # 将汉字“强”转换为UTF-8编码的字节序列
    utf8_bytes = han.encode('utf-8')
    print(utf8_bytes)
    # 将每个字节的二进制表示形式转换为16进制表示形式
    hex_bytes = ' '.join([hex(b).zfill(2) for b in utf8_bytes])
    return hex_bytes  
print(han_to_hex_bytes('强'))
b'\xe5\xbc\xba'
0xe5 0xbc 0xba

我们需要知道"强"的UTF-8编码是什么。UTF-8是一种变长编码,每个字符的编码长度不同。"强"的UTF-8编码是0xE5 0xBC 0xBA。

我们需要用三个UTF-8字节来表示"强"。由于每个UTF-8字节是由8个二进制位组成的,因此三个UTF-8字节总共有24个二进制位。我们可以将"强"的UTF-8编码转换成二进制形式,然后将前三个字节的二进制位拼接起来,得到最终的表示"强"的三个UTF-8字节的二进制形式。

具体来说,"强"的UTF-8编码0xE5 0xBC 0xBA的二进制形式是:

11100101 10111100 10111010

我们将前三个字节的二进制位拼接起来,得到:

111001011011110010111010

你可能感兴趣的:(llama,数学建模)