Hub에서 데이터셋을 골라줍니다.
그렇게 위에서 가져온 데이터셋을 builder를 이용해 다운로드 하지않고 정보를 확인할 수 있습니다.
from datasets import load_dataset_builder
ds_builder = load_dataset_builder("불러올 데이터셋 이름")
ds_builder.info.description # 데이터셋 설명 나옴
ds_builder.info.features # 데이터셋 특징 설명
위에 2. 3. 에서 알맞은 데이터 셋을 찾았다면 load 함수를 이용하여 불러와 줍니다.
하위 집합이 있을 경우 명시해서 불러와 주어야 합니다.
from datasets import load_dataset
dataset = load_dataset("불러올 데이터셋 이름", split="하위 집합 이름")
하위 집합을 확인 할 수 있습니다.
from datasets import get_dataset_split_names
get_dataset_split_names("불러올 데이터셋 이름")
# 예시 ["train", "validation", "test"]
하위 집합을 명시하지 않을 경우 dataset 대신 datasetData
from datasets import load_dataset
dataset = load_dataset("불러올 데이터셋 이름")
# Datasets 대신 DataDict 객체를 반환합니다.
DatasetDict({
train: Dataset({
features: ['text', 'label'],
num_rows: 8530
})
validation: Dataset({
features: ['text', 'label'],
num_rows: 1066
})
test: Dataset({
features: ['text', 'label'],
num_rows: 1066
})
})
하위 데이터 세트가 있는 경우가 있을 수 있습니다.
from datasets import get_dataset_config_names
configs = get_dataset_config_names("불러올 데이터셋 이름")
print(configs)
# 예시 ['cs-CZ', 'de-DE', 'en-AU', 'en-GB', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'ko-KR', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'zh-CN', 'all']
그럴경우 하위 데이터 세트도 선택을 해주어야 합니다.
from datasets import load_dataset
mindsFR = load_dataset("불러올 데이터셋 이름", "하위 데이터 세트", split="하위 집합")
악성 코드가 실행되지 않도록 데이터 세트 로딩 스크립트와 작성자를 검토해야 합니다. 로드 스크립트와 데이터세트를 사용하려면 trust_remote_code=True
속성을 설정해주어야 합니다.
from datasets import get_dataset_config_names, get_dataset_split_names, load_dataset
c4 = load_dataset("c4", "en", split="train", trust_remote_code=True)
2-1 모델을 불러와줍니다.
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("트레이닝할 모델 이름", num_labels=해당 모델 레이블 개수)
해당 데이터셋 명세에서 레이블이 몇개 있는지 확인 해서 넣어줍니다. (찾아서 넣어주어야합니다. 없을경우 생략 가능)
2-2 TrainingArguments 클래스를 생성해줍니다.
역할
from transformers import TrainingArguments
training_args = TrainingArguments(output_dir="출력파일 저장할 디렉토리 경로")
2-3 모델의 성능 지표를 기록해줄 라이브러리 꽂기
→ 기본값으로 훈련중에 모델 성능을 평가해주지 않기 떄문입니다.
import numpy as np
import evaluate
metric = evaluate.load("accuracy")
def compute_metrics(eval_pred):
logits, labels = eval_pred
predictions = np.argmax(logits, axis=-1)
return metric.compute(predictions=predictions, references=labels)
+) 각 에폭(훈련 한 싸이클)마다 정확도를 확인하고 싶을 경우
from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(output_dir="결과 출력 디렉토리 경로", eval_strategy="epoch")
2-4 훈련객체 만들어주고 훈련하기 ⭐️⭐️⭐️
trainer = Trainer(
model=model,
args=training_args,
train_dataset=small_train_dataset,
eval_dataset=small_eval_dataset,
compute_metrics=compute_metrics,
)
trainer.train() # 호출로 미세튜닝을 해줍니다.
https://qwen.readthedocs.io/en/latest/training/SFT/llama_factory.html