Hub documentation

Hugging Face์—์„œ ๐Ÿค— transformers ์‚ฌ์šฉ

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Hugging Face์—์„œ ๐Ÿค— transformers ์‚ฌ์šฉ

๐Ÿค— transformers๋Š” Hugging Face์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, PyTorch, TensorFlow, JAX๋ฅผ ์œ„ํ•œ ์ตœ์ฒจ๋‹จ Machine Learning์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ, ๋น„์ „, ์˜ค๋””์˜ค ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์†Œ ํŽธํ–ฅ๋œ ์‹œ๊ฐ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์ •๋ง๋กœ ๐Ÿค— transformers๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค!

Hub์—์„œ ๐Ÿค— transformers ํƒ์ƒ‰

Hub์—๋Š” 630,000๊ฐœ ์ด์ƒ์˜ transformers ๋ชจ๋ธ์ด ์žˆ์œผ๋ฉฐ, ๋ชจ๋ธ ํŽ˜์ด์ง€ ์™ผ์ชฝ์—์„œ ํ•„ํ„ฐ๋งํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์œ„ํ•œ ๋ชจ๋ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ปจํ…์ŠคํŠธ์—์„œ ๋‹ต๋ณ€ ์ถ”์ถœ(์งˆ๋ฌธ-๋‹ต๋ณ€).
  • ๋Œ€๋Ÿ‰์˜ ํ…์ŠคํŠธ์—์„œ ์š”์•ฝ ์ƒ์„ฑ(์š”์•ฝํ™”).
  • ํ…์ŠคํŠธ๋ฅผ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ŠคํŒธ ์—ฌ๋ถ€, text-classification).
  • GPT์™€ ๊ฐ™์€ ๋ชจ๋ธ๋กœ ์ƒˆ ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(text-generation).
  • ๋ฌธ์žฅ ๋‚ด์—์„œ ํ’ˆ์‚ฌ(๋™์‚ฌ, ์ฃผ์–ด ๋“ฑ) ๋˜๋Š” ์—”ํ‹ฐํ‹ฐ(๊ตญ๊ฐ€, ์กฐ์ง ๋“ฑ)๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค(token-classification).
  • ์˜ค๋””์˜ค ํŒŒ์ผ์„ ํ…์ŠคํŠธ๋กœ ์ „์‚ฌํ•ฉ๋‹ˆ๋‹ค(automatic-speech-recognition).
  • ์˜ค๋””์˜ค ํŒŒ์ผ์˜ ํ™”์ž ๋˜๋Š” ์–ธ์–ด๋ฅผ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค(audio-classification).
  • ์ด๋ฏธ์ง€์—์„œ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค(object-detection).
  • ์ด๋ฏธ์ง€๋ฅผ ์„ธ๊ทธ๋จผํŠธํ•ฉ๋‹ˆ๋‹ค(image-segmentation).
  • ๊ฐ•ํ™” ํ•™์Šต(reinforcement-learning)์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”!

in-browser widgets ๋•๋ถ„์— ๋ชจ๋ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Transformers ์ €์žฅ์†Œ ํŒŒ์ผ

