Code N Solve ๐: Google Colab์์ Transformers ๋ชจ๋ธ ํ์ต ์ ๋ฐ์ํ๋ ์ค๋ฅ ํด๊ฒฐ ๊ฐ์ด๋
Transformer ๊ธฐ๋ฐ NLP ๋ชจ๋ธ์ Google Colab์์ ํ์ตํ๋ ๋์ค ์ด๋ณด์๊ฐ ๊ฒช์ ์ ์๋ ๋ค์ํ ์ค๋ฅ์ ๋ํด ์ ๋ฆฌํด๋ณด์๋ค.
ํนํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋ฌธ์ , ํ์ผ ๊ฒฝ๋ก ์ค์ , ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฌธ์ ๋ฑ ๋ค์ํ ์ค๋ฅ๋ฅผ ์ดํดํ๊ณ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
Google Colab?
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ Jupyter ๋ ธํธ๋ถ ํ๊ฒฝ์ผ๋ก, Python ์ฝ๋๋ฅผ ์คํํ๊ณ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ์ตํ๋ ๋ฐ ์ ์ฉํ๋ค.
- ํนํ, GPU๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํ์ฌ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ค๋ฃจ๋๋ฐ ํฐ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ 1
- Hugging Face2์์ ์ ๊ณตํ๋ ์์ฐ์ด ์ฒ๋ฆฌ (NLP) ๋ชจ๋ธ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ์ด๋ค.
๋ฌธ์ 1: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ์ค๋ฅ - sklearn
๊ณผ datasets
-
Google Colab์์ Transformers ๋ชจ๋ธ ํ์ต์ ์์ํ๋ ค๋ฉด
Hugging Face transformers
,torch
,datasets
๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ค. -
ํ์ง๋ง
sklearn
์ ์ค์นํ ๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.ValueError: metadata-generation-failed
-
์ด ์ค๋ฅ๋
sklearn
๋์scikit-learn
์ ์ค์นํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
-
sklearn
๋์scikit-learn
์ ์ค์นํ๋ค.3!pip install -U scikit-learn
-
๊ทธ ์ธ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ ๋ฒ์ ์ค์นํ๋ค.
!pip install transformers torch datasets
-
์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๊ด๋ จ ์ค๋ฅ๋ ํด๊ฒฐ๋๋ค.
๋ฌธ์ 2: Google Drive ํ์ผ ๊ฒฝ๋ก ์ค์ ๋ฌธ์ 4
- ๋ฐ์ดํฐ์ ์ Colab์์ ์ฌ์ฉํ๋ ค๋ฉด Google Drive์ ์ ์ฅ๋ ํ์ผ์ Colab์ ์ฐ๊ฒฐํด์ผ ํ๋ค.
- Colab์ Drive๋ฅผ ๋ง์ดํธํ์ง ์์ผ๋ฉด
FileNotFoundError
์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
-
Google Drive๋ฅผ Colab์ ๋ง์ดํธํ๋ค.
from google.colab import drive drive.mount('/content/drive')
-
ํ์ผ ๊ฒฝ๋ก๋ฅผ Google Drive ๊ฒฝ๋ก๋ก ์ง์ ํ๋ค.
- ์๋ฅผ ๋ค์ด,
Dataset.json
ํ์ผ์ด Google Drive์Dataset
ํด๋์ ์๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๋ค.
import pandas as pd file_path = "/content/drive/MyDrive/Dataset/Dataset.json" data = pd.read_json(file_path, lines=True)
/content/drive/
๋ Google Drive์ ๋ง์ดํธํ์๋์ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ค.
- ์๋ฅผ ๋ค์ด,
๋ฌธ์ 3: Transformers ๋ชจ๋ธ ํ์ต ์ ๋ฐ์ดํฐ ํจ๋ฉ ์ค๋ฅ2
- ๋ชจ๋ธ ํ์ต ์ค ๋ฐฐ์น ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ์ผ์ ํ์ง ์์ผ๋ฉด
ValueError: expected sequence of length ...
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค. - ์ด๋ ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋ชจ๋ ์
๋ ฅ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ฅผ ๋ง์ถ๊ธฐ ์ํด
DataCollatorWithPadding
์ ์ฌ์ฉํ๋ค.
from transformers import DataCollatorWithPadding
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset,
data_collator=data_collator, # ์๋ ํจ๋ฉ ์ถ๊ฐ
)
- ์ด๋ ๊ฒ ์ค์ ํ๋ฉด,
Trainer
๊ฐ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ฅผ ์๋์ผ๋ก ๋ง์ถฐ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
๋ฌธ์ 4: ๋ชจ๋ธ ํ์ต ์ wandb
๋ก๊ทธ์ธ ์์ฒญ5
- Hugging Face
Trainer
๋ Weights & Biases(wandb
)๋ฅผ ์ฌ์ฉํด ํ์ต ๊ณผ์ ์ ์ถ์ ํ ์ ์๋ค. - ํ์ง๋ง ๋ก๊ทธ์ธ ์์ฒญ์ด ๋ํ๋ ์ ์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
wandb
๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉดTrainer
์ค์ ์์report_to="none"
์ผ๋ก ์ง์ ํ์ฌ ๋นํ์ฑํํ๋ค.
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=3,
weight_decay=0.01,
report_to="none" # wandb ๋นํ์ฑํ
)
- ์ด๋ ๊ฒ ์ค์ ํ๋ฉด
wandb
๋ก๊ทธ์ธ ์์ฒญ ์์ด ํ์ต์ด ์งํ๋๋ค.
๊ฒฐ๋ก
Google Colab์์ Transformers ๋ชจ๋ธ์ ํ์ตํ๋ฉด์ ๋ฐ์ํ๋ ์ฃผ์ ์ค๋ฅ๋ค์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์๋ค.
๊ฐ ๋จ๊ณ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ค์ ์ดํดํ๊ณ ์ด๋ฅผ ํด๊ฒฐํด ๋๊ฐ๋ฉด, Colab ํ๊ฒฝ์์ ํจ์จ์ ์ผ๋ก ๋ชจ๋ธ์ ํ์ต์ํฌ ์ ์๋ค.
์ด ๊ธ์ ํตํด Google Colab์์ ๋ฐ์ํ ์ ์๋ ๋ค์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๋ณด๋ค ์์ ์ ์ผ๋ก NLP ๋ชจ๋ธ์ ํ์ตํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.