[NLP]GPTNeo, KoAlpaca, Polyglot 한국어 모델 관련 이슈 및 세부스펙 정리

2023. 6. 2. 11:55공부/딥러닝

반응형

GPTNeo, KoAlpaca, Polyglot 한국어 모델 관련 이슈 및 세부스펙 정리


LoRA 모델 학습 

 *LoRA : Low-Rank Adaptation of Large Language Models

  • 고정된 weights를 갖는 pretrained model에 학습 가능한 rank decomposition 행렬을 삽입한 것으로 중간 중간 학습 가능한 파라미터를 삽입했다는 점에서 어댑터와 비슷하지만 구조적으로 조금 다르다고 할 수 있음.
  • 적은 양의 파라미터로 모델을 튜닝하는 방법론이기 때문에 적은수의 GPU로 빠른 튜닝 가능

LoRA는 GPT-3와 같은 거대 모델을 fine-tuning하면 엄청난 양의 parameter들을 다 재학습 시켜야하고 이는 계산량도 많고 시간도 많이 걸리는 작업이기 때문에 각 lay마다 학습 가능한 rank decomposition matrices를 추가하는 방식을 도입한 것

 

# 학습 사양

LLAMA 13B 모델 학습 : RTX3090 24GB 4대

LLAMA 30B 모델 학습 : A100 40GB 2대

LLAMA 65B 모델 학습 : A100 80GB 8대 

LLAMA 13B LLAMA 30B LLAMA 65B
 RTX3090 24GB 4대 A100 40GB 2대 A100 80GB 8대 

