Spaces:
Running
on
Zero
docs: Update README with multi-environment support and remove redundant footer
Browse filesREADME.md changes:
- Add comprehensive multi-environment support documentation
- Local environments: GPU (CUDA/MPS), CPU
- HF Spaces: ZeroGPU, CPU Upgrade, CPU Basic
- Add hardware auto-detection explanation with code examples
- Add CUDA compatibility testing for RTX 5080+ support
- Expand performance comparison table (2 โ 5 environments)
- Add known issues and troubleshooting section
- Simplify installation instructions (single requirements.txt)
- Add PyTorch version requirements per environment
app.py changes:
- Move useful content (test examples, loading time note) to header
- Remove redundant footer section (60+ lines)
- Cleaner UI with all important info at the top
- Better user experience with reduced scrolling
Benefits:
- Eliminates duplicate information (header vs footer)
- Improves information accessibility
- Clearer environment setup guidance
- Better troubleshooting documentation
๐ค Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>
|
@@ -12,15 +12,16 @@ license: mit
|
|
| 12 |
|
| 13 |
# ๐ค Multi-Model Korean LLM Chatbot
|
| 14 |
|
| 15 |
-
13๊ฐ์ ๋ค์ํ ํ๊ตญ์ด LLM ๋ชจ๋ธ์ ์ ํํ์ฌ ๋ํํ ์ ์๋ ๋ฉํฐ๋ชจ๋ธ ์ฑ๋ด์
๋๋ค. **
|
| 16 |
|
| 17 |
## โจ ์ฃผ์ ํน์ง
|
| 18 |
|
| 19 |
- **๐ฏ 13๊ฐ ๋ชจ๋ธ ์ ํ**: ๋ค์ํ ํฌ๊ธฐ์ ํน์ฑ์ LLM ๋ชจ๋ธ ์ง์
|
| 20 |
- **๐ฐ๐ท ํ๊ธ ์ต์ ํ**: ํ๊ตญ์ด ์ฑ๋ฅ์ด ์ฐ์ํ ๋ชจ๋ธ๋ค๋ก ๊ตฌ์ฑ
|
| 21 |
-
-
|
| 22 |
- **๐พ ์บ์ ์์คํ
**: ๋ชจ๋ธ ์ฌ๋ค์ด๋ก๋ ๋ฐฉ์ง, ๋น ๋ฅธ ๋ก๋ฉ
|
| 23 |
- **๐ Lazy Loading**: ์ ํํ ๋ชจ๋ธ๋ง ๋ก๋ํ์ฌ ๋ฆฌ์์ค ์ ์ฝ
|
|
|
|
| 24 |
|
| 25 |
## ๐ฏ ์ง์ ๋ชจ๋ธ (13๊ฐ)
|
| 26 |
|
|
@@ -53,113 +54,221 @@ license: mit
|
|
| 53 |
|
| 54 |
> **์ฐธ๊ณ **: Gated ๋ชจ๋ธ์ Hugging Face์์ ๋ณ๋ ์น์ธ ํ์
|
| 55 |
|
| 56 |
-
## ๐
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
- โก ๋น ๋ฅธ ์๋ต (3-10์ด)
|
| 62 |
-
- ๐ฐ ์ ๋ ดํ ๋น์ฉ ($9/month)
|
| 63 |
-
- ๐ ์๋ GPU ํ ๋น/ํด์
|
| 64 |
-
|
| 65 |
-
**์ ์ฝ**:
|
| 66 |
-
- ํ๋ฃจ 25๋ถ ๋ฌด๋ฃ ์ฌ์ฉ (PRO ๊ตฌ๋
ํ์)
|
| 67 |
-
- ๋๊ธฐ์ด ๊ฐ๋ฅ (์ฌ์ฉ์ ๋ง์ ๊ฒฝ์ฐ)
|
| 68 |
-
|
| 69 |
-
**๋น์ฉ**: $9/month (PRO ๊ตฌ๋
)
|
| 70 |
-
|
| 71 |
-
### Option 2: CPU Upgrade
|
| 72 |
-
|
| 73 |
-
**์ฅ์ **:
|
| 74 |
-
- โฐ ๋ฌด์ ํ ์ฌ์ฉ
|
| 75 |
-
- ๐ ์์ธก ๊ฐ๋ฅํ ์ฑ๋ฅ
|
| 76 |
-
- ๐ง ๊ฐ๋จํ ์ค์
|
| 77 |
-
|
| 78 |
-
**์ ์ฝ**:
|
| 79 |
-
- ๐ข ๋๋ฆฐ ์๋ต (15์ด~2๋ถ)
|
| 80 |
-
- ๐ต ์๋์ ์ผ๋ก ๋น์ผ ๋น์ฉ
|
| 81 |
|
| 82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
|
| 84 |
-
|
| 85 |
|
| 86 |
-
|
| 87 |
|
|
|
|
| 88 |
1. Space Settings โ Hardware
|
| 89 |
2. **ZeroGPU** ์ ํ
|
| 90 |
-
3. Confirm
|
| 91 |
-
4.
|
| 92 |
-
|
| 93 |
-
โ UI์ "ZeroGPU" ํ์ ํ์ธ
|
| 94 |
-
|
| 95 |
-
### CPU Upgrade๋ก ๋ณ๊ฒฝ
|
| 96 |
|
|
|
|
| 97 |
1. Space Settings โ Hardware
|
| 98 |
2. **CPU Upgrade (8 vCPU / 32 GB)** ์ ํ
|
| 99 |
-
3. Confirm
|
| 100 |
-
4.
|
| 101 |
|
| 102 |
-
|
|
|
|
|
|
|
| 103 |
|
| 104 |
## ๐ ์ฑ๋ฅ ๋น๊ต
|
| 105 |
|
| 106 |
-
| ํญ๋ชฉ | ZeroGPU | CPU Upgrade |
|
| 107 |
-
|
| 108 |
-
| **์ฒซ ์๋ต** | 10-20์ด | 1-3๋ถ |
|
| 109 |
-
| **์ดํ ์๋ต** | 3-10์ด |
|
| 110 |
-
| **์ผ์ผ ํ๋** | 25๋ถ | ๋ฌด์ ํ |
|
| 111 |
-
| **์ ๋น์ฉ** | $9 | $22 |
|
| 112 |
-
| **GPU** | H200 (70GB) | ์์ |
|
| 113 |
-
|
|
| 114 |
|
| 115 |
## ๐ง ๊ธฐ์ ๊ตฌ์กฐ
|
| 116 |
|
| 117 |
-
### ์๋
|
| 118 |
|
| 119 |
```python
|
| 120 |
-
#
|
| 121 |
try:
|
| 122 |
import spaces
|
| 123 |
ZEROGPU_AVAILABLE = True
|
| 124 |
except ImportError:
|
| 125 |
ZEROGPU_AVAILABLE = False
|
| 126 |
|
| 127 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
if ZEROGPU_AVAILABLE:
|
| 129 |
@spaces.GPU(duration=120)
|
| 130 |
-
def generate_response(
|
| 131 |
-
return generate_response_impl(
|
| 132 |
else:
|
| 133 |
-
def generate_response(
|
| 134 |
-
return generate_response_impl(
|
| 135 |
```
|
| 136 |
|
| 137 |
-
### Lazy Loading ์์คํ
|
| 138 |
-
|
| 139 |
-
- ์ ํํ ๋ชจ๋ธ๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋
|
| 140 |
-
- ๋ชจ๋ธ ์ ํ ์ ์ด์ ๋ชจ๋ธ ์๋ ์ธ๋ก๋
|
| 141 |
-
- ์บ์ ํ์ธ์ผ๋ก ์ฌ๋ค์ด๋ก๋ ๋ฐฉ์ง
|
| 142 |
-
- ๋์คํฌ์์ ๋น ๋ฅธ ๋ก๋ฉ (์บ์๋ ๊ฒฝ์ฐ)
|
| 143 |
-
|
| 144 |
-
### ์บ์ ๊ด๋ฆฌ
|
| 145 |
|
|
|
|
| 146 |
```python
|
| 147 |
-
def
|
| 148 |
-
"""
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
```
|
| 157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
## ๐ ์ฌ์ฉ ๋ฐฉ๋ฒ
|
| 159 |
|
| 160 |
### 1. Space ์ ์
|
| 161 |
|
| 162 |
-
https://huggingface.co/spaces/catchitplay/simple-
|
| 163 |
|
| 164 |
### 2. ๋ชจ๋ธ ์ ํ
|
| 165 |
|
|
@@ -207,25 +316,14 @@ cd simple-chatbot-gradio
|
|
| 207 |
python -m venv venv
|
| 208 |
source venv/bin/activate # Windows: venv\Scripts\activate
|
| 209 |
|
| 210 |
-
# ์์กด์ฑ ์ค์น
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
**๋ฐฉ๋ฒ 1: ๋ก์ปฌ ์ ์ฉ requirements (๊ถ์ฅ)**
|
| 214 |
-
```bash
|
| 215 |
-
pip install -r requirements-local.txt
|
| 216 |
-
# ์ต์ PyTorch ๋ฒ์ ์ฌ์ฉ (ZeroGPU ์ ์ฝ ์์)
|
| 217 |
-
```
|
| 218 |
-
|
| 219 |
-
**๋ฐฉ๋ฒ 2: ์๋ ํ๊ฒฝ ๊ฐ์ง ์ค์น**
|
| 220 |
-
```bash
|
| 221 |
-
python setup.py
|
| 222 |
-
# ํ๊ฒฝ์ ์๋ ๊ฐ์งํ๊ณ ์ ์ ํ ๋ฒ์ ์ค์น
|
| 223 |
```
|
| 224 |
|
| 225 |
-
|
| 226 |
```bash
|
| 227 |
-
|
| 228 |
-
|
| 229 |
```
|
| 230 |
|
| 231 |
### .env ํ์ผ ์ค์
|
|
@@ -247,12 +345,28 @@ echo "HF_TOKEN=your_hugging_face_token" > .env
|
|
| 247 |
python app.py
|
| 248 |
```
|
| 249 |
|
| 250 |
-
๋ธ๋ผ์ฐ์ ์์ http://
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 251 |
|
| 252 |
**์ฐธ๊ณ **:
|
| 253 |
-
-
|
| 254 |
-
-
|
| 255 |
-
- ์ฒซ ์คํ ์ ๋ชจ๋ธ ๋ค์ด๋ก๋ (
|
|
|
|
| 256 |
|
| 257 |
### ๋ฆฌ๋
์ค ์์คํ
์๋น์ค๋ก ์ค์น (์๋ ์์)
|
| 258 |
|
|
@@ -403,25 +517,35 @@ pip install -r requirements-local.txt
|
|
| 403 |
## ๐ ๏ธ ๊ธฐ์ ์คํ
|
| 404 |
|
| 405 |
- **ํ๋ ์์ํฌ**: Gradio 5.49.1
|
| 406 |
-
- **ML ๋ผ์ด๋ธ๋ฌ๋ฆฌ**: Transformers 4.57.1, PyTorch 2.2.0
|
| 407 |
-
- **GPU
|
|
|
|
|
|
|
|
|
|
| 408 |
- **์ธ์ด**: Python 3.10+
|
| 409 |
|
| 410 |
## ๐ Dependencies
|
| 411 |
|
| 412 |
```txt
|
|
|
|
| 413 |
gradio==5.49.1
|
| 414 |
transformers==4.57.1
|
| 415 |
-
torch
|
| 416 |
safetensors==0.6.2
|
| 417 |
accelerate==0.26.1
|
| 418 |
sentencepiece==0.2.0
|
| 419 |
protobuf==4.25.1
|
| 420 |
huggingface-hub>=0.19.0
|
| 421 |
python-dotenv==1.0.0
|
| 422 |
-
spaces # ZeroGPU support
|
| 423 |
```
|
| 424 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 425 |
## ๐ Gated ๋ชจ๋ธ ์ฌ์ฉ๋ฒ
|
| 426 |
|
| 427 |
### 1. ๋ชจ๋ธ ์น์ธ ์์ฒญ
|
|
@@ -441,22 +565,48 @@ Space Settings โ Repository secrets:
|
|
| 441 |
- Name: `HF_TOKEN`
|
| 442 |
- Value: `your_token_here`
|
| 443 |
|
| 444 |
-
## โ ๏ธ ์ ํ์ฌํญ
|
| 445 |
|
| 446 |
### ๊ณตํต
|
| 447 |
- **๋ชจ๋ธ ํฌ๊ธฐ**: 2-70GB (๋ก๋ฉ ์๊ฐ ํ์)
|
| 448 |
-
- **์ปจํ
์คํธ**: ๋ํ ํ์คํ ๋ฆฌ ์ ์ง
|
| 449 |
- **๋ฉ๋ชจ๋ฆฌ**: ํฐ ๋ชจ๋ธ์ GPU/๊ณ ์ฉ๋ RAM ํ์
|
| 450 |
|
| 451 |
-
###
|
| 452 |
-
|
| 453 |
-
|
| 454 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 455 |
|
| 456 |
-
|
| 457 |
-
-
|
| 458 |
-
-
|
| 459 |
-
- **๋ฉ๋ชจ๋ฆฌ ์ ์ฝ**: 32GB RAM (๋ํ ๋ชจ๋ธ ์ ์ฝ)
|
| 460 |
|
| 461 |
## ๐ ๊ด๋ จ ๋ฆฌ์์ค
|
| 462 |
|
|
|
|
| 12 |
|
| 13 |
# ๐ค Multi-Model Korean LLM Chatbot
|
| 14 |
|
| 15 |
+
13๊ฐ์ ๋ค์ํ ํ๊ตญ์ด LLM ๋ชจ๋ธ์ ์ ํํ์ฌ ๋ํํ ์ ์๋ ๋ฉํฐ๋ชจ๋ธ ์ฑ๋ด์
๋๋ค. **๋ก์ปฌ ํ๊ฒฝ(CPU/GPU)**๊ณผ **Hugging Face Spaces(CPU Basic/Upgrade, ZeroGPU)**๋ฅผ ์๋ ๊ฐ์งํ์ฌ ์ต์ ์ค์ ์ ์ ์ฉํฉ๋๋ค.
|
| 16 |
|
| 17 |
## โจ ์ฃผ์ ํน์ง
|
| 18 |
|
| 19 |
- **๐ฏ 13๊ฐ ๋ชจ๋ธ ์ ํ**: ๋ค์ํ ํฌ๊ธฐ์ ํน์ฑ์ LLM ๋ชจ๋ธ ์ง์
|
| 20 |
- **๐ฐ๐ท ํ๊ธ ์ต์ ํ**: ํ๊ตญ์ด ์ฑ๋ฅ์ด ์ฐ์ํ ๋ชจ๋ธ๋ค๋ก ๊ตฌ์ฑ
|
| 21 |
+
- **๐ฅ๏ธ ๋ฉํฐ ํ๊ฒฝ ์ง์**: ๋ก์ปฌ(CPU/GPU) + HF Spaces(CPU Basic/Upgrade, ZeroGPU) ์๋ ๊ฐ์ง
|
| 22 |
- **๐พ ์บ์ ์์คํ
**: ๋ชจ๋ธ ์ฌ๋ค์ด๋ก๋ ๋ฐฉ์ง, ๋น ๋ฅธ ๋ก๋ฉ
|
| 23 |
- **๐ Lazy Loading**: ์ ํํ ๋ชจ๋ธ๋ง ๋ก๋ํ์ฌ ๋ฆฌ์์ค ์ ์ฝ
|
| 24 |
+
- **๐ก๏ธ ์์ ์ฑ**: RTX 5080 ๋ฑ ์ต์ GPU ์ง์, CUDA ํธํ์ฑ ์๋ ํ
์คํธ
|
| 25 |
|
| 26 |
## ๐ฏ ์ง์ ๋ชจ๋ธ (13๊ฐ)
|
| 27 |
|
|
|
|
| 54 |
|
| 55 |
> **์ฐธ๊ณ **: Gated ๋ชจ๋ธ์ Hugging Face์์ ๋ณ๋ ์น์ธ ํ์
|
| 56 |
|
| 57 |
+
## ๐ ์ง์ ํ๊ฒฝ
|
| 58 |
+
|
| 59 |
+
### ๋ก์ปฌ ํ๊ฒฝ (๊ฐ๋ฐ/๊ฐ์ธ ์ฌ์ฉ)
|
| 60 |
+
|
| 61 |
+
**1. Local GPU (๊ถ์ฅ)**
|
| 62 |
+
- **์ฅ์ **:
|
| 63 |
+
- โก ๋น ๋ฅธ ์๋ต (5-10์ด, GPU ๊ฐ์)
|
| 64 |
+
- ๐ ๋ฌด์ ํ ์ฌ์ฉ
|
| 65 |
+
- ๐ฐ ๋น์ฉ ์์
|
| 66 |
+
- **์ง์ GPU**:
|
| 67 |
+
- NVIDIA CUDA ์ง์ GPU (RTX ์๋ฆฌ์ฆ, A100 ๋ฑ)
|
| 68 |
+
- Apple Silicon GPU (M1/M2/M3 - MPS ๊ฐ์)
|
| 69 |
+
- RTX 5080 ๋ฑ ์ต์ Blackwell GPU (PyTorch nightly ํ์)
|
| 70 |
+
- **์๊ตฌ์ฌํญ**: CUDA 12.0+ ๋๋ Apple Silicon
|
| 71 |
+
|
| 72 |
+
**2. Local CPU**
|
| 73 |
+
- **์ฅ์ **:
|
| 74 |
+
- ๐ฅ๏ธ GPU ์์ด๋ ์คํ ๊ฐ๋ฅ
|
| 75 |
+
- ๐ง ๊ฐ๋จํ ์ค์
|
| 76 |
+
- **์ ์ฝ**:
|
| 77 |
+
- โณ ๋๋ฆฐ ์๋ต (1~3๋ถ)
|
| 78 |
+
- ๐ ๊ฒฝ๋ ๋ชจ๋ธ ๊ถ์ฅ (EXAONE 2.4B, Mistral 7B)
|
| 79 |
+
|
| 80 |
+
### Hugging Face Spaces (ํด๋ผ์ฐ๋ ๋ฐฐํฌ)
|
| 81 |
+
|
| 82 |
+
**1. ZeroGPU (์ถ์ฒ)**
|
| 83 |
+
- **์ฅ์ **:
|
| 84 |
+
- โก ๋น ๋ฅธ ์๋ต (3-10์ด, NVIDIA H200 GPU ๊ฐ์)
|
| 85 |
+
- ๐ฐ ์ ๋ ดํ ๋น์ฉ ($9/month)
|
| 86 |
+
- ๐ ์๋ GPU ํ ๋น/ํด์
|
| 87 |
+
- **์ ์ฝ**:
|
| 88 |
+
- ํ๋ฃจ 25๋ถ ๋ฌด๋ฃ ์ฌ์ฉ (PRO ๊ตฌ๋
ํ์)
|
| 89 |
+
- ๋๊ธฐ์ด ๊ฐ๋ฅ (์ฌ์ฉ์ ๋ง์ ๊ฒฝ์ฐ)
|
| 90 |
+
- **๋น์ฉ**: $9/month (PRO ๊ตฌ๋
)
|
| 91 |
+
|
| 92 |
+
**2. CPU Upgrade**
|
| 93 |
+
- **์ฅ์ **:
|
| 94 |
+
- โฐ ๋ฌด์ ํ ์ฌ์ฉ
|
| 95 |
+
- ๐ ์์ธก ๊ฐ๋ฅํ ์ฑ๋ฅ
|
| 96 |
+
- ๐ง ๊ฐ๋จํ ์ค์
|
| 97 |
+
- **์ ์ฝ**:
|
| 98 |
+
- ๐ข ๋๋ฆฐ ์๋ต (30์ด~1๋ถ)
|
| 99 |
+
- ๐ต ์๋์ ์ผ๋ก ๋น์ผ ๋น์ฉ
|
| 100 |
+
- **๋น์ฉ**: $0.03/hour (์ ์ฝ $22)
|
| 101 |
+
|
| 102 |
+
**3. CPU Basic (๋ฌด๋ฃ)**
|
| 103 |
+
- **์ฅ์ **:
|
| 104 |
+
- ๐ก ๋ฌด๋ฃ ํฐ์ด
|
| 105 |
+
- ๐งช ํ
์คํธ/ํ์ต ์ฉ๋
|
| 106 |
+
- **์ ์ฝ**:
|
| 107 |
+
- โณ ๋งค์ฐ ๋๋ฆฐ ์๋ต (1~2๋ถ)
|
| 108 |
+
- ๐ ๊ฒฝ๋ ๋ชจ๋ธ๋ง ๊ถ์ฅ
|
| 109 |
+
- โ ๏ธ ์ ํ์ ์ฌ์ฉ
|
| 110 |
+
|
| 111 |
+
## โ๏ธ ํ๊ฒฝ๋ณ ์ค์ ๋ฐฉ๋ฒ
|
| 112 |
+
|
| 113 |
+
### ๋ก์ปฌ ์คํ (์๋ ๊ฐ์ง)
|
| 114 |
+
|
| 115 |
+
์ฑ์ด ์๋์ผ๋ก ๋ก์ปฌ ํ๊ฒฝ์ ๊ฐ์งํ๊ณ ์ต์ ์ค์ ์ ์ ์ฉํฉ๋๋ค:
|
| 116 |
|
| 117 |
+
```bash
|
| 118 |
+
python app.py
|
| 119 |
+
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
|
| 121 |
+
**์๋ ๊ฐ์ง ๋ก์ง**:
|
| 122 |
+
1. **GPU ๊ฐ์ง**: CUDA/MPS ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ
|
| 123 |
+
2. **CUDA ํธํ์ฑ ํ
์คํธ**: ํ
์ ์ฐ์ฐ์ผ๋ก ์ค์ GPU ์๋ ๊ฒ์ฆ
|
| 124 |
+
3. **CPU ํด๋ฐฑ**: GPU ์ค๋ฅ ์ ์๋ CPU ๋ชจ๋ ์ ํ
|
| 125 |
+
4. **ํ๊ฒฝ ์ ๋ณด ์ถ๋ ฅ**: ์์ ์ ๊ฐ์ง๋ ํ๊ฒฝ ์ ๋ณด ํ์
|
| 126 |
|
| 127 |
+
### HF Spaces ๋ฐฐํฌ (์๋ ๊ฐ์ง)
|
| 128 |
|
| 129 |
+
Space Settings์์ ํ๋์จ์ด๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ฑ์ด ์๋์ผ๋ก ๊ฐ์ง:
|
| 130 |
|
| 131 |
+
**ZeroGPU๋ก ๋ณ๊ฒฝ**:
|
| 132 |
1. Space Settings โ Hardware
|
| 133 |
2. **ZeroGPU** ์ ํ
|
| 134 |
+
3. Confirm โ ๋น๋ ์๋ฃ ๋๊ธฐ (1-2๋ถ)
|
| 135 |
+
4. UI์ "๐ HF Spaces - ZeroGPU" ํ์ ํ์ธ
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
|
| 137 |
+
**CPU Upgrade๋ก ๋ณ๊ฒฝ**:
|
| 138 |
1. Space Settings โ Hardware
|
| 139 |
2. **CPU Upgrade (8 vCPU / 32 GB)** ์ ํ
|
| 140 |
+
3. Confirm โ ๋น๋ ์๋ฃ ๋๊ธฐ (1-2๋ถ)
|
| 141 |
+
4. UI์ "โ๏ธ HF Spaces - CPU Upgrade" ํ์ ํ์ธ
|
| 142 |
|
| 143 |
+
**CPU Basic (๋ฌด๋ฃ)**:
|
| 144 |
+
- ๊ธฐ๋ณธ ์ค์ , ๋ณ๋ ๋ณ๊ฒฝ ๋ถํ์
|
| 145 |
+
- UI์ "๐ป HF Spaces - CPU Basic" ํ์
|
| 146 |
|
| 147 |
## ๐ ์ฑ๋ฅ ๋น๊ต
|
| 148 |
|
| 149 |
+
| ํญ๋ชฉ | Local GPU | Local CPU | ZeroGPU | CPU Upgrade | CPU Basic |
|
| 150 |
+
|------|-----------|-----------|---------|-------------|-----------|
|
| 151 |
+
| **์ฒซ ์๋ต** | 10-20์ด | 2-5๋ถ | 10-20์ด | 1-2๋ถ | 2-3๋ถ |
|
| 152 |
+
| **์ดํ ์๋ต** | 5-10์ด | 1-3๋ถ | 3-10์ด | 30์ด~1๋ถ | 1-2๋ถ |
|
| 153 |
+
| **์ผ์ผ ํ๋** | ๋ฌด์ ํ | ๋ฌด์ ํ | 25๋ถ | ๋ฌด์ ํ | ์ ํ์ |
|
| 154 |
+
| **์ ๋น์ฉ** | $0 | $0 | $9 | $22 | $0 |
|
| 155 |
+
| **GPU** | ์ฌ์ฉ์ GPU | ์์ | H200 (70GB) | ์์ | ์์ |
|
| 156 |
+
| **๊ถ์ฅ ๋ชจ๋ธ** | ์ ์ฒด | ๊ฒฝ๋ | ์ ์ฒด | ์ ์ฒด | ๊ฒฝ๋ |
|
| 157 |
|
| 158 |
## ๐ง ๊ธฐ์ ๊ตฌ์กฐ
|
| 159 |
|
| 160 |
+
### ๋ฉํฐ ํ๊ฒฝ ์๋ ๊ฐ์ง ์์คํ
|
| 161 |
|
| 162 |
```python
|
| 163 |
+
# 1. CUDA ์ด๊ธฐํ ์ค๋ฅ ๋ฐฉ์ง: spaces๋ฅผ ๋จผ์ import
|
| 164 |
try:
|
| 165 |
import spaces
|
| 166 |
ZEROGPU_AVAILABLE = True
|
| 167 |
except ImportError:
|
| 168 |
ZEROGPU_AVAILABLE = False
|
| 169 |
|
| 170 |
+
# 2. ์ดํ CUDA ๊ด๋ จ ํจํค์ง import
|
| 171 |
+
import torch
|
| 172 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 173 |
+
|
| 174 |
+
# 3. ํ๋์จ์ด ํ๊ฒฝ ๊ฐ์ง
|
| 175 |
+
def detect_hardware_environment():
|
| 176 |
+
"""
|
| 177 |
+
Returns: {
|
| 178 |
+
'platform': 'hf_spaces' | 'local',
|
| 179 |
+
'hardware': 'zerogpu' | 'cpu_upgrade' | 'cpu_basic' | 'local_gpu' | 'local_cpu',
|
| 180 |
+
'gpu_available': bool,
|
| 181 |
+
'gpu_name': str or None,
|
| 182 |
+
'cuda_compatible': bool
|
| 183 |
+
}
|
| 184 |
+
"""
|
| 185 |
+
# HF Spaces ๊ฐ์ง
|
| 186 |
+
if os.environ.get('SPACE_ID'):
|
| 187 |
+
if ZEROGPU_AVAILABLE:
|
| 188 |
+
return 'zerogpu'
|
| 189 |
+
elif cpu_count >= 8:
|
| 190 |
+
return 'cpu_upgrade'
|
| 191 |
+
else:
|
| 192 |
+
return 'cpu_basic'
|
| 193 |
+
|
| 194 |
+
# ๋ก์ปฌ ํ๊ฒฝ ๊ฐ์ง
|
| 195 |
+
if torch.cuda.is_available():
|
| 196 |
+
# CUDA ํธํ์ฑ ํ
์คํธ (RTX 5080 ๋ฑ ์ต์ GPU ์ง์)
|
| 197 |
+
if test_cuda_compatibility():
|
| 198 |
+
return 'local_gpu'
|
| 199 |
+
else:
|
| 200 |
+
return 'local_cpu' # CUDA ์ค๋ฅ โ CPU ํด๋ฐฑ
|
| 201 |
+
elif torch.backends.mps.is_available():
|
| 202 |
+
return 'local_gpu' # Apple Silicon
|
| 203 |
+
else:
|
| 204 |
+
return 'local_cpu'
|
| 205 |
+
|
| 206 |
+
# 4. ์กฐ๊ฑด๋ถ GPU decorator ์ ์ฉ
|
| 207 |
if ZEROGPU_AVAILABLE:
|
| 208 |
@spaces.GPU(duration=120)
|
| 209 |
+
def generate_response(message, history):
|
| 210 |
+
return generate_response_impl(message, history)
|
| 211 |
else:
|
| 212 |
+
def generate_response(message, history):
|
| 213 |
+
return generate_response_impl(message, history)
|
| 214 |
```
|
| 215 |
|
| 216 |
+
### Lazy Loading & ์บ์ ์์คํ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 217 |
|
| 218 |
+
**์ค๋งํธ ๋ชจ๋ธ ๋ก๋ฉ**:
|
| 219 |
```python
|
| 220 |
+
def load_model_once(model_index=None):
|
| 221 |
+
"""๋ชจ๋ธ ๋ณ๊ฒฝ ์์๋ง ๋ก๋ (Lazy Loading)"""
|
| 222 |
+
global model, tokenizer, loaded_model_name
|
| 223 |
+
|
| 224 |
+
model_name = MODEL_CONFIGS[model_index]["MODEL_NAME"]
|
| 225 |
+
|
| 226 |
+
# 1. ์ด๋ฏธ ๋ก๋๋ ๋ชจ๋ธ์ด๋ฉด ์ฌ์ฌ์ฉ
|
| 227 |
+
if loaded_model_name == model_name:
|
| 228 |
+
print(f"โน๏ธ Model {model_name} already loaded, reusing...")
|
| 229 |
+
return model, tokenizer
|
| 230 |
+
|
| 231 |
+
# 2. ์บ์ ํ์ธ โ UI์ ๋ค์ด๋ก๋ vs ๋ก๋ฉ ๋ฉ์์ง ํ์
|
| 232 |
+
is_cached = check_model_cached(model_name)
|
| 233 |
+
if is_cached:
|
| 234 |
+
print(f"โ
Model found in cache, loading from disk...")
|
| 235 |
+
else:
|
| 236 |
+
print(f"๐ฅ Model not in cache, downloading (~4-14GB)...")
|
| 237 |
+
|
| 238 |
+
# 3. ์ด์ ๋ชจ๋ธ ๋ฉ๋ชจ๋ฆฌ ํด์
|
| 239 |
+
if model is not None:
|
| 240 |
+
del model, tokenizer
|
| 241 |
+
if HW_ENV['cuda_compatible']:
|
| 242 |
+
torch.cuda.empty_cache()
|
| 243 |
+
|
| 244 |
+
# 4. ์ ๋ชจ๋ธ ๋ก๋ (ํ๊ฒฝ๋ณ ์ต์ ํ)
|
| 245 |
+
device = "cuda" if HW_ENV['gpu_available'] and HW_ENV['cuda_compatible'] else "cpu"
|
| 246 |
+
|
| 247 |
+
if device == "cuda":
|
| 248 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 249 |
+
model_name,
|
| 250 |
+
dtype=torch.float16, # GPU: float16
|
| 251 |
+
device_map="auto",
|
| 252 |
+
)
|
| 253 |
+
else:
|
| 254 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 255 |
+
model_name,
|
| 256 |
+
dtype=torch.float32, # CPU: float32
|
| 257 |
+
)
|
| 258 |
+
|
| 259 |
+
loaded_model_name = model_name
|
| 260 |
+
return model, tokenizer
|
| 261 |
```
|
| 262 |
|
| 263 |
+
**์บ์ ์ํ ํ์ธ**:
|
| 264 |
+
- ์ฌ์ฉ์์๊ฒ "๐พ ์บ์๋ ๋ชจ๋ธ ๋ก๋ฉ ์ค" vs "๐ฅ ๋ชจ๋ธ ๋ค์ด๋ก๋ ์ค" ์ค์๊ฐ ํ์
|
| 265 |
+
- ๋ค์ด๋ก๋ ์๊ฐ ์์ธก ์ ๋ณด ์ ๊ณต (์ฒซ ์ฌ์ฉ ์ 5-20๋ถ)
|
| 266 |
+
|
| 267 |
## ๐ ์ฌ์ฉ ๋ฐฉ๋ฒ
|
| 268 |
|
| 269 |
### 1. Space ์ ์
|
| 270 |
|
| 271 |
+
https://huggingface.co/spaces/catchitplay/simple-chat
|
| 272 |
|
| 273 |
### 2. ๋ชจ๋ธ ์ ํ
|
| 274 |
|
|
|
|
| 316 |
python -m venv venv
|
| 317 |
source venv/bin/activate # Windows: venv\Scripts\activate
|
| 318 |
|
| 319 |
+
# ์์กด์ฑ ์ค์น
|
| 320 |
+
pip install -r requirements.txt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 321 |
```
|
| 322 |
|
| 323 |
+
**RTX 5080 ๋ฑ ์ต์ GPU ์ฌ์ฉ ์**:
|
| 324 |
```bash
|
| 325 |
+
# PyTorch nightly ์ค์น (CUDA 12.8+ ์ง์)
|
| 326 |
+
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128
|
| 327 |
```
|
| 328 |
|
| 329 |
### .env ํ์ผ ์ค์
|
|
|
|
| 345 |
python app.py
|
| 346 |
```
|
| 347 |
|
| 348 |
+
๋ธ๋ผ์ฐ์ ์์ http://localhost:7860 ์ ์
|
| 349 |
+
|
| 350 |
+
**์์ ์ ์๋ ํ๊ฒฝ ๊ฐ์ง ์ถ๋ ฅ**:
|
| 351 |
+
```
|
| 352 |
+
============================================================
|
| 353 |
+
Hardware Environment Detection
|
| 354 |
+
============================================================
|
| 355 |
+
Platform: local
|
| 356 |
+
Hardware: local_gpu
|
| 357 |
+
GPU Available: True
|
| 358 |
+
GPU Name: NVIDIA GeForce RTX 5080
|
| 359 |
+
CPU Cores: 16
|
| 360 |
+
OS: Linux
|
| 361 |
+
Description: ๐ฅ๏ธ Local - GPU (NVIDIA GeForce RTX 5080)
|
| 362 |
+
============================================================
|
| 363 |
+
```
|
| 364 |
|
| 365 |
**์ฐธ๊ณ **:
|
| 366 |
+
- ๋ก์ปฌ ํ๊ฒฝ ์๋ ๊ฐ์ง: CPU/GPU/Apple Silicon MPS
|
| 367 |
+
- CUDA ํธํ์ฑ ์๋ ํ
์คํธ (GPU ์ค๋ฅ ์ CPU ํด๋ฐฑ)
|
| 368 |
+
- ์ฒซ ์คํ ์ ๋ชจ๋ธ ๋ค์ด๋ก๋ (4-14GB, 5-20๋ถ ์์)
|
| 369 |
+
- GPU ๊ถ์ฅ (RTX ์๋ฆฌ์ฆ, A100, Apple Silicon ๋ฑ)
|
| 370 |
|
| 371 |
### ๋ฆฌ๋
์ค ์์คํ
์๋น์ค๋ก ์ค์น (์๋ ์์)
|
| 372 |
|
|
|
|
| 517 |
## ๐ ๏ธ ๊ธฐ์ ์คํ
|
| 518 |
|
| 519 |
- **ํ๋ ์์ํฌ**: Gradio 5.49.1
|
| 520 |
+
- **ML ๋ผ์ด๋ธ๋ฌ๋ฆฌ**: Transformers 4.57.1, PyTorch 2.2.0+
|
| 521 |
+
- **GPU ์ง์**:
|
| 522 |
+
- HF Spaces: ZeroGPU (NVIDIA H200)
|
| 523 |
+
- ๋ก์ปฌ: CUDA 12.0+, Apple Silicon MPS
|
| 524 |
+
- ์ต์ GPU: PyTorch nightly (CUDA 12.8+) ์ง์
|
| 525 |
- **์ธ์ด**: Python 3.10+
|
| 526 |
|
| 527 |
## ๐ Dependencies
|
| 528 |
|
| 529 |
```txt
|
| 530 |
+
# Core
|
| 531 |
gradio==5.49.1
|
| 532 |
transformers==4.57.1
|
| 533 |
+
torch>=2.2.0 # HF Spaces: 2.2.0 (ZeroGPU), Local: 2.2.0+ or nightly
|
| 534 |
safetensors==0.6.2
|
| 535 |
accelerate==0.26.1
|
| 536 |
sentencepiece==0.2.0
|
| 537 |
protobuf==4.25.1
|
| 538 |
huggingface-hub>=0.19.0
|
| 539 |
python-dotenv==1.0.0
|
| 540 |
+
spaces # ZeroGPU support (HF Spaces only)
|
| 541 |
```
|
| 542 |
|
| 543 |
+
**ํ๊ฒฝ๋ณ PyTorch ๋ฒ์ **:
|
| 544 |
+
- **HF Spaces**: PyTorch 2.2.0 (ZeroGPU ํธํ)
|
| 545 |
+
- **๋ก์ปฌ ์ผ๋ฐ GPU**: PyTorch 2.2.0+ (CUDA 12.0+)
|
| 546 |
+
- **๋ก์ปฌ ์ต์ GPU (RTX 5080 ๋ฑ)**: PyTorch nightly (CUDA 12.8+)
|
| 547 |
+
- **๋ก์ปฌ CPU**: PyTorch 2.2.0+ (CPU-only build)
|
| 548 |
+
|
| 549 |
## ๐ Gated ๋ชจ๋ธ ์ฌ์ฉ๋ฒ
|
| 550 |
|
| 551 |
### 1. ๋ชจ๋ธ ์น์ธ ์์ฒญ
|
|
|
|
| 565 |
- Name: `HF_TOKEN`
|
| 566 |
- Value: `your_token_here`
|
| 567 |
|
| 568 |
+
## โ ๏ธ ์ ํ์ฌํญ ๋ฐ ์๋ ค์ง ์ด์
|
| 569 |
|
| 570 |
### ๊ณตํต
|
| 571 |
- **๋ชจ๋ธ ํฌ๊ธฐ**: 2-70GB (๋ก๋ฉ ์๊ฐ ํ์)
|
| 572 |
+
- **์ปจํ
์คํธ**: ๋ํ ํ์คํ ๋ฆฌ ์ ์ง (์ต๊ทผ 3ํด)
|
| 573 |
- **๋ฉ๋ชจ๋ฆฌ**: ํฐ ๋ชจ๋ธ์ GPU/๊ณ ์ฉ๋ RAM ํ์
|
| 574 |
|
| 575 |
+
### ํ๊ฒฝ๋ณ ์ ์ฝ
|
| 576 |
+
|
| 577 |
+
**HF Spaces - ZeroGPU**:
|
| 578 |
+
- ์ผ์ผ ํ๋: 25๋ถ (PRO ๊ตฌ๋
ํ์)
|
| 579 |
+
- ๋๊ธฐ์ด: ์ฌ์ฉ์ ๋ง์ ๊ฒฝ์ฐ ๋๊ธฐ
|
| 580 |
+
- ๋น์ฉ: $9/month
|
| 581 |
+
|
| 582 |
+
**HF Spaces - CPU Upgrade**:
|
| 583 |
+
- ๋๋ฆฐ ์๋: GPU ๋๋น 10-30๋ฐฐ ๋๋ฆผ
|
| 584 |
+
- ๋น์ฉ: ์๊ฐ๋น $0.03 ($22/month)
|
| 585 |
+
- ๋ฉ๋ชจ๋ฆฌ: 32GB RAM (๋ํ ๋ชจ๋ธ ์ ์ฝ)
|
| 586 |
+
|
| 587 |
+
**HF Spaces - CPU Basic**:
|
| 588 |
+
- ๋งค์ฐ ๋๋ฆผ: 1-2๋ถ ์๋ต
|
| 589 |
+
- ์ ํ์ ์ฌ์ฉ
|
| 590 |
+
- ๊ฒฝ๋ ๋ชจ๋ธ ๊ถ์ฅ
|
| 591 |
+
|
| 592 |
+
**๋ก์ปฌ ํ๊ฒฝ**:
|
| 593 |
+
- GPU ๋ฉ๋ชจ๋ฆฌ: ํฐ ๋ชจ๋ธ์ VRAM ๋ถ์กฑ ๊ฐ๋ฅ
|
| 594 |
+
- ์ต์ GPU: PyTorch nightly ํ์ (RTX 5080 ๋ฑ)
|
| 595 |
+
- CPU ๋ชจ๋: ๋งค์ฐ ๋๋ฆผ (1-3๋ถ ์๋ต)
|
| 596 |
+
|
| 597 |
+
### ์๋ ค์ง ์ด์ ๋ฐ ํด๊ฒฐ๋ฐฉ๋ฒ
|
| 598 |
+
|
| 599 |
+
**"CUDA has been initialized" ์ค๋ฅ (ZeroGPU)**:
|
| 600 |
+
- **์์ธ**: torch ์ ์ spaces import ํ์
|
| 601 |
+
- **ํด๊ฒฐ**: app.py์์ spaces๋ฅผ ๊ฐ์ฅ ๋จผ์ import (์ด๋ฏธ ์ ์ฉ๋จ)
|
| 602 |
+
|
| 603 |
+
**RTX 5080 ๋ฑ Blackwell GPU์์ CUDA ์ค๋ฅ**:
|
| 604 |
+
- **์์ธ**: CUDA 12.8+ ํ์ (PyTorch 2.2.0์ ๋ฏธ์ง์)
|
| 605 |
+
- **ํด๊ฒฐ**: PyTorch nightly ์ค์น (์ ์ค์น ์น์
์ฐธ์กฐ)
|
| 606 |
|
| 607 |
+
**GPU ๊ฐ์ง๋์ง๋ง CPU ๋ชจ๋๋ก ๋์**:
|
| 608 |
+
- **์์ธ**: CUDA ํธํ์ฑ ํ
์คํธ ์คํจ
|
| 609 |
+
- **ํด๊ฒฐ**: PyTorch ๋ฒ์ ํ์ธ, CUDA ๋๋ผ์ด๋ฒ ์
๋ฐ์ดํธ
|
|
|
|
| 610 |
|
| 611 |
## ๐ ๊ด๋ จ ๋ฆฌ์์ค
|
| 612 |
|
|
@@ -501,6 +501,12 @@ with gr.Blocks(title="๐ค Multi-Model Chatbot", css=custom_css) as demo:
|
|
| 501 |
**๋ชจ๋ธ ์ ํ**:
|
| 502 |
- ๐ฏ {TOTAL_MODEL_COUNT}๊ฐ์ง ํ๊ธ ์ต์ ํ ๋ชจ๋ธ ({PUBLIC_MODEL_COUNT} Public + {GATED_MODEL_COUNT} Gated)
|
| 503 |
- ๐ ๋ชจ๋ธ ์ ํ ์ ์๋ ์ฌ๋ก๋ฉ (์ฑํ
ํ์คํ ๋ฆฌ ์ด๊ธฐํ)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 504 |
"""
|
| 505 |
|
| 506 |
# Add hardware-specific features
|
|
@@ -609,61 +615,5 @@ with gr.Blocks(title="๐ค Multi-Model Chatbot", css=custom_css) as demo:
|
|
| 609 |
msg.submit(submit, [msg, chatbot], [chatbot, msg])
|
| 610 |
clear.click(lambda: [], outputs=chatbot)
|
| 611 |
|
| 612 |
-
# Dynamic footer based on hardware environment
|
| 613 |
-
footer = f"""
|
| 614 |
-
---
|
| 615 |
-
**ํ์ฌ ํ๊ฒฝ**: {HW_ENV['description']}
|
| 616 |
-
|
| 617 |
-
**์ฐธ๊ณ ์ฌํญ**:
|
| 618 |
-
- ๐ค {TOTAL_MODEL_COUNT}๊ฐ์ง ๋ชจ๋ธ ์ค ์ ํ ๊ฐ๋ฅ
|
| 619 |
-
- ๐ ๋ชจ๋ธ ๋ณ๊ฒฝ ์ ๋ํ ๋ด์ญ ์ด๊ธฐํ
|
| 620 |
-
- โฑ๏ธ ์ฒซ ์๋ต์ ๋ชจ๋ธ ๋ก๋ฉ ์๊ฐ ํฌํจ
|
| 621 |
-
"""
|
| 622 |
-
|
| 623 |
-
# Add environment-specific notes
|
| 624 |
-
if HW_ENV['hardware'] == 'zerogpu':
|
| 625 |
-
footer += """
|
| 626 |
-
- โก ZeroGPU ์๋ GPU ํ ๋น (3-5์ด ์๋ต)
|
| 627 |
-
- ๐ฐ PRO ๊ตฌ๋
์ ํ๋ฃจ 25๋ถ ๋ฌด๋ฃ
|
| 628 |
-
- โฑ๏ธ ์ฒซ ๋ก๋ฉ: ~10-15์ด
|
| 629 |
-
"""
|
| 630 |
-
elif HW_ENV['hardware'] == 'cpu_upgrade':
|
| 631 |
-
footer += """
|
| 632 |
-
- โฐ 24์๊ฐ ๋ฌด์ ํ ์ฌ์ฉ
|
| 633 |
-
- โณ CPU ํ๊ฒฝ (30์ด~1๋ถ ์๋ต)
|
| 634 |
-
- ๐ฐ ์๊ฐ๋น $0.03
|
| 635 |
-
- โฑ๏ธ ์ฒซ ๋ก๋ฉ: ~1-2๋ถ
|
| 636 |
-
"""
|
| 637 |
-
elif HW_ENV['hardware'] == 'cpu_basic':
|
| 638 |
-
footer += """
|
| 639 |
-
- ๐ก ๋ฌด๋ฃ ํฐ์ด (์ ํ์ )
|
| 640 |
-
- โณ CPU ํ๊ฒฝ (1~2๋ถ ์๋ต)
|
| 641 |
-
- ๐ ๊ฒฝ๋ ๋ชจ๋ธ ๊ถ์ฅ
|
| 642 |
-
- โฑ๏ธ ์ฒซ ๋ก๋ฉ: ~2-3๋ถ
|
| 643 |
-
"""
|
| 644 |
-
elif HW_ENV['hardware'] == 'local_gpu':
|
| 645 |
-
footer += f"""
|
| 646 |
-
- ๐ฅ๏ธ GPU ๊ฐ์: {HW_ENV['gpu_name']}
|
| 647 |
-
- โก ๋น ๋ฅธ ์๋ต (5-10์ด)
|
| 648 |
-
- ๐ ๋ฌด์ ํ ์ฌ์ฉ
|
| 649 |
-
- โฑ๏ธ ์ฒซ ๋ก๋ฉ: ~10-20์ด
|
| 650 |
-
"""
|
| 651 |
-
else: # local_cpu
|
| 652 |
-
footer += f"""
|
| 653 |
-
- ๐ป ๋ก์ปฌ CPU ({HW_ENV['cpu_count']} ์ฝ์ด)
|
| 654 |
-
- โณ ๋๋ฆฐ ์๋ต (1~3๋ถ)
|
| 655 |
-
- ๐ ๊ฒฝ๋ ๋ชจ๋ธ ๊ถ์ฅ
|
| 656 |
-
- โฑ๏ธ ์ฒซ ๋ก๋ฉ: ~2-5๋ถ
|
| 657 |
-
"""
|
| 658 |
-
|
| 659 |
-
footer += """
|
| 660 |
-
**ํ
์คํธ ์์**:
|
| 661 |
-
- "์๋
ํ์ธ์"
|
| 662 |
-
- "์ธ๊ณต์ง๋ฅ์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์"
|
| 663 |
-
- "ํ๊ตญ์ ์๋๋ ์ด๋์ธ๊ฐ์?"
|
| 664 |
-
"""
|
| 665 |
-
|
| 666 |
-
gr.Markdown(footer)
|
| 667 |
-
|
| 668 |
if __name__ == "__main__":
|
| 669 |
demo.launch(server_name="0.0.0.0", server_port=7860)
|
|
|
|
| 501 |
**๋ชจ๋ธ ์ ํ**:
|
| 502 |
- ๐ฏ {TOTAL_MODEL_COUNT}๊ฐ์ง ํ๊ธ ์ต์ ํ ๋ชจ๋ธ ({PUBLIC_MODEL_COUNT} Public + {GATED_MODEL_COUNT} Gated)
|
| 503 |
- ๐ ๋ชจ๋ธ ์ ํ ์ ์๋ ์ฌ๋ก๋ฉ (์ฑํ
ํ์คํ ๋ฆฌ ์ด๊ธฐํ)
|
| 504 |
+
- โฑ๏ธ ์ฒซ ์๋ต์ ๋ชจ๋ธ ๋ก๋ฉ ์๊ฐ ํฌํจ
|
| 505 |
+
|
| 506 |
+
**ํ
์คํธ ์์**:
|
| 507 |
+
- "์๋
ํ์ธ์"
|
| 508 |
+
- "์ธ๊ณต์ง๋ฅ์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์"
|
| 509 |
+
- "ํ๊ตญ์ ์๋๋ ์ด๋์ธ๊ฐ์?"
|
| 510 |
"""
|
| 511 |
|
| 512 |
# Add hardware-specific features
|
|
|
|
| 615 |
msg.submit(submit, [msg, chatbot], [chatbot, msg])
|
| 616 |
clear.click(lambda: [], outputs=chatbot)
|
| 617 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 618 |
if __name__ == "__main__":
|
| 619 |
demo.launch(server_name="0.0.0.0", server_port=7860)
|