lily_fast_api / DEPLOYMENT_GUIDE.md
gbrabbit's picture
Fresh start for HF Spaces deployment
526927a
# Lily LLM API - Hugging Face Spaces ๋ฐฐํฌ ๊ฐ€์ด๋“œ
## ๐Ÿš€ ๋ฐฐํฌ ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ
### 1. ์‚ฌ์ „ ์ค€๋น„
#### 1.1 Hugging Face ๊ณ„์ • ๋ฐ ํ† ํฐ
1. [Hugging Face](https://huggingface.co) ๊ณ„์ • ์ƒ์„ฑ
2. [Settings > Access Tokens](https://huggingface.co/settings/tokens)์—์„œ Write ๊ถŒํ•œ ํ† ํฐ ์ƒ์„ฑ
3. ํ† ํฐ์„ ์•ˆ์ „ํ•œ ๊ณณ์— ์ €์žฅ
#### 1.2 ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค ํ™•์ธ
- `Dockerfile.huggingface` - Docker ์„ค์ •
- `app_huggingface.py` - ์ง„์ž…์ 
- `requirements_full.txt` - ์˜์กด์„ฑ ํŒจํ‚ค์ง€
- `README_huggingface.md` - ํ”„๋กœ์ ํŠธ ์„ค๋ช…
- `.dockerignore` - Docker ๋นŒ๋“œ ์ œ์™ธ ํŒŒ์ผ
### 2. Hugging Face Spaces ์ƒ์„ฑ
#### 2.1 Space ์ƒ์„ฑ
1. [Hugging Face Spaces](https://huggingface.co/spaces) ์ ‘์†
2. "Create new Space" ํด๋ฆญ
3. ๋‹ค์Œ ์„ค์ •์œผ๋กœ Space ์ƒ์„ฑ:
- **Owner**: ๋ณธ์ธ ๊ณ„์ •
- **Space name**: `lily-llm-api`
- **License**: `MIT`
- **Select the Space SDK**: `Docker`
- **Space hardware**: `CPU basic` (๋ฌด๋ฃŒ) ๋˜๋Š” `CPU upgrade` (์œ ๋ฃŒ, ๋” ๋น ๋ฆ„)
- **Visibility**: `Public` ๋˜๋Š” `Private`
#### 2.2 Space ์„ค์ •
Space ์ƒ์„ฑ ํ›„ Settings์—์„œ:
- **Variables**: ํ•„์š”ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
- **Secrets**: API ํ‚ค ๋“ฑ ๋ฏผ๊ฐํ•œ ์ •๋ณด ์„ค์ •
### 3. ์ฝ”๋“œ ๋ฐฐํฌ
#### 3.1 Git ๋ฐฉ์‹ (๊ถŒ์žฅ)
```bash
# 1. Space ์ €์žฅ์†Œ ํด๋ก 
git clone https://huggingface.co/spaces/YOUR_USERNAME/lily-llm-api
cd lily-llm-api
# 2. ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค ๋ณต์‚ฌ
cp /path/to/lily_generate_package/Dockerfile.huggingface ./Dockerfile
cp /path/to/lily_generate_package/app_huggingface.py ./
cp /path/to/lily_generate_package/requirements_full.txt ./requirements.txt
cp /path/to/lily_generate_package/README_huggingface.md ./README.md
cp /path/to/lily_generate_package/.dockerignore ./
# 3. ํ”„๋กœ์ ํŠธ ์†Œ์Šค ์ฝ”๋“œ ๋ณต์‚ฌ
cp -r /path/to/lily_generate_package/lily_llm_api ./
cp -r /path/to/lily_generate_package/lily_llm_core ./
cp -r /path/to/lily_generate_package/lily_llm_utils ./
# 4. Git ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‹œ
git add .
git commit -m "Initial deployment of Lily LLM API"
git push
```
#### 3.2 ์›น ์ธํ„ฐํŽ˜์ด์Šค ๋ฐฉ์‹
1. Hugging Face Space ํŽ˜์ด์ง€์—์„œ "Files" ํƒญ ํด๋ฆญ
2. "Add file" > "Upload files" ํด๋ฆญ
3. ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ์—…๋กœ๋“œ
4. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ํ›„ "Commit changes" ํด๋ฆญ
### 4. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
Space Settings > Variables์—์„œ ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋“ค ์„ค์ •:
```bash
# ์„œ๋ฒ„ ์„ค์ •
HOST=0.0.0.0
PORT=7860
PYTHONPATH=/app
PYTHONUNBUFFERED=1
# ๋ชจ๋ธ ์„ค์ •
DEFAULT_MODEL=kanana-1.5-v-3b-instruct
MAX_NEW_TOKENS=256
TEMPERATURE=0.7
# ์บ์‹œ ์„ค์ •
TRANSFORMERS_CACHE=/app/cache/transformers
HF_HOME=/app/cache/huggingface
TORCH_HOME=/app/cache/torch
TOKENIZERS_PARALLELISM=false
# ์„ฑ๋Šฅ ์ตœ์ ํ™”
OMP_NUM_THREADS=1
MKL_NUM_THREADS=1
```
### 5. ๋ฐฐํฌ ํ™•์ธ
#### 5.1 ๋นŒ๋“œ ๋กœ๊ทธ ํ™•์ธ
1. Space ํŽ˜์ด์ง€์—์„œ "Logs" ํƒญ ํด๋ฆญ
2. Docker ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ ๋กœ๊ทธ ํ™•์ธ
3. ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ ํ•ด๊ฒฐ
#### 5.2 API ํ…Œ์ŠคํŠธ
๋ฐฐํฌ ์™„๋ฃŒ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ…Œ์ŠคํŠธ:
```python
import requests
# Health check
response = requests.get("https://YOUR_USERNAME-lily-llm-api.hf.space/health")
print(response.json())
# ํ…์ŠคํŠธ ์ƒ์„ฑ ํ…Œ์ŠคํŠธ
response = requests.post(
"https://YOUR_USERNAME-lily-llm-api.hf.space/generate",
data={"prompt": "์•ˆ๋…•ํ•˜์„ธ์š”! ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค."}
)
print(response.json())
```
### 6. ์„ฑ๋Šฅ ์ตœ์ ํ™”
#### 6.1 ํ•˜๋“œ์›จ์–ด ์—…๊ทธ๋ ˆ์ด๋“œ
- ๋ฌด๋ฃŒ CPU basic: ์ œํ•œ์  ์„ฑ๋Šฅ
- ์œ ๋ฃŒ CPU upgrade: ๋” ๋น ๋ฅธ ์ฒ˜๋ฆฌ
- GPU ์˜ต์…˜: ๋Œ€์šฉ๋Ÿ‰ ๋ชจ๋ธ ์ฒ˜๋ฆฌ ์‹œ ํ•„์š”
#### 6.2 ๋ชจ๋ธ ์ตœ์ ํ™”
```python
# app_huggingface.py์—์„œ ๋ชจ๋ธ ๋กœ๋”ฉ ์ตœ์ ํ™”
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16, # ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
device_map="auto", # ์ž๋™ ๋””๋ฐ”์ด์Šค ๋ฐฐ์น˜
low_cpu_mem_usage=True # CPU ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”
)
```
### 7. ๋ฌธ์ œ ํ•ด๊ฒฐ
#### 7.1 ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜
**๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์˜ค๋ฅ˜**
```bash
# requirements.txt์—์„œ ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์ œ๊ฑฐ
# ๋ชจ๋ธ ํฌ๊ธฐ ์ถ•์†Œ ๋˜๋Š” ์–‘์žํ™” ์ ์šฉ
```
**๋นŒ๋“œ ์‹œ๊ฐ„ ์ดˆ๊ณผ**
```bash
# .dockerignore ํŒŒ์ผ๋กœ ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์ œ์™ธ
# multi-stage build ์‚ฌ์šฉ์œผ๋กœ ๋นŒ๋“œ ์ตœ์ ํ™”
```
**๋ชจ๋“ˆ import ์˜ค๋ฅ˜**
```bash
# PYTHONPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธ
# requirements.txt ์˜์กด์„ฑ ํ™•์ธ
```
#### 7.2 ๋กœ๊ทธ ๋ถ„์„
```bash
# ๋นŒ๋“œ ๋กœ๊ทธ์—์„œ ์˜ค๋ฅ˜ ์ฐพ๊ธฐ
grep -i error build.log
# ๋Ÿฐํƒ€์ž„ ๋กœ๊ทธ์—์„œ ๋ฌธ์ œ ํ™•์ธ
tail -f app.log
```
### 8. Railway Hearth Chat ์—ฐ๋™ ์ค€๋น„
๋ฐฐํฌ๋œ Hugging Face Space URL์„ ๊ธฐ๋กํ•ด๋‘์„ธ์š”:
```
https://YOUR_USERNAME-lily-llm-api.hf.space
```
์ด URL์„ Hearth Chat์˜ AI ์„ค์ •์—์„œ Lily LLM API URL๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
### 9. ์œ ์ง€๋ณด์ˆ˜
#### 9.1 ์—…๋ฐ์ดํŠธ ๋ฐฐํฌ
```bash
# ์ฝ”๋“œ ์ˆ˜์ • ํ›„
git add .
git commit -m "Update: description of changes"
git push
```
#### 9.2 ๋ชจ๋‹ˆํ„ฐ๋ง
- Space ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง
- ๋กœ๊ทธ๋ฅผ ํ†ตํ•œ ์˜ค๋ฅ˜ ์ถ”์ 
- ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ ํ™•์ธ
---
## ๐Ÿ“ž ์ง€์›
๋ฐฐํฌ ์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด:
1. Hugging Face ๊ณต์‹ ๋ฌธ์„œ ์ฐธ์กฐ
2. Community ํฌ๋Ÿผ์—์„œ ๋„์›€ ์š”์ฒญ
3. GitHub Issues๋ฅผ ํ†ตํ•œ ๊ธฐ์ˆ  ์ง€์›