* 참고(https://github.com/Beomi/KoAlpaca/issues/53)

polyglot-ko-5.8b 학습에 사용된 환경으로 클라우드의 A100 80GB * 8 서버를 사용 중인데  train_v1.1b/train_polyglot5.8b_singleA100.sh 스크립트를 통해 학습 시 CUDA out of memory 에러 발생

  -> 파라미터를 조정(block size를 반으로 줄이니 돌아간다는 답변이 있음)


 

EleutherAI / beomi / kakaobrain

 

#EleutherAI

(https://huggingface.co/EleutherAI)

polyglot-ko 모델 

COPA F1 score(평가)

  • EleutherAI/polyglot-ko-1.3b

 - 863GB 한국어 데이터(처리 전 1.2TB)

 - GPT-NeoX 프레임워크 사용, 256개의 A100 GPU(부정확)에서 102,000단계 걸쳐 2,130억 개 토큰에 대해 훈련

  • EleutherAI/polyglot-ko-3.8b

 - GPT-NeoX 프레임워크 사용, 256개의 A100 GPU(부정확)에서 105,000단계 걸쳐 2,190억 개 토큰에 대해 훈련

  • EleutherAI/polyglot-ko-5.8b

 - GPT-NeoX 프레임워크 사용, 256개의 A100 GPU(부정확)에서 320,000단계 걸쳐 1,720억 개 토큰에 대해 훈련

  • EleutherAI/polyglot-ko-12.8b

 - GPT-NeoX 프레임워크 사용, 256개의 A100 GPU(부정확)에서 301,000단계 걸쳐 1,670억 개 토큰에 대해 훈련

 

#beomi

(https://huggingface.co/beomi)

KoAlpaca-KoRWKV 모델 

Framework version

  • Transformers 4.30.0.dev0
  • Pytorch 2.0.0+cu117
  • Datasets 2.10.1
  • Tokenizers 0.13.2
  • beomi/KoAlpaca-KoRWKV-1.5B

 - A100 80G x 2 가용

 - 학습시간 : 약 2시간

 - batch size : 8 / num_epochs : 2.0 / learning_rate : 5e-05

 

 

KoAlpaca-Polyglot 모델 

Framework version

  • Transformers 4.29.0.dev0
  • Pytorch 2.0.0+cu117
  • Datasets 2.10.1
  • Tokenizers 0.13.2
  • beomi/KoAlpaca-Polyglot-5.8B

 - EleutherAI/polyglot-ko-5.8b  모델 파인튜닝

 - batch size : 2 / num_epochs : 2.0 / learning_rate : 5e-05

 

  • beomi/KoRWKV-6B (유료모델) : 병렬화 RNN, 각 채널 시간 감소 데이터 독립적이기 때문에 병렬화 가능

 - https://github.com/BlinkDL/RWKV-LM

 - Instruction-Finetuned 모델은 beomi/KoAlpaca-KoRWKV-6B 에서 구매 가능

 - pytorch import 버전 : deepspeed==0.7.0 pytorch-lightning==1.9.2 torch 1.13.1+cu117

 - RWKVv4 Neo Architecture로 한국어 데이터 세트로 학습

 

  • beomi/KoAlpaca-Polyglot-12.8B

 - EleutherAI/polyglot-ko-12.8b  모델 파인튜닝

 - batch size : 1 / num_epochs : 2.0 / learning_rate : 5e-05

 - total_train_batch_size : 256 / total_eval_batch_size : 32

 - Multi GPU(A100 80G)

   Framework versions

  • Transformers 4.28.1
  • Pytorch 2.0.0+cu117
  • Datasets 2.11.0
  • Tokenizers 0.13.3

 

#kakaobrain

(https://huggingface.co/kakaobrain/kogpt)

Kogpt 모델 (kakao 라이센스)

  • KoGPT6B-ryan1.5b

 - kakaobrain의 Pre-Trained Language models

 - 최소 GPU 32GB RAM 필요

  • KoGPT6B-ryan1.5b-float16

 - 최소 GPU 16GB RAM 필요

 - 반정밀도에는 Volta, Turing 또는 Ampere 기반의 NVIDIA GPU가 필요

 

 

Google colab 관련 참고

Colab Pro+ : 49.99$/월

Colab Pro : 9.99$/월

 


 

Runtime 연결 끊김 방지 : https://joyful-ugentstudent-note.tistory.com/23

 

[ Google Colab ] 런타임 연결 끊김 방지, 세션 유지

Google Colab 세션 runtime은 12시간이고, 90분 이상 비활성화 되어 있으면 끊긴다. 머신러닝 학습을 하다보면, 컴터 놀게 냅두고 90분이상 방치하는데 그럴 때 런타임 연결이 끊기면 ,,, 다 날라간다. 그

joyful-ugentstudent-note.tistory.com

function ClickConnect(){
          console.log("Working"); document.querySelector(
          "colab-toolbar-button").click()
}setInterval(ClickConnect,1800000)

 

 

 

 


KoAlpaca-Polyglot 모델 테스트

한국어 Chatbot 테스트를 위한 GPTNeo 5.8B 테스트 진행

https://huggingface.co/beomi/KoAlpaca-Polyglot-5.8B

 

beomi/KoAlpaca-Polyglot-5.8B · Hugging Face

This model can be loaded on the Inference API on-demand.

huggingface.co

여러 모델이 있으나, 현재 beomi의 KoAlpaca 테스트

 

EleutherAI/polyglot-ko-5.8b : .cache 관련으로 jupyter 경로가 아닌 다른 경로에서 설치되는 이슈가 있음. 그리고 Pytorch, CUDA version error 존재

 

beomi/KoAlpaca-Polyglot-5.8B : 현재 테스트중(230601) , 위와 같이 Pytorch, CUDA version error

그래서 torch version을 1.12.1 / torchvision == 0.13.1 / torchaudio==0.12.1로 재설치하여 진행

 

기존 torch version을 확인하여 참조

!pip uninstall torch 
!pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

 

현재 PC의 CUDA version은 12.0

GPU는 RTX 3080 임

버전 확인 후 모델 테스트를 위해

아래 라이브러리를 사전 설치

 

해당 라이브러리 관련으로는 상기 블로그에서 참조하여 설치 진행

 

torch를 삭제 후 재 설치 하고난 후

torch.cuda.is_available()를 입력하여 테스트를 하였으나

이와 같은 에러가 발생하였음.

위 에러는 jupyter notebook을 재 연결하여 테스트를 진행해보고자 함.

 

torch를 재설치 하고 나니 위와같이 다시 다운로드가 진행됨

그 전에는 torch version 관련 에러가 계속 발생하였음.

 

해당 에러로 인해 torch를 재설치하고 난 후에 위와 같이 다운로드가 진행

CUDA out of memory 에러 발생

 

권장하는 Pytorch 버전

Framework versions

  • Transformers 4.29.0.dev0
  • Pytorch 2.0.0+cu117
  • Datasets 2.10.1
  • Tokenizers 0.13.2

현재 PC의 CUDA version 은 12.0.0 으로 

위와같은 문제가 발생함. 그래서 CUDA 버전을 재설정 진행 중

 

CUDA 11.7.1 버전 다운로드 하여 테스트 하였으나, 

확인해보니 torch가 2.0.1+cpu로 확인되어

 

pip uninstall torch

 

삭제 후 재설치

https://pytorch.org/

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

아래와 같이 CUDA 11.7 재 설치중

설치 후

True가 확인된다. 버전이 맞지 않을경우 False 출력됨

그러나, 다른 에러가 확인됨

관련 에러 해결을 위해

ImportError: cannot import name 'COMMON_SAFE_ASCII_CHARACTERS' from 'charset_normalizer.constant'

 

stack overflow 참조(https://stackoverflow.com/questions/74535380/importerror-cannot-import-name-common-safe-ascii-characters-from-charset-nor)

 

conda install -c conda-forge charset-normalizer

jupyter notebook에서 진행하는 것이 아닌 anaconda prompt에서 진행

 

Error은 다 해결된듯 하나

CUDA out of memory 이슈 재발생

# KoAlpaca-Polyglot-5.8B (로컬PC 사양은 RTX3080 10G 학습에 메모리 부족현상 존재)

model의 파라미터를 수정해야 될 듯 하다.

 

# 더 낮은 KoAlpaca-KoRWKV-1.5B모델 테스트 진행 ()

 

1.5B 테스트 결과 : 질문에 대한 답변이 전혀 다르게 대답

 

반응형