划重点
01HuggingFace的研究者探讨了Tokenization对语言模型数学能力的影响,尤其是算术能力。
02研究发现,单位数tokenization在算术问题上的性能明显优于其他方法。
03然而,纯基于BPE的tokenizer在算术运算中表现不佳,可能原因是数字分组方式缺乏结构。
04实验结果显示,与使用默认L2R token数据训练相比,使用R2L token数据训练的模型取得了显著改进。
05对于算术运算,建议根据问题类型选择合适的tokenization策略,以提高LLM在数学任务上的表现。
以上内容由腾讯混元大模型生成,仅供参考
2019 年问世的 GPT-2,其 tokenizer 使用了 BPE 算法,这种算法至今仍很常见,但这种方式是最优的吗?来自 HuggingFace 的一篇文章给出了解释。
from transformers import AutoTokenizer
from tokenizers import pre_tokenizers, Regex
# Initialize all tokenizers
tokenizer = AutoTokenizer.from_pretrained ("meta-llama/Meta-Llama-3-8B")
# Add an extra step to the existing pre-tokenizer steps
tokenizer._tokenizer.pre_tokenizer = pre_tokenizers.Sequence (
[
# Added step: split by R2L digits
pre_tokenizers.Split (pattern = Regex (r"\d {1,3}(?=(\d {3})*\b)"),
behavior="isolated", invert = False),
# Below: Existing steps from Llama 3's tokenizer
pre_tokenizers.Split (pattern=Regex (r"(?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+"),
behavior="isolated", invert=False),
pre_tokenizers.ByteLevel (add_prefix_space=False, trim_offsets=True, use_regex=False)
]
)
print (tokenizer.tokenize ("42069")) # [42, 069]
查看原图 434K