Spaces:
Sleeping
title: Multi-Model Korean LLM Chatbot
emoji: ๐ค
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
license: mit
๐ค Multi-Model Korean LLM Chatbot
13๊ฐ์ ๋ค์ํ ํ๊ตญ์ด LLM ๋ชจ๋ธ์ ์ ํํ์ฌ ๋ํํ ์ ์๋ ๋ฉํฐ๋ชจ๋ธ ์ฑ๋ด์ ๋๋ค. ZeroGPU์ CPU Upgrade ํ๋์จ์ด๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค.
โจ ์ฃผ์ ํน์ง
- ๐ฏ 13๊ฐ ๋ชจ๋ธ ์ ํ: ๋ค์ํ ํฌ๊ธฐ์ ํน์ฑ์ LLM ๋ชจ๋ธ ์ง์
- ๐ฐ๐ท ํ๊ธ ์ต์ ํ: ํ๊ตญ์ด ์ฑ๋ฅ์ด ์ฐ์ํ ๋ชจ๋ธ๋ค๋ก ๊ตฌ์ฑ
- โก ์ ์ฐํ ํ๋์จ์ด: ZeroGPU/CPU Upgrade ์๋ ๊ฐ์ง
- ๐พ ์บ์ ์์คํ : ๋ชจ๋ธ ์ฌ๋ค์ด๋ก๋ ๋ฐฉ์ง, ๋น ๋ฅธ ๋ก๋ฉ
- ๐ Lazy Loading: ์ ํํ ๋ชจ๋ธ๋ง ๋ก๋ํ์ฌ ๋ฆฌ์์ค ์ ์ฝ
๐ฏ ์ง์ ๋ชจ๋ธ (13๊ฐ)
๐ ์ถ์ฒ ํ๊ตญ์ด ๋ชจ๋ธ
| ๋ชจ๋ธ | ํฌ๊ธฐ | ํน์ง | ์ํ |
|---|---|---|---|
| EXAONE 3.5 7.8B | 7.3GB | โญ ํ๋ผ๋ฏธํฐ ๋๋น ์ต๊ณ ํจ์จ | Public |
| EXAONE 3.5 2.4B | 2.2GB | โก ์ด๊ฒฝ๋, ๋น ๋ฅธ ์๋ต | Public |
| Llama-3 Open-Ko 8B | 7.5GB | ๐ฅ Llama 3 ์ํ๊ณ | Public |
๐ ์ ์ฒด ๋ชจ๋ธ ๋ชฉ๋ก
Public ๋ชจ๋ธ (10๊ฐ)
- LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct
- LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct
- beomi/Llama-3-Open-Ko-8B
- Qwen/Qwen2.5-7B-Instruct
- Qwen/Qwen2.5-14B-Instruct
- 01-ai/Yi-1.5-9B-Chat
- 01-ai/Yi-1.5-34B-Chat
- mistralai/Mistral-7B-Instruct-v0.3
- upstage/SOLAR-10.7B-Instruct-v1.0
- EleutherAI/polyglot-ko-5.8b
Gated ๋ชจ๋ธ (3๊ฐ) ๐
- meta-llama/Llama-3.1-8B-Instruct
- meta-llama/Llama-3.1-70B-Instruct
- CohereForAI/aya-23-8B
์ฐธ๊ณ : Gated ๋ชจ๋ธ์ Hugging Face์์ ๋ณ๋ ์น์ธ ํ์
๐ ํ๋์จ์ด ์ต์
Option 1: ZeroGPU (์ถ์ฒ)
์ฅ์ :
- โก ๋น ๋ฅธ ์๋ต (3-10์ด)
- ๐ฐ ์ ๋ ดํ ๋น์ฉ ($9/month)
- ๐ ์๋ GPU ํ ๋น/ํด์
์ ์ฝ:
- ํ๋ฃจ 25๋ถ ๋ฌด๋ฃ ์ฌ์ฉ (PRO ๊ตฌ๋ ํ์)
- ๋๊ธฐ์ด ๊ฐ๋ฅ (์ฌ์ฉ์ ๋ง์ ๊ฒฝ์ฐ)
๋น์ฉ: $9/month (PRO ๊ตฌ๋ )
Option 2: CPU Upgrade
์ฅ์ :
- โฐ ๋ฌด์ ํ ์ฌ์ฉ
- ๐ ์์ธก ๊ฐ๋ฅํ ์ฑ๋ฅ
- ๐ง ๊ฐ๋จํ ์ค์
์ ์ฝ:
- ๐ข ๋๋ฆฐ ์๋ต (15์ด~2๋ถ)
- ๐ต ์๋์ ์ผ๋ก ๋น์ผ ๋น์ฉ
๋น์ฉ: $0.03/hour (์ ์ฝ $22)
โ๏ธ ํ๋์จ์ด ์ค์ ๋ฐฉ๋ฒ
ZeroGPU๋ก ๋ณ๊ฒฝ
- Space Settings โ Hardware
- ZeroGPU ์ ํ
- Confirm
- ๋น๋ ์๋ฃ ๋๊ธฐ (1-2๋ถ)
โ UI์ "ZeroGPU" ํ์ ํ์ธ
CPU Upgrade๋ก ๋ณ๊ฒฝ
- Space Settings โ Hardware
- CPU Upgrade (8 vCPU / 32 GB) ์ ํ
- Confirm
- ๋น๋ ์๋ฃ ๋๊ธฐ (1-2๋ถ)
โ UI์ "CPU Upgrade" ํ์ ํ์ธ
๐ ์ฑ๋ฅ ๋น๊ต
| ํญ๋ชฉ | ZeroGPU | CPU Upgrade |
|---|---|---|
| ์ฒซ ์๋ต | 10-20์ด | 1-3๋ถ |
| ์ดํ ์๋ต | 3-10์ด | 15์ด~2๋ถ |
| ์ผ์ผ ํ๋ | 25๋ถ | ๋ฌด์ ํ |
| ์ ๋น์ฉ | $9 | $22 |
| GPU | H200 (70GB) | ์์ |
| RAM | - | 32GB |
๐ง ๊ธฐ์ ๊ตฌ์กฐ
์๋ ํ๋์จ์ด ๊ฐ์ง
# ZeroGPU ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ ์๋ ๊ฐ์ง
try:
import spaces
ZEROGPU_AVAILABLE = True
except ImportError:
ZEROGPU_AVAILABLE = False
# ์กฐ๊ฑด๋ถ decorator ์ ์ฉ
if ZEROGPU_AVAILABLE:
@spaces.GPU(duration=120)
def generate_response(messages):
return generate_response_impl(messages)
else:
def generate_response(messages):
return generate_response_impl(messages)
Lazy Loading ์์คํ
- ์ ํํ ๋ชจ๋ธ๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋
- ๋ชจ๋ธ ์ ํ ์ ์ด์ ๋ชจ๋ธ ์๋ ์ธ๋ก๋
- ์บ์ ํ์ธ์ผ๋ก ์ฌ๋ค์ด๋ก๋ ๋ฐฉ์ง
- ๋์คํฌ์์ ๋น ๋ฅธ ๋ก๋ฉ (์บ์๋ ๊ฒฝ์ฐ)
์บ์ ๊ด๋ฆฌ
def check_model_cached(model_name):
"""Check if model is already downloaded in HF cache"""
from huggingface_hub import scan_cache_dir
cache_info = scan_cache_dir()
for repo in cache_info.repos:
if repo.repo_id == model_name:
return True
return False
๐ ์ฌ์ฉ ๋ฐฉ๋ฒ
1. Space ์ ์
https://huggingface.co/spaces/catchitplay/simple-chatbot-gradio
2. ๋ชจ๋ธ ์ ํ
- ๋๋กญ๋ค์ด์์ ์ํ๋ ๋ชจ๋ธ ์ ํ
- ์บ์ ์ํ ํ์ธ (๐พ ์บ์๋จ / ๐ฅ ๋ค์ด๋ก๋ ํ์)
- ์ฒซ ์ฌ์ฉ ์ ๋ชจ๋ธ ๋ค์ด๋ก๋ (2-14GB, 5-20๋ถ)
3. ๋ํ ์์
์๋
ํ์ธ์
์ธ๊ณต์ง๋ฅ์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์
ํ๊ตญ์ ์๋๋ ์ด๋์ธ๊ฐ์?
๐ก ๋ชจ๋ธ ์ ํ ๊ฐ์ด๋
๋น ๋ฅธ ์๋ต์ด ํ์ํ ๊ฒฝ์ฐ
- EXAONE 3.5 2.4B โก (2.2GB) - ๊ฐ์ฅ ๋น ๋ฆ
- Mistral 7B (7GB) - ๊ฒฝ๋ ๋ชจ๋ธ
ํ์ง ์ค์
- EXAONE 3.5 7.8B โญ (7.3GB) - ํจ์จ์ฑ ์ต๊ณ
- Qwen2.5 14B (14GB) - ๋ค๊ตญ์ด ๊ฐ์
- SOLAR 10.7B (10GB) - ํ๊ตญ์ด ํนํ
์ต๊ณ ์ฑ๋ฅ (๋๋ฆผ)
- Llama 3.1 70B ๐ (70GB) - ์ต๊ณ ํ์ง
- Yi 1.5 34B (34GB) - ๊ธด ๋ฌธ๋งฅ
Llama ์ํ๊ณ
- Llama-3 Open-Ko 8B ๐ฅ (7.5GB)
- Llama 3.1 8B ๐ (8GB)
๐ฆ ๋ก์ปฌ ์คํ
์ค์น
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/catchitplay/simple-chatbot-gradio.git
cd simple-chatbot-gradio
# ๊ฐ์ํ๊ฒฝ ์์ฑ (๊ถ์ฅ)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# ์์กด์ฑ ์ค์น (3๊ฐ์ง ๋ฐฉ๋ฒ)
๋ฐฉ๋ฒ 1: ๋ก์ปฌ ์ ์ฉ requirements (๊ถ์ฅ)
pip install -r requirements-local.txt
# ์ต์ PyTorch ๋ฒ์ ์ฌ์ฉ (ZeroGPU ์ ์ฝ ์์)
๋ฐฉ๋ฒ 2: ์๋ ํ๊ฒฝ ๊ฐ์ง ์ค์น
python setup.py
# ํ๊ฒฝ์ ์๋ ๊ฐ์งํ๊ณ ์ ์ ํ ๋ฒ์ ์ค์น
๋ฐฉ๋ฒ 3: HF Spaces์ฉ requirements
pip install -r requirements.txt
# PyTorch 2.2.0 (ZeroGPU ํธํ)
.env ํ์ผ ์ค์
# .env ํ์ผ ์์ฑ
echo "HF_TOKEN=your_hugging_face_token" > .env
HF_TOKEN ๋ฐ๊ธ ๋ฐฉ๋ฒ:
- https://huggingface.co/settings/tokens ์ ์
- "New token" ํด๋ฆญ
- "Read" ๊ถํ ์ ํ
- ์์ฑ๋ ํ ํฐ ๋ณต์ฌ
์คํ
python app.py
๋ธ๋ผ์ฐ์ ์์ http://localhost:7860 ์ ์
์ฐธ๊ณ :
- ๋ก์ปฌ์ CPU/GPU ์๋ ๊ฐ์ง
- GPU ๊ถ์ฅ (CUDA ํ์)
- ์ฒซ ์คํ ์ ๋ชจ๋ธ ๋ค์ด๋ก๋ (์๊ฐ ์์)
๐ ๏ธ ๊ธฐ์ ์คํ
- ํ๋ ์์ํฌ: Gradio 5.49.1
- ML ๋ผ์ด๋ธ๋ฌ๋ฆฌ: Transformers 4.57.1, PyTorch 2.2.0 (ZeroGPU ํธํ)
- GPU ์ธํ๋ผ: Hugging Face ZeroGPU (์ ํ์ )
- ์ธ์ด: Python 3.10+
๐ Dependencies
gradio==5.49.1
transformers==4.57.1
torch==2.2.0 # ZeroGPU compatible (supports 2.0.0-2.2.0)
safetensors==0.6.2
accelerate==0.26.1
sentencepiece==0.2.0
protobuf==4.25.1
huggingface-hub>=0.19.0
python-dotenv==1.0.0
spaces # ZeroGPU support
๐ Gated ๋ชจ๋ธ ์ฌ์ฉ๋ฒ
1. ๋ชจ๋ธ ์น์ธ ์์ฒญ
๊ฐ Gated ๋ชจ๋ธ ํ์ด์ง์์ "Request Access" ํด๋ฆญ:
- https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct
- https://huggingface.co/meta-llama/Llama-3.1-70B-Instruct
- https://huggingface.co/CohereForAI/aya-23-8B
2. HF_TOKEN ์ค์
์น์ธ ํ HF_TOKEN์ .env ํ์ผ์ ์ค์ (์ ์ฐธ์กฐ)
3. Space Secrets ์ค์ (HF Spaces)
Space Settings โ Repository secrets:
- Name:
HF_TOKEN - Value:
your_token_here
โ ๏ธ ์ ํ์ฌํญ
๊ณตํต
- ๋ชจ๋ธ ํฌ๊ธฐ: 2-70GB (๋ก๋ฉ ์๊ฐ ํ์)
- ์ปจํ ์คํธ: ๋ํ ํ์คํ ๋ฆฌ ์ ์ง
- ๋ฉ๋ชจ๋ฆฌ: ํฐ ๋ชจ๋ธ์ GPU/๊ณ ์ฉ๋ RAM ํ์
ZeroGPU ์ ์ฉ
- ์ผ์ผ ํ๋: 25๋ถ (PRO ๊ตฌ๋ )
- ๋๊ธฐ์ด: ์ฌ์ฉ์ ๋ง์ ๊ฒฝ์ฐ ๋๊ธฐ
- PRO ํ์: $9/month ๊ตฌ๋ ํ์
CPU Upgrade ์ ์ฉ
- ๋๋ฆฐ ์๋: GPU ๋๋น 10-30๋ฐฐ ๋๋ฆผ
- ๋น์ฉ: ์๊ฐ๋น $0.03 ($22/month)
- ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ: 32GB RAM (๋ํ ๋ชจ๋ธ ์ ์ฝ)
๐ ๊ด๋ จ ๋ฆฌ์์ค
๋ชจ๋ธ ์นด๋
๋ฌธ์
๐ ๋ผ์ด์ ์ค
MIT License
๐โโ๏ธ ๋ฌธ์
์ด์๋ ์ง๋ฌธ์ด ์์ผ์๋ฉด GitHub Issues๋ฅผ ํตํด ๋ฌธ์ํด์ฃผ์ธ์.
๐ก TIP:
- ๋น ๋ฅธ ํ ์คํธ: EXAONE 2.4B โก
- ๊ท ํ์กํ ์ฑ๋ฅ: EXAONE 7.8B โญ
- ์ต๊ณ ํ์ง: Llama 3.1 70B ๐ (๋๋ฆผ)