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://0.0.0.0:7860 ์ ์ (๋๋ http://localhost:7860)
์ฐธ๊ณ :
- ๋ก์ปฌ์ CPU/GPU ์๋ ๊ฐ์ง
- GPU ๊ถ์ฅ (CUDA ํ์)
- ์ฒซ ์คํ ์ ๋ชจ๋ธ ๋ค์ด๋ก๋ (์๊ฐ ์์)
๋ฆฌ๋ ์ค ์์คํ ์๋น์ค๋ก ์ค์น (์๋ ์์)
์๋ฒ ๋ถํ ์ ์ฑ๋ด์ ์๋์ผ๋ก ์คํํ๋ ค๋ฉด systemd ์๋น์ค๋ก ์ค์นํ ์ ์์ต๋๋ค.
1. ์ค์น ์คํฌ๋ฆฝํธ ์คํ
# ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ ์คํ
sudo ./install-service.sh
์ค์น ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก:
- ํ์ฌ ์ฌ์ฉ์์ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง
- systemd ์๋น์ค ํ์ผ์
/etc/systemd/system/chatbot.service์ ์ค์น - ๋ก๊ทธ ํ์ผ ์์ฑ (
/var/log/chatbot.log,/var/log/chatbot-error.log) - ๋ถํ ์ ์๋ ์์ ํ์ฑํ
- ์๋น์ค ์ฆ์ ์์ ์ฌ๋ถ ํ์ธ
2. ์๋น์ค ๊ด๋ฆฌ ๋ช ๋ น์ด
# ์๋น์ค ์์
sudo systemctl start chatbot
# ์๋น์ค ์ค์ง
sudo systemctl stop chatbot
# ์๋น์ค ์ฌ์์
sudo systemctl restart chatbot
# ์๋น์ค ์ํ ํ์ธ
sudo systemctl status chatbot
# ์ค์๊ฐ ๋ก๊ทธ ๋ณด๊ธฐ
sudo journalctl -u chatbot -f
# ์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ ๋ณด๊ธฐ
tail -f /var/log/chatbot.log
# ์๋ฌ ๋ก๊ทธ ๋ณด๊ธฐ
tail -f /var/log/chatbot-error.log
# ๋ถํ
์ ์๋ ์์ ํ์ฑํ
sudo systemctl enable chatbot
# ๋ถํ
์ ์๋ ์์ ๋นํ์ฑํ
sudo systemctl disable chatbot
3. ์๋น์ค ์ญ์
์๋น์ค๋ฅผ ์์ ํ ์ ๊ฑฐํ๋ ค๋ฉด:
# ์๋น์ค ์ค์ง ๋ฐ ๋นํ์ฑํ
sudo systemctl stop chatbot
sudo systemctl disable chatbot
# ์๋น์ค ํ์ผ ์ญ์
sudo rm /etc/systemd/system/chatbot.service
# systemd ๋ฐ๋ชฌ ์ฌ๋ก๋
sudo systemctl daemon-reload
# ๋ก๊ทธ ํ์ผ ์ญ์ (์ ํ์ฌํญ)
sudo rm /var/log/chatbot.log /var/log/chatbot-error.log
4. ์ฃผ์์ฌํญ
- ๊ฐ์ํ๊ฒฝ ํ์: ์๋น์ค ์ค์น ์ ์
venv๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํด์ผ ํฉ๋๋ค - ํฌํธ ์ถฉ๋: ๊ธฐ์กด ํ๋ก์ธ์ค๊ฐ 7860 ํฌํธ๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉด ์๋น์ค๊ฐ ์์๋์ง ์์ต๋๋ค
- ๊ถํ: ์ค์น ์คํฌ๋ฆฝํธ๋ ๋ฐ๋์
sudo๋ก ์คํํด์ผ ํฉ๋๋ค - ์ฌ์์: ์ฑ ์ฝ๋ ๋ณ๊ฒฝ ํ์๋
sudo systemctl restart chatbot์คํ ํ์ - ๋ก๊ทธ ํ์ธ: ๋ฌธ์ ๋ฐ์ ์ ๋ก๊ทธ ํ์ผ์ ๋จผ์ ํ์ธํ์ธ์
5. ์๋ ์๋น์ค ์ค์ (๊ณ ๊ธ)
์๋ ์ค์น ์คํฌ๋ฆฝํธ ๋์ ์๋์ผ๋ก ์ค์ ํ๋ ค๋ฉด:
# 1. chatbot.service ํ์ผ ํธ์ง
sudo nano /etc/systemd/system/chatbot.service
# 2. ๋ค์ ๋ด์ฉ ์
๋ ฅ (๊ฒฝ๋ก์ ์ฌ์ฉ์๋ช
์์ ํ์)
[Unit]
Description=Multi-Model Chatbot Gradio Service
After=network.target
[Service]
Type=simple
User=YOUR_USERNAME
WorkingDirectory=/path/to/simple-chatbot-gradio
Environment="PATH=/path/to/simple-chatbot-gradio/venv/bin:/usr/bin:/bin"
ExecStart=/path/to/simple-chatbot-gradio/venv/bin/python app.py
Restart=on-failure
RestartSec=10
StandardOutput=append:/var/log/chatbot.log
StandardError=append:/var/log/chatbot-error.log
[Install]
WantedBy=multi-user.target
# 3. ๋ก๊ทธ ํ์ผ ์์ฑ
sudo touch /var/log/chatbot.log /var/log/chatbot-error.log
sudo chown YOUR_USERNAME:YOUR_USERNAME /var/log/chatbot.log /var/log/chatbot-error.log
# 4. systemd ๋ฐ๋ชฌ ์ฌ๋ก๋ ๋ฐ ์๋น์ค ํ์ฑํ
sudo systemctl daemon-reload
sudo systemctl enable chatbot
sudo systemctl start chatbot
6. ํธ๋ฌ๋ธ์ํ
์๋น์ค๊ฐ ์์๋์ง ์๋ ๊ฒฝ์ฐ:
# ์๋น์ค ์ํ ํ์ธ
sudo systemctl status chatbot
# ์๋ฌ ๋ก๊ทธ ํ์ธ
sudo journalctl -u chatbot -n 50
# ์๋ ์คํ์ผ๋ก ์๋ฌ ํ์ธ
cd /path/to/simple-chatbot-gradio
source venv/bin/activate
python app.py
ํฌํธ๊ฐ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ:
# ํฌํธ 7860์ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค ํ์ธ
sudo lsof -i :7860
# ํ๋ก์ธ์ค ์ข
๋ฃ (PID ํ์ธ ํ)
sudo kill -9 <PID>
๊ฐ์ํ๊ฒฝ ๊ฒฝ๋ก ๋ฌธ์ :
# ๊ฐ์ํ๊ฒฝ ์ฌ์์ฑ
python -m venv venv
source venv/bin/activate
pip install -r requirements-local.txt
๐ ๏ธ ๊ธฐ์ ์คํ
- ํ๋ ์์ํฌ: 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 ๐ (๋๋ฆผ)