AbdulElahGwaith's picture
Upload folder using huggingface_hub
a9bd396 verified

ํ† ํฌ๋‚˜์ด์ €[[tokenizer]]

ํ† ํฌ๋‚˜์ด์ €๋Š” ๋ชจ๋ธ์˜ ์ž…๋ ฅ์„ ์ค€๋น„ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ๋ชจ๋“  ๋ชจ๋ธ์„ ์œ„ํ•œ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ† ํฌ๋‚˜์ด์ €๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์™„์ „ํ•œ ํŒŒ์ด์ฌ ๊ตฌํ˜„๊ณผ Rust ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๐Ÿค— Tokenizers์— ๊ธฐ๋ฐ˜ํ•œ "Fast" ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. "Fast" ๊ตฌํ˜„์€ ๋‹ค์Œ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

  1. ํŠนํžˆ ๋ฐฐ์น˜ ํ† ํฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  2. ์›๋ณธ ๋ฌธ์ž์—ด(๋ฌธ์ž ๋ฐ ๋‹จ์–ด)๊ณผ ํ† ํฐ ๊ณต๊ฐ„ ์‚ฌ์ด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ํŠน์ • ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ํ† ํฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ์–ป๊ฑฐ๋‚˜, ํŠน์ • ํ† ํฐ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž ๋ฒ”์œ„๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋“ฑ).

๊ธฐ๋ณธ ํด๋ž˜์Šค์ธ [PreTrainedTokenizer]์™€ [PreTrainedTokenizerFast]๋Š” ๋ฌธ์ž์—ด ์ž…๋ ฅ์„ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ(์•„๋ž˜ ์ฐธ์กฐ), ๋กœ์ปฌ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ, ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ํ† ํฌ๋‚˜์ด์ €(HuggingFace์˜ AWS S3 ์ €์žฅ์†Œ์—์„œ ๋‹ค์šด๋กœ๋“œ๋œ)๋กœ๋ถ€ํ„ฐ ํŒŒ์ด์ฌ ๋ฐ "Fast" ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ํด๋ž˜์Šค๋Š” ๊ณตํ†ต ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” [~tokenization_utils_base.PreTrainedTokenizerBase]์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

[PreTrainedTokenizer]์™€ [PreTrainedTokenizerFast]๋Š” ๋ชจ๋“  ํ† ํฌ๋‚˜์ด์ €์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ๋ฉ”์†Œ๋“œ๋“ค์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค:

  • ํ† ํฐํ™”(๋ฌธ์ž์—ด์„ ํ•˜์œ„ ๋‹จ์–ด ํ† ํฐ ๋ฌธ์ž์—ด๋กœ ๋ถ„ํ• ), ํ† ํฐ ๋ฌธ์ž์—ด์„ ID๋กœ ๋ณ€ํ™˜ ๋ฐ ๊ทธ ๋ฐ˜๋Œ€ ๊ณผ์ •, ๊ทธ๋ฆฌ๊ณ  ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ(์ฆ‰, ํ† ํฐํ™” ๋ฐ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ์กฐ(BPE, SentencePiece ๋“ฑ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ์–ดํœ˜์— ์ƒˆ๋กœ์šด ํ† ํฐ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠน์ˆ˜ ํ† ํฐ(๋งˆ์Šคํฌ, ๋ฌธ์žฅ ์‹œ์ž‘ ๋“ฑ) ๊ด€๋ฆฌ: ํ† ํฐ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ† ํฌ๋‚˜์ด์ €์˜ ์†์„ฑ์— ํ• ๋‹นํ•˜๋ฉฐ, ํ† ํฐํ™” ๊ณผ์ •์—์„œ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

[BatchEncoding]์€ [~tokenization_utils_base.PreTrainedTokenizerBase]์˜ ์ธ์ฝ”๋”ฉ ๋ฉ”์†Œ๋“œ(__call__, encode_plus, batch_encode_plus)์˜ ์ถœ๋ ฅ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, ํŒŒ์ด์ฌ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค. ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ์ˆœ์ˆ˜ ํŒŒ์ด์ฌ ํ† ํฌ๋‚˜์ด์ €์ธ ๊ฒฝ์šฐ ์ด ํด๋ž˜์Šค๋Š” ํ‘œ์ค€ ํŒŒ์ด์ฌ ๋”•์…”๋„ˆ๋ฆฌ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ๋ฉ”์†Œ๋“œ๋“ค๋กœ ๊ณ„์‚ฐ๋œ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์ž…๋ ฅ(input_ids, attention_mask ๋“ฑ)์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํ† ํฌ๋‚˜์ด์ €๊ฐ€ "Fast" ํ† ํฌ๋‚˜์ด์ €์ผ ๊ฒฝ์šฐ(์ฆ‰, HuggingFace tokenizers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋ฐ˜์ผ ๊ฒฝ์šฐ), ์ด ํด๋ž˜์Šค๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ์›๋ณธ ๋ฌธ์ž์—ด(๋ฌธ์ž ๋ฐ ๋‹จ์–ด)๊ณผ ํ† ํฐ ๊ณต๊ฐ„ ์‚ฌ์ด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ณ ๊ธ‰ ์ •๋ ฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: ํŠน์ • ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ํ† ํฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ์–ป๊ฑฐ๋‚˜, ํŠน์ • ํ† ํฐ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž ๋ฒ”์œ„๋ฅผ ์–ป๋Š” ๋“ฑ).

๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ํ† ํฌ๋‚˜์ด์ €[[multimodal-tokenizer]]

๊ทธ ์™ธ์—๋„ ๊ฐ ํ† ํฌ๋‚˜์ด์ €๋Š” "๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ" ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋ชจ๋“  ๊ด€๋ จ ํŠน์ˆ˜ ํ† ํฐ์„ ํ† ํฌ๋‚˜์ด์ € ์†์„ฑ์˜ ์ผ๋ถ€๋กœ ์ €์žฅํ•˜์—ฌ ๋” ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, LLaVA์™€ ๊ฐ™์€ ๋น„์ „-์–ธ์–ด ๋ชจ๋ธ์—์„œ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด, tokenizer.image_token_id์— ์ ‘๊ทผํ•˜์—ฌ ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋กœ ์‚ฌ์šฉ๋˜๋Š” ํŠน์ˆ˜ ์ด๋ฏธ์ง€ ํ† ํฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์œ ํ˜•์˜ ํ† ํฌ๋‚˜์ด์ €์— ์ถ”๊ฐ€ ํŠน์ˆ˜ ํ† ํฐ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด, ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํŠน์ˆ˜ ํ† ํฐ์€ ๋ฐ˜๋“œ์‹œ ํŠน์ • ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ์™€ ๊ด€๋ จ๋  ํ•„์š”๋Š” ์—†์œผ๋ฉฐ, ๋ชจ๋ธ์ด ์ž์ฃผ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ์–ด๋–ค ๊ฒƒ์ด๋“  ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์—์„œ output_dir์— ์ €์žฅ๋œ ํ† ํฌ๋‚˜์ด์ €๋Š” ์„ธ ๊ฐœ์˜ ์ถ”๊ฐ€ ํŠน์ˆ˜ ํ† ํฐ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

vision_tokenizer = AutoTokenizer.from_pretrained(
    "llava-hf/llava-1.5-7b-hf",
    extra_special_tokens={"image_token": "<image>", "boi_token": "<image_start>", "eoi_token": "<image_end>"}
)
print(vision_tokenizer.image_token, vision_tokenizer.image_token_id)
("<image>", 32000)

PreTrainedTokenizer[[transformers.PreTrainedTokenizer]]

[[autodoc]] PreTrainedTokenizer - call - add_tokens - add_special_tokens - apply_chat_template - batch_decode - decode - encode - push_to_hub - all

PreTrainedTokenizerFast[[transformers.PreTrainedTokenizerFast]]

[PreTrainedTokenizerFast]๋Š” tokenizers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๐Ÿค— tokenizers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์–ป์€ ํ† ํฌ๋‚˜์ด์ €๋Š” ๐Ÿค— transformers๋กœ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๋ฉด Using tokenizers from ๐Ÿค— tokenizers ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

[[autodoc]] PreTrainedTokenizerFast - call - add_tokens - add_special_tokens - apply_chat_template - batch_decode - decode - encode - push_to_hub - all

BatchEncoding[[transformers.BatchEncoding]]

[[autodoc]] BatchEncoding