ЁЯзй рдзрдбрд╛ 03 тАФ Tokens: text рдЪреЗ puzzle рддреБрдХрдбреНрдпрд╛рдВрдд рдХрд╛рдкрдгреЗ
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 03 ┬╖ рдорд╛рдЧреЗ: lesson-02-training ┬╖ рдкреБрдвреЗ: lesson-04-embeddings
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ02, рдЖрдгрд┐ рддреБрдореНрд╣реА рдХрдзреАрд╣реА type рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ prompt рд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдЖрдзреА рд╣реЛрдгрд╛рд░реА рдЧреЛрд╖реНрдЯ: tokenization. рдЦрд░реА file: demo/tokenizer_toy.py тАФ tokenizer рдЖрдкрд▓реЗ рддреБрдХрдбреЗ рд╢рд┐рдХрддрд╛рдирд╛ рдкрд╛рд╣рд╛.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
model рд╣рд╛ рдПрдХ calculator рдЖрд╣реЗ тАФ рддреЛ рдЖрдХрдбреЗ рдЦрд╛рддреЛ, рдЕрдХреНрд╖рд░реЗ рдирд╛рд╣реА. рдореНрд╣рдгреВрди рдмрд╛рдХреА рдХрд╛рд╣реАрд╣реА рд╣реЛрдгреНрдпрд╛рдЖрдзреА, text puzzle рддреБрдХрдбреНрдпрд╛рдВрдд ЁЯзй рдХрд╛рдкрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рддреБрдХрдбреНрдпрд╛рд▓рд╛ рдПрдХ ID рдХреНрд░рдорд╛рдВрдХ рдорд┐рд│рддреЛ. рдХреЛрдгрддреЗ рддреБрдХрдбреЗ? рдЗрдереЗрдЪ рд╣реБрд╢рд╛рд░реА рдЖрд╣реЗ тАФ рддреЗ рдХреЛрдгреАрд╣реА рд╣рд╛рддрд╛рдиреЗ рдирд┐рд╡рдбрдд рдирд╛рд╣реА. tokenizer рддреЗ data рдордзреВрди рд╢рд┐рдХрддреЛ, рдПрдХрд╛рдЪ, рдРрдХрд╛рдпрд▓рд╛ рдореВрд░реНрдЦ рд╡рд╛рдЯрдгрд╛рд▒реНрдпрд╛ рдирд┐рдпрдорд╛рдиреЗ, рдЬреЛ рд╣рдЬрд╛рд░реЛ рд╡реЗрд│рд╛ рдкреБрдиреНрд╣рд╛ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ:
"рдПрдХрдореЗрдХрд╛рдВрдЪреНрдпрд╛ рд╢реЗрдЬрд╛рд░реА рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рд╡реЗрд│рд╛ рдпреЗрдгрд╛рд░реЗ рджреЛрди рддреБрдХрдбреЗ рд╢реЛрдзрд╛. рддреНрдпрд╛рдВрдирд╛ рдЪрд┐рдХрдЯрд╡реВрди рдПрдХ рддреБрдХрдбрд╛ рдХрд░рд╛. рдкреБрдиреНрд╣рд╛ рдХрд░рд╛." (рд╣реЗрдЪ BPE тАФ byte-pair encoding.)
рд╣реЗ рдкреБрд░реЗрд╕рд╛ рд╡реЗрд│ рдЪрд╛рд▓рд╡рд╛ рдЖрдгрд┐ рддреБрдХрдбреЗ рдЕрдкреНрд░рддрд┐рдо рд╕рдордЬреВрддрджрд╛рд░ рдмрдирддрд╛рдд: рдиреЗрд╣рдореАрдЪреЗ
рд╢рдмреНрдж рдПрдХрдЪ рддреБрдХрдбрд╛ рдмрдирддрд╛рдд (the, school), рджреБрд░реНрдореАрд│ рд╢рдмреНрдж
рдЙрдк-рддреБрдХрдбреНрдпрд╛рдВрддреВрди рдмрдирддрд╛рдд (un + believ + able), рдЖрдгрд┐ рдХрд╛рд╣реАрд╣реА тАФ рдХреЛрдгрддреАрд╣реА typo, рдХреЛрдгрддреАрд╣реА
рднрд╛рд╖рд╛, рдХреЛрдгрддреЗрд╣реА emoji тАФ рдЫреЛрдЯреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рдВрддреВрди рдЕрдЬреВрдирд╣реА рд▓рд┐рд╣рд┐рддрд╛ рдпреЗрддреЗ. ~50тАУ100
рд╣рдЬрд╛рд░ рддреБрдХрдбреЗ рд╕рдВрдкреВрд░реНрдг рдорд╛рдирд╡реА text рд╡реНрдпрд╛рдкрддрд╛рдд.
рдпрд╛рддреВрди рддреБрдореНрд╣реА рдЕрдиреБрднрд╡рд▓реЗрд▓реНрдпрд╛ рдЦрд▒реНрдпрд╛ рд╡рд┐рдЪрд┐рддреНрд░рдкрдгрд╛рдВрдЪреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдорд┐рд│рддреЗ:
- "strawberry рдордзреНрдпреЗ рдХрд┐рддреА R рдЖрд╣реЗрдд?" рдпрд╛рдд рдЕрдбрдЪрдг рдпреЗрддреЗ тАФ model рд▓рд╛
[st][raw][berry]-рд╕рд╛рд░рдЦреЗ IDs рджрд┐рд╕рддрд╛рдд, рдЕрдХреНрд╖рд░реЗ рдХрдзреАрдЪ рдирд╛рд╣реАрдд. рдЧреЛрдард▓реЗрд▓реНрдпрд╛ puzzle рддреБрдХрдбреНрдпрд╛рдВрдордзреВрди рдЕрдХреНрд╖рд░реЗ рдореЛрдЬрдгреЗ рдЦрд░реЛрдЦрд░рдЪ рдЕрд╡рдШрдб рдЖрд╣реЗ! ЁЯНУ - Pricing рдЖрдгрд┐ limits "per token" рдЕрд╕рддрд╛рдд тАФ рдХрд╛рдп рдореЛрдЬрд▓реЗ рдЬрд╛рддреЗ рддреЗ рдЖрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЗрдордХреЗ рдорд╛рд╣реАрдд рдЖрд╣реЗ (English рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХреА ~┬╛ рд╢рдмреНрдж).
- рдХрд╛рд╣реА рднрд╛рд╖рд╛рдВрдирд╛ 2тАУ3├Ч рдЬрд╛рд╕реНрдд tokens рд▓рд╛рдЧрддрд╛рдд тАФ training data рдордзреНрдпреЗ рддреНрдпрд╛рдВрдЪреЗ рддреБрдХрдбреЗ рджреБрд░реНрдореАрд│ рд╣реЛрддреЗ, рдореНрд╣рдгреВрди рддреНрдпрд╛рдВрдирд╛ рдЫреЛрдЯреЗ рддреБрдХрдбреЗ рдорд┐рд│рд╛рд▓реЗ.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
t["ЁЯУЭ text<br/>'the robot reads'"]
bpe["ЁЯзй tokenizer - BPE<br/>glue the most frequent pair,<br/>repeat thousands of times"]
ids["ЁЯФв token IDs<br/>[464, 9379, 9743]"]
m["ЁЯза model<br/>sees ONLY these numbers -<br/>never words, never letters"]
t -->|"1 cut into learned pieces"| bpe -->|"2 look up IDs"| ids -->|"3"| m
тЭУ рдХрд╛рдп
- Token = ID рдЕрд╕рд▓реЗрд▓рд╛, рд╢рд┐рдХрд▓реЗрд▓рд╛ рдПрдХ text рддреБрдХрдбрд╛. рдвреЛрдмрд│ рдирд┐рдпрдо: 1 token тЙИ 4 рдЕрдХреНрд╖рд░реЗ тЙИ ┬╛ English рд╢рдмреНрдж; "1,000 tokens тЙИ 750 рд╢рдмреНрдж".
- vocabulary (рд╕рдЧрд│реЗ рддреБрдХрдбреЗ + IDs) training рдЪреНрдпрд╛ рд╡реЗрд│реАрдЪ рдард░рддреЗ тАФ рддреНрдпрд╛рдирдВрддрд░ рдХрд╛рдпрдорд╕рд╛рдареА рддреА model рдЪреА рд╡рд░реНрдгрдорд╛рд▓рд╛.
- рдкреБрдврдЪреЗ рд╕рдЧрд│реЗ tokens рдордзреНрдпреЗ рдореЛрдЬрд▓реЗ рдЬрд╛рддреЗ: context windows (рдзрдбрд╛ 09), API pricing, рд╡реЗрдЧ ("tokens per second"), рдЖрдгрд┐ model рдЪрд╛ output рд╕реБрджреНрдзрд╛ рдПрдХреЗрдХ token рдХрд░реВрди рдирд┐рд╡рдбрд▓рд╛ рдЬрд╛рддреЛ (рдзрдбрд╛ 05).
- Subword рдмрд╛рдХреА рдкрд░реНрдпрд╛рдпрд╛рдВрдкреЗрдХреНрд╖рд╛ рд╕рд░рд╕: word-level рдирд╡реЗ рд╢рдмреНрдж рд╣рд╛рддрд╛рд│реВ рд╢рдХрдд рдирд╛рд╣реА; character-level рдореБрд│реЗ sequences рднрдпрдВрдХрд░ рд▓рд╛рдВрдм рд╣реЛрддрд╛рдд. BPE рд╣реА рдЬрд┐рдВрдХрд▓реЗрд▓реА рддрдбрдЬреЛрдб рдЖрд╣реЗ.
ЁЯдФ рдХрд╛
Tokens рд╣реА model рдЪреА рд╕рдВрд╡реЗрджрдирд╛-рд╡реНрдпрд╡рд╕реНрдерд╛ рдЖрд╣реЗ тАФ рдпрд╛рд╣реВрди рдмрд╛рд░реАрдХ рдХрд╛рд╣реАрд╣реА рддреНрдпрд╛рд▓рд╛ рдЕрдХреНрд╖рд░рд╢рдГ рдЬрд╛рдгрд╡реВ рд╢рдХрдд рдирд╛рд╣реА. "LLMs X рдордзреНрдпреЗ рд╡рд┐рдЪрд┐рддреНрд░рдкрдгреЗ рд╡рд╛рдИрдЯ рдЖрд╣реЗрдд" рдпрд╛ рдпрд╛рджреАрдЪрд╛ рдЕрд░реНрдзрд╛ рднрд╛рдЧ (spelling рдЪреЗ рдЦреЗрд│, рд▓рд╛рдВрдм рдЖрдХрдбреНрдпрд╛рдВрд╡рд░рдЪреЗ рдЧрдгрд┐рдд, рдХрд╛рд╣реА рднрд╛рд╖рд╛рдВрддреАрд▓ рдпрдордХ) "рдЕрд░реНрдерд╛рддрдЪ тАФ рддреНрдпрд╛рд▓рд╛ рдЦрд░реЛрдЦрд░ рджрд┐рд╕рдгрд╛рд░реЗ рддреБрдХрдбреЗ рдкрд╛рд╣рд╛" рдпрд╛рдд рд╡рд┐рд░рдШрд│рддреЛ. model рдЪреНрдпрд╛ рд╡рд╛рдЧрдгреНрдпрд╛рдЪреЗ debugging рддреНрдпрд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд▓реЗ рдЗрдереВрди рд╕реБрд░реВ рд╣реЛрддреЗ, рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рд╣реЗрдЪ рджрд┐рд╕рддреЗ.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 demo/tokenizer_toy.py
рдкрд╛рд╣рд╛ BPE рдЖрдзреА e+a, рдордЧ t+he рдЪрд┐рдХрдЯрд╡рддреЛ, рдордЧ tea/ead рд╡рд╛рдврд╡рддреЛ тАФ рдПрдХрд╛ рдореВрд░реНрдЦ
рдирд┐рдпрдорд╛рддреВрди рд╕рдордЬреВрддрджрд╛рд░ рддреБрдХрдбреЗ рддреБрдордЪреНрдпрд╛ рдбреЛрд│реНрдпрд╛рдВрд╕рдореЛрд░ рддрдпрд╛рд░ рд╣реЛрддрд╛рдд. рдордЧ рдПрдХрд╛ рдЦрд▒реНрдпрд╛рд╢реА рдЦреЗрд│рд╛:
OpenAI рдЪреЗ tokenizer playground рдХрд┐рдВрд╡рд╛ tiktoken тАФ рддреНрдпрд╛рдд
unbelievable, strawberry, рдЖрдгрд┐ рдПрдХ Hindi рд╡рд╛рдХреНрдп paste рдХрд░рд╛, рдЖрдгрд┐ рддреБрдХрдбреЗ рдореЛрдЬрд╛.
тПня╕П рдкреБрдвреЗ
рдкреНрд░рддреНрдпреЗрдХ рддреБрдХрдбреНрдпрд╛рдЪрд╛ ID рдордЧ рдЖрдХрдбреНрдпрд╛рдВрдЪреНрдпрд╛ рдпрд╛рджреАрдд рдмрджрд▓рддреЛ, рдЬреА рддреНрдпрд╛рдЪрд╛ рдЕрд░реНрде рд╕рд╛рдард╡рддреЗ тАФ рдЬрд╡рд│рдЬрд╡рд│ рд╕рдорд╛рдирд╛рд░реНрдереА рд╢рдмреНрдж рд╢реЗрдЬрд╛рд░реА рдпреЗрддрд╛рдд: embeddings, рдЕрд░реНрдерд╛рдВрдЪрд╛ рдмреИрдардХ-рддрдХреНрддрд╛.
git checkout lesson-04-embeddings