1. Tokenizing
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
Tokenizing
Tokenizingλ ν μ€νΈμ κ°μ λ°μ΄ν°λ₯Ό λ μκ³ κ΄λ¦¬ κ°λ₯ν μ‘°κ°μΈ _tokens_λ‘ λλλ κ³Όμ μ λλ€. κ° ν ν°μ κ³ μ ν μ«μ μλ³μ(ID)κ° ν λΉλ©λλ€. μ΄λ κΈ°κ³ νμ΅ λͺ¨λΈ, νΉν μμ°μ΄ μ²λ¦¬(NLP)λ₯Ό μν ν μ€νΈ μ€λΉμ κΈ°λ³Έ λ¨κ³μ λλ€.
Tip
μ΄ μ΄κΈ° λ¨κ³μ λͺ©νλ λ§€μ° κ°λ¨ν©λλ€: μ λ ₯μ μλ―Έ μλ λ°©μμΌλ‘ ν ν°(ids)μΌλ‘ λλκΈ°μ λλ€.
How Tokenizing Works
- ν μ€νΈ λΆν :
- κΈ°λ³Έ ν ν¬λμ΄μ : κ°λ¨ν ν ν¬λμ΄μ λ ν μ€νΈλ₯Ό κ°λ³ λ¨μ΄μ ꡬλμ μΌλ‘ λλκ³ κ³΅λ°±μ μ κ±°ν μ μμ΅λλ€.
- μ:
ν μ€νΈ:"Hello, world!"
ν ν°:["Hello", ",", "world", "!"]
- μ΄ν μμ±:
- ν ν°μ μ«μ IDλ‘ λ³ννκΈ° μν΄ μ΄νκ° μμ±λ©λλ€. μ΄ μ΄νλ λͺ¨λ κ³ μ ν ν°(λ¨μ΄ λ° κΈ°νΈ)μ λμ΄νκ³ κ° ν ν°μ νΉμ IDλ₯Ό ν λΉν©λλ€.
- νΉμ ν ν°: λ€μν μλ리μ€λ₯Ό μ²λ¦¬νκΈ° μν΄ μ΄νμ μΆκ°λ νΉμ κΈ°νΈμ λλ€:
[BOS](Sequenceμ μμ): ν μ€νΈμ μμμ λνλ λλ€.[EOS](Sequenceμ λ): ν μ€νΈμ λμ λνλ λλ€.[PAD](ν¨λ©): λ°°μΉμ λͺ¨λ μνμ€λ₯Ό λμΌν κΈΈμ΄λ‘ λ§λ€κΈ° μν΄ μ¬μ©λ©λλ€.[UNK](μ μ μμ): μ΄νμ μλ ν ν°μ λνλ λλ€.- μ:
"Hello"κ° ID64μ ν λΉλκ³ ,","κ°455,"world"κ°78,"!"κ°467μ΄λΌλ©΄:"Hello, world!"β[64, 455, 78, 467] - μ μ μλ λ¨μ΄ μ²λ¦¬:
"Bye"μ κ°μ λ¨μ΄κ° μ΄νμ μμΌλ©΄[UNK]λ‘ λ체λ©λλ€."Bye, world!"β["[UNK]", ",", "world", "!"]β[987, 455, 78, 467]
(μ¬κΈ°μ[UNK]μ IDλ987λΌκ³ κ°μ ν©λλ€)
Advanced Tokenizing Methods
κΈ°λ³Έ ν ν¬λμ΄μ λ κ°λ¨ν ν μ€νΈμ μ μλνμ§λ§, νΉν ν° μ΄νμ μλ‘μ΄ λλ ν¬κ·ν λ¨μ΄λ₯Ό μ²λ¦¬νλ λ° νκ³κ° μμ΅λλ€. κ³ κΈ ν ν¬λμ΄μ§ λ°©λ²μ ν μ€νΈλ₯Ό λ μμ νμ λ¨μλ‘ λλκ±°λ ν ν¬λμ΄μ§ νλ‘μΈμ€λ₯Ό μ΅μ ννμ¬ μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.
- Byte Pair Encoding (BPE):
- λͺ©μ : μ΄νμ ν¬κΈ°λ₯Ό μ€μ΄κ³ ν¬κ·νκ±°λ μ μ μλ λ¨μ΄λ₯Ό μμ£Ό λ°μνλ λ°μ΄νΈ μμΌλ‘ λλμ΄ μ²λ¦¬ν©λλ€.
- μλ λ°©μ:
- κ°λ³ λ¬Έμλ₯Ό ν ν°μΌλ‘ μμν©λλ€.
- κ°μ₯ μμ£Ό λ°μνλ ν ν° μμ λ°λ³΅μ μΌλ‘ λ³ν©νμ¬ λ¨μΌ ν ν°μΌλ‘ λ§λλλ€.
- λ μ΄μ λ³ν©ν μ μλ μμ£Ό λ°μνλ μμ΄ μμ λκΉμ§ κ³μν©λλ€.
- μ₯μ :
- λͺ¨λ λ¨μ΄κ° κΈ°μ‘΄μ νμ λ¨μ΄ ν ν°μ κ²°ν©νμ¬ ννλ μ μμΌλ―λ‘
[UNK]ν ν°μ΄ νμνμ§ μμ΅λλ€. - λ ν¨μ¨μ μ΄κ³ μ μ°ν μ΄νμ λλ€.
- μ:
"playing"μ"play"μ"ing"κ° μμ£Ό λ°μνλ νμ λ¨μ΄λΌλ©΄["play", "ing"]λ‘ ν ν¬λμ΄μ¦λ μ μμ΅λλ€.
- WordPiece:
- μ¬μ© λͺ¨λΈ: BERTμ κ°μ λͺ¨λΈ.
- λͺ©μ : BPEμ μ μ¬νκ², μ μ μλ λ¨μ΄λ₯Ό μ²λ¦¬νκ³ μ΄ν ν¬κΈ°λ₯Ό μ€μ΄κΈ° μν΄ λ¨μ΄λ₯Ό νμ λ¨μλ‘ λλλλ€.
- μλ λ°©μ:
- κ°λ³ λ¬Έμμ κΈ°λ³Έ μ΄νλ‘ μμν©λλ€.
- νλ ¨ λ°μ΄ν°μ κ°λ₯μ±μ κ·Ήλννλ κ°μ₯ μμ£Ό λ°μνλ νμ λ¨μ΄λ₯Ό λ°λ³΅μ μΌλ‘ μΆκ°ν©λλ€.
- μ΄λ€ νμ λ¨μ΄λ₯Ό λ³ν©ν μ§ κ²°μ νκΈ° μν΄ νλ₯ λͺ¨λΈμ μ¬μ©ν©λλ€.
- μ₯μ :
- κ΄λ¦¬ κ°λ₯ν μ΄ν ν¬κΈ°μ λ¨μ΄λ₯Ό ν¨κ³Όμ μΌλ‘ νννλ κ² μ¬μ΄μ κ· νμ μ μ§ν©λλ€.
- ν¬κ·νκ³ λ³΅ν©μ μΈ λ¨μ΄λ₯Ό ν¨μ¨μ μΌλ‘ μ²λ¦¬ν©λλ€.
- μ:
"unhappiness"λ μ΄νμ λ°λΌ["un", "happiness"]λλ["un", "happy", "ness"]λ‘ ν ν¬λμ΄μ¦λ μ μμ΅λλ€.
- Unigram Language Model:
- μ¬μ© λͺ¨λΈ: SentencePieceμ κ°μ λͺ¨λΈ.
- λͺ©μ : κ°μ₯ κ°λ₯μ±μ΄ λμ νμ λ¨μ΄ ν ν° μ§ν©μ κ²°μ νκΈ° μν΄ νλ₯ λͺ¨λΈμ μ¬μ©ν©λλ€.
- μλ λ°©μ:
- μ μ¬μ μΈ ν ν°μ ν° μ§ν©μΌλ‘ μμν©λλ€.
- νλ ¨ λ°μ΄ν°μ λͺ¨λΈ νλ₯ μ κ°μ₯ μ κ² κ°μ νλ ν ν°μ λ°λ³΅μ μΌλ‘ μ κ±°ν©λλ€.
- κ° λ¨μ΄κ° κ°μ₯ κ°λ₯μ±μ΄ λμ νμ λ¨μ΄ λ¨μλ‘ ννλλ μ΄νλ₯Ό μ΅μ’ νν©λλ€.
- μ₯μ :
- μ μ°νλ©° μΈμ΄λ₯Ό λ μμ°μ€λ½κ² λͺ¨λΈλ§ν μ μμ΅λλ€.
- μ’ μ’ λ ν¨μ¨μ μ΄κ³ κ°κ²°ν ν ν¬λμ΄μ§ κ²°κ³Όλ₯Ό κ°μ Έμ΅λλ€.
- μ:
"internationalization"μ["international", "ization"]κ³Ό κ°μ λ μκ³ μλ―Έ μλ νμ λ¨μ΄λ‘ ν ν¬λμ΄μ¦λ μ μμ΅λλ€.
Code Example
Letβs understand this better from a code example from https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb:
# Download a text to pre-train the model
import urllib.request
url = ("https://raw.githubusercontent.com/rasbt/LLMs-from-scratch/main/ch02/01_main-chapter-code/the-verdict.txt")
file_path = "the-verdict.txt"
urllib.request.urlretrieve(url, file_path)
with open("the-verdict.txt", "r", encoding="utf-8") as f:
raw_text = f.read()
# Tokenize the code using GPT2 tokenizer version
import tiktoken
token_ids = tiktoken.get_encoding("gpt2").encode(txt, allowed_special={"[EOS]"}) # Allow the user of the tag "[EOS]"
# Print first 50 tokens
print(token_ids[:50])
#[40, 367, 2885, 1464, 1807, 3619, 402, 271, 10899, 2138, 257, 7026, 15632, 438, 2016, 257, 922, 5891, 1576, 438, 568, 340, 373, 645, 1049, 5975, 284, 502, 284, 3285, 326, 11, 287, 262, 6001, 286, 465, 13476, 11, 339, 550, 5710, 465, 12036, 11, 6405, 257, 5527, 27075, 11]
References
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


