🦔

huggingface LLM model にある merges.txt のメモ

2024/10/05に公開

merges.txt is 何?

GPT2Tokenizer(BPE) とかで使われている

https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt2/tokenization_gpt2.py

https://medium.com/@sharanharsoor/building-a-transformer-model-from-scratch-introducing-kantaibert-99d40690e108

merges.txt : Byte pair encoding のマージリスト(substring token リスト)
vocab.json : substring へのインデックス

BPE tokenizer ではこれら二つのファイルを読んで BPE tokenizer を construct する.

Fast tokenizer

最近の transformers(ややこしい名前)では tokenizer.json に merges.txt と vocab.json の内容が含まれており, FastTokenizer を使う場合は, tokenizer.json を読むようになっている.

https://huggingface.co/docs/transformers/en/fast_tokenizers

https://github.com/huggingface/transformers/blob/0d1692a49bc1d70d72c99ac814773bcc2d3a98be/src/transformers/tokenization_utils_fast.py#L53

たとえば GPT2Tokenizer(BPE tokenizer) ベースの Qwen の tokenizer.json には vocab と merges の内容が含まれている

https://huggingface.co/Qwen/Qwen1.5-7B/blob/main/tokenizer.json

内容は同じなので, tokenizer.json がある場合はこれを読むようにするでよいでしょう.

Discussion