7/30 Today I Learned -2

boks·2024년 7월 30일
0

자연어 처리

목록 보기
11/14
post-thumbnail

📖 학습한 내용

  • 프로젝트 : Dacon 재정정보 검색 알고리즘 경진대회 - 파인튜닝, 허깅페이스 업로드

📖 핵심내용

📌 파인튜닝

파인튜닝 전 단계

양자화

  • 양자화 목표
    모델 크기 축소 : 모델의 가중치와 활성화를 더 적은 비트 수로 표현 -> 저장 공간을 절약하고 전송 속도 증가 효과
    연산 속도 향상 : 정수 연산을 사용하여 계산을 수행 -> 연산속도 향상

  • 주요 양자화 기법
    정수 양자화 (Integer Quantization) - 정수 사용
    부동소수점 양자화 (Float16 Quantization) - 32비트 대신 16비트 부동소수점 사용
    해상도 감소 (Precision Reduction) - 수치 해상도를 줄여서 모델의 계산을 간소화

  • 장단점
    장점 : 메모리 절약, 연산 속도 증가, 에너지 효율:
    단점 : 정확도 감소

  • 코드

model = AutoModelForCausalLM.from_pretrained(
    base_model,
    quantization_config=quant_config, # 양자화 설정
    device_map={"": 0} # 0번장치(GPU)에서 실행
    # device_map="auto" # 자동으로 장치 할당
)
model.config.use_cache = False # 
model.config.pretraining_tp = 1 # 텐서 병렬 처리(Tensor Parallelism) 수준을 설정. 1은 병렬처리없이 단일 장치에서 실행

모델의 토큰 로드

토큰화는 모델을 훈련시킬때 숫자를 변경하는 방법
베이스 모델의 토큰을 불러와서 사용할 수 있다
텍스트가 끝날때, 끝났다고 인지하는 방법
터미네이트를 지정
문장의끝 토큰을 지정

LoRA로 훈련 매개변수 설정

LoRA는 모델의 특정 부분을 적은 수의 파라미터로 업데이트하여 메모리 사용량을 줄이고 훈련 속도를 개선한다.

  • 로라 파라미터 세팅 코드
peft_params = LoraConfig(
    lora_alpha=16,
    lora_dropout=0.1,
    r=32,  ### r 값을 줄여 메모리 사용량 감소
    bias="none",
    task_type="CAUSAL_LM",
)

LoraConfig() : Hugging Face의 peft(Parameter-Efficient Fine-Tuning) 라이브러리에서 사용되는 클래스. 이 클래스는 Lora(Low-Rank Adaptation) 기법을 적용하기 위한 설정을 정의한다.

  • 트레이닝 파라미터 세팅 코드
    TrainingArguments() : Hugging Face의 transformers 라이브러리에서 훈련 과정의 다양한 설정을 관리하는 데 사용되는 클래스

📌 파인튜닝 후 병합

병합의 이유

  • 기존 지식 유지
    기존 모델의 지식을 유지하면서도 새로운 데이터에 대한 특화된 성능을 추가

  • 모델의 확장성
    LoRA(LoRA: Low-Rank Adaptation)와 같은 기술을 사용하여 파라미터를 효율적으로 조정하는 경우, 기존 모델의 파라미터를 수정하지 않고도 새로운 기능을 추가

  • 훈련 효율성
    모델이 다양한 데이터에 대해 더 잘 반응하도록 개선할 수 있다.

📌 평가 - 테스트

학습시킨 질문을 프롬프트로 물어봐서 잘 대답하는지 확인

📌 Hugging Face에 업로드

mergedModel = model.merge_and_unload()
hfAddr = "허깅페이스모델저장소"
mergedModel.push_to_hub(hfAddr)
tokenizer.push_to_hub(hfAddr)

📖 이후 학습 계획

  • 라마2를 이용한 업로드 학습
  • 데이콘 팀원 등록
  • 허깅페이스 팀원 스페이스 생성
profile
설계엔지니어의 변신

0개의 댓글