LLM の料金や、一度に入れられる長さの上限は「トークン」で数えるらしい
トークンって単語のこと?
【疑問】LLM の「トークン」って単語のこと?文字のこと?BPE を手で回してみた【AI】
>>1
単語でも文字でもなく、その間くらいの「よく出てくる文字のかたまり」(サブワード)が多い
よく出る単語は1トークン、めったに出ない単語はいくつかのかけらに分かれる
>>2
単語ごとにしたらあかんの?
>>3
単語ごとだと、語彙(使える単語の一覧)に入ってない単語が来たら、全部「不明」の記号になってしまう
新しい言葉、人名、つづりの間違い、活用形(walk・walked・walking)まで全部入れようとすると、語彙がいくらあっても足りない
>>4
じゃあ1文字ずつなら、「不明」は出えへんやろ
>>5
出ないけど、列が長くなる。英語なら1単語が平均で数文字あるから、長さが数倍になる
Transformer の Attention は列の長さの2乗で計算が増えるから、長さが3倍なら計算は約 倍
>>6
その間をとるのがサブワードってことか。どうやって分け方を決めるん
>>7
代表的なのが BPE(バイトペア符号化、Sennrich ら、2016年)
学習用の文章で、となり合う2つの記号の組のうち、いちばん多く出てくる組を1つの記号にまとめる、をくり返す
>>8
例でやって
>>9
単語と出てくる回数が、low 5回、lower 2回、newest 6回、widest 3回の文章で考える。最初は1文字ずつに分けておく
となりの組を数えると、e s は newest の6回と widest の3回で
同じく9回の s t と並んで最多。同点のときに選ぶ順番を決めておいて、ここでは e s を es にまとめる
>>10
次は?
>>11
es t も9回やから est にまとめる。次は l o と o w が7回(low 5回 + lower 2回)で、l o → lo、lo w → low
4回まとめた時点で、low、low e r、n e w est、w i d est
>>12
学習の文章になかった lowest が来たら?
>>13
覚えたまとめ方を、覚えた順に当てはめると low と est の2トークンになる
単語としては知らんくても、知ってるかけらの組み合わせで表せる。どうしても分けられなければ1文字ずつに戻るから、「不明」にはならない
まとめる回数は、どうやって決めるん
>>15
作りたい語彙の大きさで決める。まとめるたびに、記号が1つ増える
BERT(Devlin ら、2018年)は似た方法の WordPiece で約3万、GPT-2(Radford ら、2019年)はバイト単位の BPE で50,257
>>16
BERT のトークンで、## がついてるのを見たことある
>>17
WordPiece で「前のかけらの続き」を表す印。単語の途中から始まるかけらに ## がつく
ある単語が play と ##ing に分かれたら、つなげて playing に戻せる
日本語やと、同じ内容でもトークンが多くなるって聞いた
>>19
学習の文章に英語が多いと、英語のよく出るかたまりが優先してまとめられる。そのぶん、ほかの言語は細かく分かれやすい
トークン数が増えると、料金も長さの上限も早く来る。ただ、どれくらい違うかはモデルの語彙で大きく変わる
>>16
バイト単位ってのは、何がうれしいん
>>21
文字をまず UTF-8 のバイト(0〜255 の 種類)に直してから BPE をかける
最初の記号の256種類だけで全部の文字を表せるから、絵文字でも見たことない文字でも「不明」が出ない
「1トークンは何文字」って決まってるん?
>>23
決まってない。よく出る長い単語は1トークンでも、めずらしい短い単語が3トークンになったりする
ぴったり知りたいなら、そのモデルのトークナイザーに実際にかけて数える
よく出るかたまりから順にまとめる。知らん単語はかけらに分ける。語彙の大きさで、まとめる回数が決まる、やな
管理人のひとこと
- トークンは多くの場合、単語と文字の間のサブワード。単語ごとだと語彙にない単語が「不明」になり、文字ごとだと列が長くなる(Attention の計算は長さの2乗)。
- BPE は、となり合う記号の組でいちばん多いものを1つにまとめる操作をくり返す。low 5・lower 2・newest 6・widest 3 なら、e s(9回)→ es t → l o → lo w の順にまとまる。
- 学習になかった lowest も low と est に分けられる。バイト単位の BPE なら256種類から始めるので「不明」が出ない。
- 語彙の大きさはまとめる回数で決まる(BERT は WordPiece で約3万、GPT-2 は50,257)。1トークンの文字数は決まっておらず、言語やモデルで変わる。