June 2026
Intermediate
384 pages
4h 17m
Japanese
本章では、1章で実装したBPEを段階的に改善していきます。基本編の実装はわかりやすさを優先したものでしたが、処理速度に課題がありました。ここでは、アルゴリズムの改良、巨大ファイルの効率的な扱い、並列化といった最適化を順に適用します。これらの改善により、得られる結果は同じでも、処理速度は劇的に向上します。
1章のBPE実装を大きなテキストに適用すると、計算に時間がかかりすぎてしまいます。ここでは最初の改善として、同じ事前トークンをまとめて処理する「重複除去」の仕組みを導入します。
まずは、1章で実装したtrain_bpe関数を振り返ってみましょう。なお、count_pairs、merge、pretokenizeは1章の関数をそのまま使用します(コードは省略)。
deftrain_bpe(input_text,vocab_size,end_token="<|endoftext|>"):texts=input_text.split(end_token)ids_list=[]fortextintexts:forpretokeninpretokenize(text):ids_list.append(list(pretoken.encode("utf-8")))num_merges=vocab_size-256-1merge_rules={}forstepintqdm(range(num_merges),desc="Training BPE"):counts=defaultdict(int)foridsinids_list ...
Read now
Unlock full access