テキストのトークン数を確認する方法:LLMチューニングの基礎知識

LLM(大規模言語モデル)のチューニングでは、トレーニングデータの品質だけでなく、トークン数が重要な役割を果たします。トークン数を把握する事で、データの適切な量を判断し、過学習を防ぐことが可能になります。この記事では、トークン数を確認するための主要なツールとその使い方を解説します。
トークン数を確認する理由
トークンとは、テキストを小さな単位に分割したものです。たとえば、単語や句読点、記号などが該当します。LLMのトレーニングでは、以下のような理由でトークン数を知ることが重要です。
- 適切なトレーニング量の判断:トークン数が少ないとモデルが十分な学習を行えず、性能が低下する可能性があります。一方、データが多すぎると計算資源を無駄に消費します。
- モデルの特性に合わせたチューニング:モデルごとに最適なトークン数が異なるため、トークン化に対応したツールを使うことで効率的な学習を実現できます。
トークン数を確認する手軽な方法
以下では、トークン数を確認するための主要な方法を紹介します。それぞれのツールは特定の用途やモデルに適しているため、目的に応じて使い分けると良いでしょう。
1. tiktoken
特徴
tiktokenはOpenAIが提供するトークナイザーで、GPTシリーズ向けに設計されています。モデルのエンコーディング設定を変更することで、異なるモデルに対応可能です。
使用方法
インストール
pip install tiktoken
ソースコード
import tiktoken def count_tokens(text): tokenizer = tiktoken.get_encoding("o200k_base") # gpt-4oモデル向け tokens = tokenizer.encode(text) return len(tokens) # テキストファイルを読み込みトークン数を確認 input_file_path = './text.txt' with open(input_file_path, 'r', encoding='utf-8') as file: raw_text = file.read() token_len = count_tokens(raw_text) print(token_len)
結果例
o200k_baseでは1143トークンcl100k_baseに変更すると1420トークン
2. Transformers
特徴
Hugging Faceのtransformersライブラリは、多くのモデルに対応したトークナイザーを提供しています。日本語モデルにも対応しているため、多言語テキストの解析に便利です。
使用方法
インストール
pip install transformers
ソースコード
from transformers import AutoTokenizer def count_tokens(text): tokenizer = AutoTokenizer.from_pretrained("llm-jp/llm-jp-3-3.7b-instruct") tokens = tokenizer.encode(text) return len(tokens) # テキストファイルを読み込みトークン数を確認 input_file_path = './text.txt' with open(input_file_path, 'r', encoding='utf-8') as file: raw_text = file.read() token_len = count_tokens(raw_text) print(token_len)
結果例
llm-jp-3-3.7b-instructモデルでは991トークンelyza/ELYZA-japanese-Llama-2-7b-instructでは1556トークン
3. SpaCy
特徴
spaCyは汎用的なNLPツールで、日本語を含む多言語のトークン化が可能です。LLM専用ではないため、簡易的な確認に適しています。
使用方法
インストール
pip install spacy python -m spacy download ja_core_news_sm
ソースコード
import spacy def count_tokens(text): nlp = spacy.load("ja_core_news_sm") doc = nlp(text) tokens = [token.text for token in doc] return len(tokens) # テキストファイルを読み込みトークン数を確認 input_file_path = './text.txt' with open(input_file_path, 'r', encoding='utf-8') as file: raw_text = file.read() token_len = count_tokens(raw_text) print(token_len)
結果例
- トークン数は1118
4. MeCab
特徴
MeCabは日本語形態素解析ツールで、fugashiを通じてPythonから利用できます。日本語テキストの解析に特化しており、詳細なトークン化が可能です。
使用方法
インストール
pip install 'fugashi[unidic]' python -m unidic download
ソースコード
import fugashi def count_tokens(text): tagger = fugashi.Tagger() tokens = [word.surface for word in tagger(text)] return len(tokens) # テキストファイルを読み込みトークン数を確認 input_file_path = './text.txt' with open(input_file_path, 'r', encoding='utf-8') as file: raw_text = file.read() token_len = count_tokens(raw_text) print(token_len)
結果例
- トークン数は1028
結論:目的に応じたツール選びを
トークン数を確認する際のポイントをまとめると、以下のようになります。
- LLM用のトークナイザーが必要なら
tiktokenやtransformersを使用 - 汎用的な解析なら
spaCyやMeCabが便利
トークン数がわかれば、トレーニングデータをどの程度追加する必要があるかや、モデルの特性に合った学習が可能になります。
手軽にトークン数を確認し、効率的なLLM開発を目指しましょう。
この記事をシェアする
合同会社raisexでは一緒に働く仲間を募集中です。
ご興味のある方は以下の採用情報をご確認ください。