본문 바로가기
IT모든것/IT소식

LLM 파인튜닝 학습 모델 데이터셋 파이썬 성능 기본 코드 작성

by godmulzu 2024. 3. 17.
반응형

LLM 파인튜닝이란, 이미 큰 데이터셋에서 학습된 언어 모델을, 새로운 작은 데이터셋이나 특정한 작업에 맞게 추가로 학습하는 과정입니다. 예를 들어, GPT-3나 BERT와 같은 LLM을 사용하여, 텍스트 생성, 텍스트 요약, 감정 분석 등의 작업을 수행할 수 있습니다. LLM 파인튜닝은, 처음부터 모델을 학습하는 것보다 훨씬 적은 데이터와 컴퓨팅 자원을 필요로 하며, 모델의 성능을 향상할 수 있습니다.

목차

    LLM 파인튜닝 방법

     

    반응형


    LLM 파인튜닝을 하기 위해서는, 먼저 적절한 사전 학습된 모델을 선택해야 합니다. 모델의 선택은, 작업의 목적, 데이터의 양과 품질, 모델의 크기와 복잡도, 학습 시간과 비용 등의 요인에 따라 달라집니다.

     

    일반적으로, 작업과 데이터가 모델이 사전 학습된 도메인과 유사할수록, 모델의 성능이 높아집니다. 예를 들어, 의료 텍스트를 다루는 작업이라면, BioBERT와 같은 의료 도메인에 특화된 모델을 선택하는 것이 좋습니다.

     

    LLM 파인튜닝을 파이썬으로 하는 방법은, 여러 가지 라이브러리와 프레임워크를 사용할 수 있습니다. 가장 널리 사용되는 것은, Hugging Face의 Transformers 라이브러리입니다.

     

    이 라이브러리는, 다양한 LLM들을 쉽게 불러오고, 학습하고, 사용할 수 있게 해 줍니다. 또한, PyTorch나 Tensor Flow와 같은 딥러닝 프레임워크와 호환됩니다. Transformers 라이브러리를 사용하려면, 다음과 같은 순서로 진행할 수 있습니다:
    작업에 맞는 데이터셋을 준비합니다. 데이터셋은, 입력 텍스트와 레이블, 혹은 입력 텍스트와 출력 텍스트로 구성될 수 있습니다. 데이터셋은, 학습, 검증, 테스트 용으로 나누어야 합니다.

     

    작업에 맞는 사전 학습된 모델과 토크나이저를 불러옵니다. Transformers 라이브러리는, 다양한 모델과 토크나이저를 제공하며, 커스텀 모델과 토크나이저도 사용할 수 있습니다.


    모델과 데이터셋을 연결하는 트레이너를 생성합니다. 트레이너는, 모델의 학습과 평가를 담당하며, 학습률, 배치 크기, 에폭 수, 옵티마이저, 손실 함수 등의 하이퍼파라미터를 설정할 수 있습니다.


    트레이너를 사용하여 모델을 학습시킵니다. 학습 과정에서, 검증 데이터셋을 사용하여 모델의 성능을 평가하고, 가장 좋은 모델을 저장합니다.
    트레이너를 사용하여 모델을 테스트합니다. 테스트 데이터셋을 사용하여 모델의 최종 성능을 측정하고, 결과를 분석합니다.
    학습된 모델을 사용하여 새로운 텍스트에 대한 예측을 수행합니다. 텍스트를 토크나이저로 인코딩하고, 모델에 입력하여, 출력을 디코딩합니다.

    반응형

     

     

    LLM 파인튜닝 성능 여러요인 

     

    반응형

     

    예를 들어, 작업의 종류와 난이도, 데이터셋의 양과 품질, 모델의 크기와 복잡도, 파인튜닝 방법과 하이퍼파라미터 등이 모두 성능에 영향을 줄 수 있습니다. 따라서 어떤 모델이 가장 좋은 성능을 내는지는 일반적으로 말할 수 없으며, 각 작업과 데이터셋에 대해 실험적으로 비교해야 합니다.

    반응형


    그러나 일부 연구에서는 다양한 LLM들을 파인튜닝하여 여러 자연어 처리 작업에 적용하고, 성능을 평가하였습니다. 예를 들어, GLUE 벤치마크는 9개의 자연어 이해 작업을 포함하고 있으며, SuperGLUE 벤치마크는 8개의 자연어 이해 작업을 포함하고 있습니다. 이러한 벤치마크에서는 LLM들의 파인튜닝 성능을 리더보드에 공개하고 있습니다. 현재, GLUE 리더보드에서는 T5-11B 모델이 가장 높은 점수를 기록하고 있으며, SuperGLUE 리더보드에서는 GPT-3 모델이 가장 높은 점수를 기록하고 있습니다.


    하지만 이러한 벤치마크에서의 성능은 모든 작업에 적용될 수 있는 것은 아닙니다. 실제로 LLM을 파인튜닝할 때는, 작업의 특성과 목적에 맞는 적절한 모델과 데이터셋을 선택하고, 최적의 파인튜닝 방법과 하이퍼파라미터를 찾아야 합니다.

     

    LLM 파인튜닝 파이썬 작업 단계

     

     

    Pytorch와 Python을 사용하여 LLM 파인튜닝을 진행하려면 다음과 같은 단계를 따라야 합니다.
    원하는 LLM을 선택하고, Hugging Face의 transformers 라이브러리를 이용하여 모델과 토크나이저를 불러옵니다. 예를 들어, GPT-4 모델을 사용하려면 다음과 같은 코드를 작성할 수 있습니다.

    Python

    from transformers import AutoModelForCausalLM, AutoTokenizer
    model = AutoModelForCausalLM.from_pretrained("openai-gpt-4")
    tokenizer = AutoTokenizer.from_pretrained("openai-gpt-4")


    파인튜닝할 데이터셋을 준비하고, datasets 라이브러리를 이용하여 로드하고 전처리합니다. 예를 들어, alpaca 데이터셋을 사용하려면 다음과 같은 코드를 작성할 수 있습니다.

    Python

    from datasets import load_dataset
    dataset = load_dataset("alpaca")
    dataset = dataset.map(lambda x: tokenizer(x ["input"], return_tensors="pt"), batched=True)


    파인튜닝에 필요한 하이퍼파라미터와 옵션을 설정하고, TrainingArguments 클래스를 이용하여 객체를 생성합니다. 예를 들어, 배치 크기를 8, 에폭 수를 5로 설정하려면 다음과 같은 코드를 작성할 수 있습니다.

    Python

    from transformers import TrainingArguments
    training_args = TrainingArguments(
        output_dir="output",
        per_device_train_batch_size=8,
        num_train_epochs=5,
        logging_steps=100,
        save_steps=500,


    파인튜닝 방법을 선택하고, 해당 방법에 맞는 모델과 트레이너를 생성합니다. 예를 들어, LoRA 방법을 사용하려면 다음과 같은 코드를 작성할 수 있습니다.

    Python

    from peft import LoraConfig, get_peft_model, prepare_model_for_int8_training
    from trl import SFTTrainer
    lora_config = LoraConfig.from_pretrained("openai-gpt-4", rank=64, use_deepspeed=True)
    model = get_peft_model(model, lora_config)
    model = prepare_model_for_int8_training(model, lora_config)
    trainer = SFTTrainer(model=model, args=training_args, train_dataset=dataset ["train"])


    트레이너의 train 메서드를 호출하여 파인튜닝을 시작합니다.

    Python

    trainer.train()


    이상이 LLM 파인튜닝을 위한 기본적인 코드와 팁입니다.

    반응형
    반응형