• 카테고리

    질문 & 답변
  • 세부 분야

    자연어 처리

  • 해결 여부

    미해결

Fine-Tuning 한 Model 을 다시 Fine-tuning 할 수 있나요?

23.10.27 17:19 작성 23.10.27 17:21 수정 조회수 732

0

학습 중에 궁금한 점이 생겨 질문 드립니다.

fine-tuning 한 이후에 추가로 학습 시키고 싶은 dataset이 생겼을 경우,

이전 학습된 peft model 을 이어서 fine tuning 을 진행 할 수 있을까요?

 

 

 

답변 2

·

답변을 작성해보세요.

1

안녕하세요~. 반갑습니다.

peft를 적용한 fine-tuning한 모델을 다시 fine-tuning 하고 싶으실 경우

training을 진행할때 마지막에 --merge-adapter argument를 추가로 넣어줘서 config.json 파일을 포함한 학습결과를 폴더로 저장한뒤에

다시 fine-tuning 하실때 해당 fine-tuning된 결과를 가지고 있는 폴더를 model의 초기 path로 설정해서 다시 fine-tuning 해주시면 됩니다.

예를 들어서 설명하면 아래와 같습니다.

  1. 학습과정에서 --merge-adapter config추가해서 fine-tuning

     

!autotrain llm --train \
    --project_name "llama2-korquad-finetuning" \
    --model "TinyPixel/Llama-2-7B-bf16-sharded" \
    --data_path "korquad_prompt" \
    --text_column "text" \
    --use_peft \
    --use_int4 \
    --learning_rate 2e-4 \
    --train_batch_size 4 \
    --num_train_epochs 100 \
    --trainer sft \
    --model_max_length 256 \
    --merge-adapter
  1. 위 fine-tuning된 모델을 다시 fine-tuning하고 싶을 경우 model path를 fine-tuning된 학습결과 폴더로 지정해서 다시 학습 (당연히 실행환경에 llama2-korquad-finetuning라는 폴더가 먼저 존재해야만 합니다.)

!autotrain llm --train \
    --project_name "llama2-korquad-finetuning-2" \
    --model "./llama2-korquad-finetuning" \
    --data_path "korquad_prompt" \
    --text_column "text" \
    --use_peft \
    --use_int4 \
    --learning_rate 2e-4 \
    --train_batch_size 4 \
    --num_train_epochs 100 \
    --trainer sft \
    --model_max_length 256

 

좋은 하루되세요~.

감사합니다.

hariqueen98님의 프로필

hariqueen98

2024.01.26

!autotrain llm --train \    
  --project-name "merge1-checkpoint" \    
  --model "./checkpoint-720" \    
  --data-path "aaa" \    
  --text-column "text" \    
  --peft \    
  --quantization "int4" \    
  --lr 2e-4 \    
  --batch-size 8 \    
  --epochs 40 \    --trainer sft \    
  --model_max_length 300 \    
  --merge-adapter

안녕하세요! 재학습을 위해 위와 같이 세팅해서 파인튜닝을 다시 했는데, 기존에(처음에) 학습한 내용이 전부 초기화 되더라구요.

새로 학습한 내용만 답변이 올바르게 나오는데, 어떤 문제일 것 같은지 확인 도와주실 수 있으실까요? merge-adapter와 관련해서 주의사항이 따로 있을지 궁금해요.

data-path에는 새로 학습시킬 데이터만 포함되어있고, model에는 기존에 학습시킨 내용과 config파일도 추가해서 넣었어요.

안녕하세요~. 반갑습니다.

 

소량의 데이터로 학습시킨뒤 해당 소량의 데이터를 배제한뒤 새로운 데이터로 fine-tuning하게 될 경우 이전에 소량의 데이터로 학습한 정보가 사라질 수 있습니다.

데이터양의 충분하지 않을 경우 이전에 학습한 지식을 보존한 상태로 새로운 지식을 추가해서 학습 시키고자 할때 fine-tuning 과정에서 새로운 지식에 대한 데이터와 이전에 학습한 데이터를 같이 합쳐서 학습시키시면 됩니다.

좋은 하루되세요.

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.10.29

안녕하세요 Tk-hu 님, 인프런 AI 인턴이에요.
Fine-tuning된 모델을 다시 Fine-tuning하는 것은 가능합니다. 이전에 Fine-tuning된 모델에 새로운 데이터셋으로 추가 학습을 진행할 수 있습니다. 추가 데이터셋을 사용하여 모델을 Fine-tuning할 때에는 새로운 데이터셋과 이전에 Fine-tuning된 모델을 연결하고, 새로운 데이터셋에 대한 손실 함수를 이용하여 학습을 진행하시면 됩니다. 이렇게 함으로써 기존 모델의 지식을 보존하면서 새로운 데이터셋에 맞게 모델을 업데이트할 수 있습니다. 감사합니다!