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
삭제 후 재설치
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 테스트 결과 : 질문에 대한 답변이 전혀 다르게 대답
'공부 > 딥러닝' 카테고리의 다른 글
[NLP]Polyglot finetuning 방법 / 토크나이저 정리 / huggingface 업로드관련 (0) | 2024.06.11 |
---|---|
[NLP] LLM 모델 동향 및 기술 조사 (0) | 2023.12.14 |
[NLP]한국어 언어 모델 Polyglot 테스트 및 사용법 (0) | 2023.07.14 |