lily_fast_api / DEPLOYMENT_GUIDE.md
gbrabbit's picture
Fresh start for HF Spaces deployment
526927a
|
raw
history blame
5.21 kB

Lily LLM API - Hugging Face Spaces ๋ฐฐํฌ ๊ฐ€์ด๋“œ

๐Ÿš€ ๋ฐฐํฌ ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ

1. ์‚ฌ์ „ ์ค€๋น„

1.1 Hugging Face ๊ณ„์ • ๋ฐ ํ† ํฐ

  1. Hugging Face ๊ณ„์ • ์ƒ์„ฑ
  2. Settings > Access 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 ์ ‘์†
  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 ๋ฐฉ์‹ (๊ถŒ์žฅ)

# 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์—์„œ ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋“ค ์„ค์ •:

# ์„œ๋ฒ„ ์„ค์ •
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 ํ…Œ์ŠคํŠธ

๋ฐฐํฌ ์™„๋ฃŒ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ…Œ์ŠคํŠธ:

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 ๋ชจ๋ธ ์ตœ์ ํ™”

# 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 ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜

๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์˜ค๋ฅ˜

# requirements.txt์—์„œ ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์ œ๊ฑฐ
# ๋ชจ๋ธ ํฌ๊ธฐ ์ถ•์†Œ ๋˜๋Š” ์–‘์žํ™” ์ ์šฉ

๋นŒ๋“œ ์‹œ๊ฐ„ ์ดˆ๊ณผ

# .dockerignore ํŒŒ์ผ๋กœ ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์ œ์™ธ
# multi-stage build ์‚ฌ์šฉ์œผ๋กœ ๋นŒ๋“œ ์ตœ์ ํ™”

๋ชจ๋“ˆ import ์˜ค๋ฅ˜

# PYTHONPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธ
# requirements.txt ์˜์กด์„ฑ ํ™•์ธ

7.2 ๋กœ๊ทธ ๋ถ„์„

# ๋นŒ๋“œ ๋กœ๊ทธ์—์„œ ์˜ค๋ฅ˜ ์ฐพ๊ธฐ
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 ์—…๋ฐ์ดํŠธ ๋ฐฐํฌ

# ์ฝ”๋“œ ์ˆ˜์ • ํ›„
git add .
git commit -m "Update: description of changes"
git push

9.2 ๋ชจ๋‹ˆํ„ฐ๋ง

  • Space ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋กœ๊ทธ๋ฅผ ํ†ตํ•œ ์˜ค๋ฅ˜ ์ถ”์ 
  • ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ ํ™•์ธ

๐Ÿ“ž ์ง€์›

๋ฐฐํฌ ์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด:

  1. Hugging Face ๊ณต์‹ ๋ฌธ์„œ ์ฐธ์กฐ
  2. Community ํฌ๋Ÿผ์—์„œ ๋„์›€ ์š”์ฒญ
  3. GitHub Issues๋ฅผ ํ†ตํ•œ ๊ธฐ์ˆ  ์ง€์›