voice_clone_v3 / transformers /docs /source /ko /autoclass_tutorial.md
ahassoun's picture
Upload 3018 files
ee6e328
|
raw
history blame
No virus
8.14 kB

AutoClass๋กœ ์‚ฌ์ „ ํ•™์Šต๋œ ์ธ์Šคํ„ด์Šค ๋กœ๋“œ[[load-pretrained-instances-with-an-autoclass]]

ํŠธ๋žœ์Šคํฌ๋จธ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋งค์šฐ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒดํฌํฌ์ธํŠธ์— ๋งž๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๋ฉฐ ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ Transformer ํ•ต์‹ฌ ์ฒ ํ•™์˜ ์ผํ™˜์œผ๋กœ, AutoClass๋Š” ์ฃผ์–ด์ง„ ์ฒดํฌํฌ์ธํŠธ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๋ก ํ•˜์—ฌ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. from_pretrained() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋ธ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ํˆฌ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฒดํฌํฌ์ธํŠธ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ฝ”๋“œ๊ฐ€ ํ•œ ์ฒดํฌํฌ์ธํŠธ์—์„œ ์ž‘๋™ํ•˜๋ฉด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋‹ค๋ฅด๋”๋ผ๋„ ๋‹ค๋ฅธ ์ฒดํฌํฌ์ธํŠธ(์œ ์‚ฌํ•œ ์ž‘์—…์— ๋Œ€ํ•ด ํ•™์Šต๋œ ๊ฒฝ์šฐ)์—์„œ๋„ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜๋Š” ๋ชจ๋ธ์˜ ๊ณจ๊ฒฉ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ฒดํฌํฌ์ธํŠธ๋Š” ์ฃผ์–ด์ง„ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, BERT๋Š” ์•„ํ‚คํ…์ฒ˜์ด๊ณ , bert-base-uncased๋Š” ์ฒดํฌํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ์•„ํ‚คํ…์ฒ˜ ๋˜๋Š” ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์šฉ์–ด์ž…๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๋‹ค์Œ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค:

  • ์‚ฌ์ „ ํ•™์Šต๋œ ํ† ํฌ๋‚˜์ด์ € ๋กœ๋“œํ•˜๊ธฐ.
  • ์‚ฌ์ „ ํ•™์Šต๋œ ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์„œ ๋กœ๋“œํ•˜๊ธฐ.
  • ์‚ฌ์ „ ํ•™์Šต๋œ ํŠน์ง• ์ถ”์ถœ๊ธฐ ๋กœ๋“œํ•˜๊ธฐ.
  • ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ํ”„๋กœ์„ธ์„œ ๋กœ๋“œํ•˜๊ธฐ.
  • ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ ๋กœ๋“œํ•˜๊ธฐ.

AutoTokenizer[[autotokenizer]]

๊ฑฐ์˜ ๋ชจ๋“  NLP ์ž‘์—…์€ ํ† ํฌ๋‚˜์ด์ €๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ํ† ํฌ๋‚˜์ด์ €๋Š” ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ชจ๋ธ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. [AutoTokenizer.from_pretrained]๋กœ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค:

>>> from transformers import AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅ์„ ํ† ํฐํ™”ํ•ฉ๋‹ˆ๋‹ค:

>>> sequence = "In a hole in the ground there lived a hobbit."
>>> print(tokenizer(sequence))
{'input_ids': [101, 1999, 1037, 4920, 1999, 1996, 2598, 2045, 2973, 1037, 7570, 10322, 4183, 1012, 102], 
 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}

AutoImageProcessor[[autoimageprocessor]]

๋น„์ „ ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์ž…๋ ฅ ํ˜•์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

>>> from transformers import AutoImageProcessor

>>> image_processor = AutoImageProcessor.from_pretrained("google/vit-base-patch16-224")

AutoFeatureExtractor[[autofeatureextractor]]

์˜ค๋””์˜ค ์ž‘์—…์˜ ๊ฒฝ์šฐ ํŠน์ง• ์ถ”์ถœ๊ธฐ๊ฐ€ ์˜ค๋””์˜ค ์‹ ํ˜ธ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์ž…๋ ฅ ํ˜•์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

[AutoFeatureExtractor.from_pretrained]๋กœ ํŠน์ง• ์ถ”์ถœ๊ธฐ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค:

>>> from transformers import AutoFeatureExtractor

>>> feature_extractor = AutoFeatureExtractor.from_pretrained(
...     "ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition"
... )

AutoProcessor[[autoprocessor]]

๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž‘์—…์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์ „์ฒ˜๋ฆฌ ๋„๊ตฌ๋ฅผ ๊ฒฐํ•ฉํ•œ ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด LayoutLMV2 ๋ชจ๋ธ์—๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์„œ์™€ ํ…์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ํ”„๋กœ์„ธ์„œ๋Š” ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

[AutoProcessor.from_pretrained()]๋กœ ํ”„๋กœ์„ธ์„œ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค:

>>> from transformers import AutoProcessor

>>> processor = AutoProcessor.from_pretrained("microsoft/layoutlmv2-base-uncased")

AutoModel[[automodel]]

๋งˆ์ง€๋ง‰์œผ๋กœ AutoModelForํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฃผ์–ด์ง„ ์ž‘์—…์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์˜ ์ „์ฒด ๋ชฉ๋ก์€ [์—ฌ๊ธฐ](model_doc/auto)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”). ์˜ˆ๋ฅผ ๋“ค์–ด, [`AutoModelForSequenceClassification.from_pretrained`]๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œํ€€์Šค ๋ถ„๋ฅ˜์šฉ ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
>>> from transformers import AutoModelForSequenceClassification

>>> model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased")

๋™์ผํ•œ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ž‘์—…์— ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

>>> from transformers import AutoModelForTokenClassification

>>> model = AutoModelForTokenClassification.from_pretrained("distilbert-base-uncased")

PyTorch๋ชจ๋ธ์˜ ๊ฒฝ์šฐ from_pretrained() ๋ฉ”์„œ๋“œ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ํ”ผํด์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ง„ torch.load()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค์—์„œ ๊ฐ€์ ธ์™”๊ฑฐ๋‚˜ ๋ณ€์กฐ๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ์€ ๋กœ๋“œํ•˜์ง€ ๋งˆ์„ธ์š”. ํ—ˆ๊น… ํŽ˜์ด์Šค ํ—ˆ๋ธŒ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๊ณต๊ฐœ ๋ชจ๋ธ์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ์œ„ํ—˜์ด ๋ถ€๋ถ„์ ์œผ๋กœ ์™„ํ™”๋˜๋ฉฐ, ๊ฐ ์ปค๋ฐ‹ ์‹œ ๋ฉ€์›จ์–ด๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. GPG๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ช…๋œ ์ปค๋ฐ‹ ๊ฒ€์ฆ๊ณผ ๊ฐ™์€ ๋ชจ๋ฒ”์‚ฌ๋ก€๋Š” ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ…์„œํ”Œ๋กœ์šฐ์™€ Flax ์ฒดํฌํฌ์ธํŠธ๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ, from_pretrained๋ฉ”์„œ๋“œ์— from_tf ์™€ from_flax ํ‚ค์›Œ๋“œ ๊ฐ€๋ณ€ ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ AutoTokenizer ํด๋ž˜์Šค์™€ AutoModelFor ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ํ•™์Šต๋œ ๋ชจ๋ธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งค๋ฒˆ ์˜ฌ๋ฐ”๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์ƒˆ๋กญ๊ฒŒ ๋กœ๋“œํ•œ ํ† ํฌ๋‚˜์ด์ €, ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์„œ, ํŠน์ง• ์ถ”์ถœ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ์„ธ ํŠœ๋‹์šฉ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ TFAutoModelFor ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฃผ์–ด์ง„ ์ž‘์—…์— ๋Œ€ํ•ด ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, [TFAutoModelForSequenceClassification.from_pretrained]๋กœ ์‹œํ€€์Šค ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•œ ๋ชจ๋ธ์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค:

>>> from transformers import TFAutoModelForSequenceClassification

>>> model = TFAutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased")

์‰ฝ๊ฒŒ ๋™์ผํ•œ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ž‘์—…์— ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

>>> from transformers import TFAutoModelForTokenClassification

>>> model = TFAutoModelForTokenClassification.from_pretrained("distilbert-base-uncased")

์ผ๋ฐ˜์ ์œผ๋กœ, AutoTokenizerํด๋ž˜์Šค์™€ TFAutoModelFor ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ํ•™์Šต๋œ ๋ชจ๋ธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งค๋ฒˆ ์˜ฌ๋ฐ”๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์ƒˆ๋กญ๊ฒŒ ๋กœ๋“œํ•œ ํ† ํฌ๋‚˜์ด์ €, ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์„œ, ํŠน์ง• ์ถ”์ถœ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ์„ธ ํŠœ๋‹์šฉ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค.