[인공지능 기술] Polyglot-ko-1.3b-lite EleutherAI/polyglot-ko-1.3b를 기반으로, PEFT 기법 중에 하나인 QLoRA로 미세조정한 모델입니다.

Polyglot-ko-1.3b-lite

EleutherAI/polyglot-ko-1.3b를 기반으로, PEFT 기법 중에 하나인 QLoRA로 미세조정한 모델입니다.
본 프로젝트로 제작한 미세조정 모델은 Huggingface에 올려져 있습니다.
본 프로젝트를 사용하여, 새롭게 미세조정한 모델을 제작하실 수 있습니다.
본 프로젝트의 기반인 Polyglot 모델에 대한, 자세한 정보는 여기를 참조하세요.

본 프로젝트는 Windows 시스템 상에서 제작되었습니다.

  • 기반 모델은 HuggingFace로부터, 직접 다운로드 받아야 합니다.
  • 훈련 데이터셋은 ko-datasets 폴더에 존재하며, GPT2에 기반한 eos_token 포맷을 사용합니다.
  • 순수 Windows 모델과 WSL2 모델 간에, [훈련/평가]된 gradio 그래프를 비교해 보면, 차이점이 있다는 것을 알 수 있습니다.

개발 목적

사양이 높지 않은 일반 노트북에서, 한국어 LLM을 연구, 개발할 수 있는 환경을 구축해 본 것입니다.
AI개발 속도가 너무 빠르게 진행되어, 과거 호환성 문제를 해결하며, 구축해야만 했습니다.
자신의 모델이 응답속도가 늦거나, 엉뚱한 답변을 생성하는 것은, LLM에 대한 지식이 부족해서 발생하는 것입니다.
본 소스를 기반으로 삼아, Windows 개발자 분들이 AI 개발의 문턱에 빠르게 다가설 수 있기를 바랍니다.

구현 환경

RAM은 거의 소모하지 않으며, VRAM은 2.7 GB를 소비합니다.

- System
  OS            Windows 11 Home
  RAM           16 GB
  VRAM	        2.7 GB
  Graphic Card  GeForce RTX 3060(GPU=1, VRAM=6GB)

- packages
  cuda          12.1.105
  cudnn         8.0
  pytorch       2.2.2
  python        3.10.14
  conda         24.3.0
  accelerate    0.29.2
  bitsandbytes  0.43.0
  gradio        4.26.0
  tokenizers    0.15.2
  transformers  4.39.3
  wandb         0.16.6

- training parameters
  epochs                5
  batch_size            16
  micro_batch_size      4
  learning_rate         1e-3
  batch_size            3
  lora_r                8
  lora_alpha            16
  lora_dropout          0.05
  lora_target_modules   query_key_value

기반모델 다운로드

  • ./resources/polyglot-ko-1.3b 로컬 폴더에, HuggingFace로부터 기반모델을 다운로드 하세요.
  • Windows 사용자라면, 모델 LFS 폴더들을 한 곳에 위치시키고 공유하기 위한, .create-symbolic-links.bat 파일을 수정하여, resources 폴더의 심볼릭링크를 생성시키는 것이 좋습니다.

AI 개발환경 구축

  • 순수한 Windows 시스템 상에, 본 프로젝트의 개발환경을 구축하려면 여기 문서를 참조하세요.
  • Windows WSL2 가상환경 상에, 본 프로젝트의 개발환경을 구축하려면 여기 문서를 참조하세요.

[훈련/병합/추론]을 위한, 공통된 사전 작업

출력 경로의 e3b16은 epochs=3, batch_size=16을 의미합니다.
출력 경로의 e5b16은 epochs=5, batch_size=16을 의미합니다.

[훈련/병합/추론] 콘솔명령들을 수행하기 전에, 아래의 작업들이 진행된 상태여야만 합니다.

1. Python 가상환경으로 전환된 상태에서, 진행하셔야 합니다.
  > conda activate pgko
2. [transformers] 라이브러리를 사용하기 위해서는, (브라우저로) HuggingFace에 로그인된 상태여야만 합니다.
  > https://huggingface.co/
3. [WandB] 회원가입이 필요하며, (브라우저로) WandB에 로그인된 상태에서, API-KEY를 콘솔창에 입력해야만 합니다.
  > https://wandb.ai/site

훈련

미세조정(QLoRA)

LoRA(Low-Rank Adaptation)와 QLoRA는 LLM을 효율적으로, 미세조정하기 위한 기술입니다.
이들은 매개변수를 효율적으로 관리하고, 메모리 사용량을 줄이는 목적으로 개발되었습니다.
이러한 기술은 LLM을 효율적으로 조정하고, 비용을 절감하는 데 도움이 됩니다.

> python finetune-lora.py \
  --base_model 'resources/polyglot-ko-1.3b' \
  --data_path 'ko-datasets/KoAlpaca_v1.1a_textonly.json' \
  --output_dir 'train/lora-e5/b16' \
  --cache_dir './data' \
  --num_train_epochs 5 \
  --batch_size 16 \
  --lora_r 8 \
  --learning_rate 1e-3 \
  --lora_target_modules "['query_key_value']"

> python finetune-lora.py --base_model 'resources/polyglot-ko-1.3b' --data_path 'ko-datasets/KoAlpaca_v1.1a_textonly.json' --output_dir 'train/lora-e5/b16' --cache_dir './data' --num_train_epochs 5  --batch_size 16 --lora_r 8 --learning_rate 1e-3 --lora_target_modules "['query_key_value']"
> python finetune-lora.py --base_model 'resources/polyglot-ko-1.3b' --data_path 'ko-datasets/KoAlpaca_v1.1a_textonly.json' --output_dir 'train/lora-e3/b16' --cache_dir './data' --num_train_epochs 3  --batch_size 16 --lora_r 8 --learning_rate 1e-3 --lora_target_modules "['query_key_value']"

병합 저장(기반모델 + PEFT 가중치)

병합은 기반모델인 [polyglot-ko-1.3b]과, 미세조정 훈련한 가증치 어댑터(peft_root)를, 하나로 합쳐서 저장시키는 작업입니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

> python merge-lora.py \
  --base_model 'resources/polyglot-ko-1.3b' \
  --peft_root 'train/lora-e5/b16' \
  --output_dir 'resources/polyglot-ko-1.3b-e5b16' \
  --max_shard_size '1GB'

> python merge-lora.py --base_model 'resources/polyglot-ko-1.3b' --peft_root 'train/lora-e5/b16' --output_dir 'resources/polyglot-ko-1.3b-e5b16' --max_shard_size '1GB'
> python merge-lora.py --base_model 'resources/polyglot-ko-1.3b' --peft_root 'train/lora-e3/b16' --output_dir 'resources/polyglot-ko-1.3b-e3b16' --max_shard_size '1GB'

추론(LoRA)

추론은 학습(훈련)시킨 데이터셋을 토대로, 얼마나 정확하게 답변을 생성시키는지를 확인하는 것입니다.

1. 콘솔창에서 아래의 명령을 수행시킵니다.
  > python generate.py \
      --load_4bit True\
      --base_model 'resources/polyglot-ko-1.3b'  \
      --peft_root 'train/lora-e5/b16' \
      --cache_dir './data'
- PEFT 어댑터 활용
  > python generate.py --load_4bit True --base_model 'resources/polyglot-ko-1.3b' --peft_root 'train/lora-e5/b16' --cache_dir './data'
    python generate.py --load_4bit True --base_model 'resources/polyglot-ko-1.3b' --peft_root 'train/lora-e3/b16' --cache_dir './data'
- 병합모델 사용
  > python generate.py --load_4bit True --base_model 'resources/polyglot-ko-1.3b-e5b16' --cache_dir './data'
    python generate.py --load_4bit True --base_model 'resources/polyglot-ko-1.3b-e3b16' --cache_dir './data'
2. 브라우저를 열고, 아래의 주소를 입력합니다.(포트가 다를 수 있으니, 콘솔창에 출력된 주소를 확인하세요.)
  > http://127.0.0.1:7860/

3. 아래와 같이 텍스트박스에, 프롬프트 명령을 입력하시고, submit 버튼을 클릭하세요.
  > Instruction:  {x}가 뭐지?
  > Input: AI

4. "AI가 뭐지?"라는 질문이 LLM 모델에 전달될 것이며, 답변이 Output에 출력될 것입니다.


 

스크린 샷

두 그래프에 차이점을 확인하세요.

훈련 그래프

훈련

평가 그래프

훈련

추론(생성) 프롬프터

훈련

 

[출처] https://github.com/JoonkyuChoi/polyglot-ko-1.3b-lite?tab=readme-ov-file

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
12 [알아봅시다] [Hugging Face 여행] ???? 인터넷 없이 내 노트북에 작동하는 AI 챗봇 5분 완성 ???? Llama cpp와 Gradio 활용 ????⚡️ 졸리운_곰 2026.03.15 27
11 [알아봅시다] Ollama 사용법: Ollama를 이용한 로컬 LLM 완전 초보 가이드 file 졸리운_곰 2025.10.18 121
10 [Ollama 응용개발] 로컬 환경에서 API 호스팅을 위한 Ollama 설정 종합 가이드 file 졸리운_곰 2025.04.22 76
9 소형 언어 모델 (SLM)을 로컬 및 오프라인으로 실행하기 file 졸리운_곰 2025.01.25 123
8 [Ollama 응용개발] Ollama에 없는 모델 내가 만들어 사용하기 (2) file 졸리운_곰 2025.01.16 51
7 [Ollama 응용개발] Ollama에 없는 모델 내가 만들어 사용하기 (1) file 졸리운_곰 2025.01.16 74
6 [ollama] AI 사라, 사랑스럽고 배려심 많은 여자친구 : AI Sarah, A Loving And Caring Girlfriend 졸리운_곰 2025.01.11 119
5 [ollama] Ollama 및 Next.js를 사용한 로컬 GPT : Local GPT with Ollama and Next.js file 졸리운_곰 2025.01.09 104
4 [인공지능 기술] Ollama(올라마) 집중분석 file 졸리운_곰 2024.12.25 153
» [인공지능 기술] Polyglot-ko-1.3b-lite EleutherAI/polyglot-ko-1.3b를 기반으로, PEFT 기법 중에 하나인 QLoRA로 미세조정한 모델입니다. file 졸리운_곰 2024.12.25 90
2 [인공지능 기술] Ollama #4: AutoGen Studio 를 활용한 로컬LLM + 다중 AI 에이전트 사용 file 졸리운_곰 2024.12.25 81
1 [인공지능 기술] AutoGen 를 사용하여 AI 에이전트 구현 Ollama + llama3 + AutoGen file 졸리운_곰 2024.12.25 72
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED