인공지능 개발자 수다(유튜브 바로가기) 자세히보기

자연어처리/LLM을 위한 코딩

[LLM] 모델 학습 with Hugging Face (Trainer, trl) (5)

Suda_777 2025. 2. 13. 02:34

목차

    반응형

    1. 개요

    이번 포스팅에서는

    HuggingFace에서 제공하는

    프레임워크에 대해 소개하겠다.

    라이브러리 역할 주요 기능
    Transformers 모델, 토크나이저 AutoModel, AutoTokenizer 등
    Trainer 지도학습 (SFT) Trainer, TrainingArguments
    TRL 강화학습 (RLHF) PPOTrainer, SFTTrainer
    DeepSpeed GPU 메모리 최적화 ZeRO Stage, Hugging Face Trainer와 연동
    Accelerate 분산 학습 최적화 여러 GPU/TPU 환경에서 Trainer 가속화
    PEFT (Parameter Efficient Fine-Tuning) 파라미터 효율적 파인튜닝 기법 지원 LoraConfig, get_peft_model
    Evaluate 모델 평가 load_metric("bleu"), compute()

     


    2. Trainer

    2.1. Trainer 설명

    transformers.Trainer는 Hugging Face의 transformers 라이브러리에서 제공하는 학습 도구로, 모델 학습을 편리하게 관리할 수 있다.

     

    세가지 단계에 걸쳐 학습을 진행한다.

    1. 학습 설정
    2. Trainer 설정
    3. 학습 실행

     


    2.2. 기본 사용법

    학습 설정 (TrainingArguments 설명 출처 링크)

    from transformers import TrainingArguments
    
    training_args = TrainingArguments(
        output_dir="./results",          # 모델 저장 경로
        evaluation_strategy="epoch",     # 평가 주기 (매 epoch마다 평가)
        save_strategy="epoch",           # 체크포인트 저장 주기
        per_device_train_batch_size=8,   # 학습 배치 크기
        per_device_eval_batch_size=8,    # 평가 배치 크기
        num_train_epochs=3,              # 학습 epoch 수
        weight_decay=0.01,               # L2 정규화 (Weight Decay)
        logging_dir="./logs",            # 로그 저장 경로
        logging_strategy="epoch",        # 로그 저장 주기
        save_total_limit=2,              # 저장할 체크포인트 개수 제한
        push_to_hub=False,               # 모델을 Hugging Face Hub에 업로드할지 여부
    )

     

    Trainer 설정 (Trainer 설명 출처 링크)

    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=tokenized_datasets["train"],
        eval_dataset=tokenized_datasets["test"],
    )

     

    학습 실행

    trainer.train()

     


    2.3. 추가 옵션

    체크포인트에서 다시 학습하기

    trainer.train(resume_from_checkpoint=True)

     

    모델 저장 및 로드

    trainer.save_model("./my_model")  # 모델 저장
    model = AutoModelForSequenceClassification.from_pretrained("./my_model")  # 저장된 모델 로드

     

    커스텀 metric 추가

    • datasets.load_metric 에서 기본 metric 제공
    • compute_metrics 에 평가 함수 추가
    import numpy as np
    from datasets import load_metric
    
    metric = load_metric("accuracy")
    
    def compute_metrics(eval_pred):
        logits, labels = eval_pred
        predictions = np.argmax(logits, axis=-1)
        return metric.compute(predictions=predictions, references=labels)
    
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=tokenized_datasets["train"],
        eval_dataset=tokenized_datasets["test"],
        compute_metrics=compute_metrics,  # 평가 함수 추가
    )

     

    datasets.load_metric()에서 지원되는 metric 종류

     

    • accuracy (정확도)
    • f1 (F1-score)
    • precision (정밀도)
    • recall (재현율)
    • roc_auc (ROC AUC)
    • bleu (BLEU - 번역 성능 평가)
    • wer (Word Error Rate - 음성 인식 평가)
    • mse (Mean Squared Error - 회귀 문제)

     


    3. TRL

    3.1. 설명

    TRL (Transformer Reinforcement Learning)은

    Hugging Face가 제공하는 강화학습(Reinforcement Learning) 기반 언어모델 트레이닝 라이브러리이다.

     

    다양한 trainer를 제공하고 있으며, 사용방법은 간단하기 때문에

    불러와서 사용하면 되겠다.

    아래 경로로 가서 확인해 보자

    • 왼쪽 목차 > API > Trainers > 원하는 trainer 클릭

    TRL 링크

     

    TRL - Transformer Reinforcement Learning

     

    huggingface.co

     

    trainer를 선택해 들어가면 아래와 같이

    실행할 수 있는 코드와

    파라미터를 정리해둔 문서가 있다.

     

     

    deepSpeed 부터는 다음 포스팅에서 설명하겠다.

     

    반응형