Transformers ๋ชจ๋ธ ์ €์žฅ์†Œ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋ธ ํŒŒ์ผ๊ณผ ์ „์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ

  • config.json ํŒŒ์ผ์€ ์ˆจ๊ฒจ์ง„ ๋ ˆ์ด์–ด ์ˆ˜, ์–ดํœ˜ ํฌ๊ธฐ, ์–ดํ…์…˜ ํ—ค๋“œ ์ˆ˜, ๊ฐ ํ—ค๋“œ์˜ ์ฐจ์› ๋“ฑ ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋ธ์˜ ์„ค๊ณ„๋„์ž…๋‹ˆ๋‹ค.

  • model.safetensors ํŒŒ์ผ์€ ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์˜ ๋ ˆ์ด์–ด์™€ ๊ฐ€์ค‘์น˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ์˜ ๊ฒฝ์šฐ, ๋กœ๋”ฉ์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด safetensors ํŒŒ์ผ์ด ์ƒค๋“œ(shard)๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๊ฐ€ ์–ด๋–ค safetensors ํŒŒ์ผ์—์„œ ๋กœ๋“œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด model.safetensors.index.json ํŒŒ์ผ์„ ์‚ดํŽด๋ณด์„ธ์š”.

    {
    "metadata": {
      "total_size": 16060522496
    },
    "weight_map": {
      "lm_head.weight": "model-00004-of-00004.safetensors",
      "model.embed_tokens.weight": "model-00001-of-00004.safetensors",
      ...
      }
    }

    ๋ชจ๋ธ ์นด๋“œ์˜ โ†— ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ด ๋งคํ•‘์„ ์‹œ๊ฐํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    Safetensors๋Š” ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ pickle๋ณด๋‹ค ๋” ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅธ ์ง๋ ฌํ™” ํ˜•์‹์ž…๋‹ˆ๋‹ค. bin, pth, ๋˜๋Š” ckpt์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ pickle ์ฒ˜๋ฆฌ๋œ ๊ฐ€์ค‘์น˜๋ฅผ ๋งŒ๋‚˜์‹ค ์ˆ˜ ์žˆ์ง€๋งŒ, safetensors๋Š” ๋” ๋‚˜์€ ๋Œ€์•ˆ์œผ๋กœ ๋ชจ๋ธ ์ƒํƒœ๊ณ„์—์„œ ์ ์  ๋” ๋งŽ์ด ์ฑ„ํƒ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋ธ์—๋Š” ํ…์ŠคํŠธ ์ƒ์„ฑ ๋ฐฉ๋ฒ•(์ƒ˜ํ”Œ๋ง ์—ฌ๋ถ€, ์ƒ˜ํ”Œ๋ง ๋Œ€์ƒ ์ƒ์œ„ ํ† ํฐ, ์˜จ๋„, ์ƒ์„ฑ ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ์šฉ ํŠน์ˆ˜ ํ† ํฐ ๋“ฑ)์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” generation_config.json ํŒŒ์ผ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Preprocessor

  • tokenizer_config.json ํŒŒ์ผ์€ ๋ชจ๋ธ์ด ์ถ”๊ฐ€ํ•œ ํŠน์ˆ˜ ํ† ํฐ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ˆ˜ ํ† ํฐ์€ ๋ฌธ์žฅ์˜ ์‹œ์ž‘, ์ฑ„ํŒ… ํ…œํ”Œ๋ฆฟ์˜ ํŠน์ • ํฌ๋งท, ์ด๋ฏธ์ง€ ํ‘œ์‹œ ๋“ฑ ๋ชจ๋ธ์— ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—๋Š” ๋ชจ๋ธ์ด ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ž…๋ ฅ ์‹œํ€€์Šค ๊ธธ์ด, ์ „์ฒ˜๋ฆฌ ํด๋ž˜์Šค, ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜ํ™˜๋˜๋Š” ์ถœ๋ ฅ๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • tokenizer.json ํŒŒ์ผ์€ ๋ชจ๋ธ์ด ํ•™์Šตํ•œ ์–ดํœ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • special_tokens_map.json์€ ํŠน์ˆ˜ ํ† ํฐ์˜ ๋งคํ•‘์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Llama 3.1-8B-Instruct์—์„œ ๋ฌธ์ž์—ด ์‹œ์ž‘ ํ† ํฐ์€ "<|begin_of_text|>"์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋‹ฌ๋ฆฌํ‹ฐ์˜ ๊ฒฝ์šฐ, tokenizer_config.json ํŒŒ์ผ์€ preprocessor_config.json์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ๋ชจ๋ธ ์‚ฌ์šฉ

๋ชจ๋“  transformer ๋ชจ๋ธ์€ ํ•œ ์ค„๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ pipeline ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ๊ณ ์ˆ˜์ค€ API๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋” ์„ธ๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜๋ฉด AutoModel์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# With pipeline, just specify the task and the model id from the Hub.
from transformers import pipeline
pipe = pipeline("text-generation", model="distilbert/distilgpt2")

# If you want more control, you will need to define the tokenizer and model.
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilgpt2")
model = AutoModelForCausalLM.from_pretrained("distilbert/distilgpt2")

์ปค๋ฐ‹ ํ•ด์‹œ, ํƒœ๊ทธ ์ด๋ฆ„, ๋˜๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ • ๋ฒ„์ „์—์„œ ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

model = AutoModel.from_pretrained(
    "julien-c/EsperBERTo-small", revision="v2.0.1"  # tag name, or branch name, or commit hash
)

ํŠน์ • ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜๋ ค๋ฉด Use in Transformers๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘๋™ํ•˜๋Š” ์Šค๋‹ˆํŽซ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์Šค๋‹ˆํŽซ ํ•˜๋‹จ์˜ โ€œRead model documentationโ€์„ ํด๋ฆญํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ๊ณต์œ 

transformers๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ๊ณต์‹ ๋ฌธ์„œ์˜ ๋ชจ๋ธ ๊ณต์œ  ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

transformers์˜ ๋ชจ๋ธ๊ณผ ํ† ํฌ๋‚˜์ด์ €์™€ ๊ฐ™์€ ๋งŽ์€ ํด๋ž˜์Šค์—๋Š” push_to_hub ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด ํŒŒ์ผ์„ ์ €์žฅ์†Œ์— ์‰ฝ๊ฒŒ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Pushing model to your own account
model.push_to_hub("my-awesome-model")

# Pushing your tokenizer
tokenizer.push_to_hub("my-awesome-model")

# Pushing all things after training
trainer.push_to_hub()

๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋ธ ๊ณต์œ  ๊ฐ€์ด๋“œ๋ฅผ ๊ฒ€ํ† ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค

Update on GitHub