Key Takeaways
- ν€λλ¦¬μ€ = μ±ν UI μμ΄ APIλ§. Ollama, vLLM, LM Studio λͺ¨λ ν€λ리μ€λ‘ μ€ν κ°λ₯ν©λλ€.
- Ollama ν€λ리μ€: `ollama serve`λ‘ localhost:11434μμ APIλ₯Ό μμν©λλ€. UI μμ.
- vLLM ν€λ리μ€: `vllm serve`λ‘ ν¬νΈ 8000μμ APIλ₯Ό μμν©λλ€. Ollamaλ³΄λ€ μ²λ¦¬λμ΄ μ°μν©λλ€.
- νλ‘λμ : μ²λ¦¬λμλ vLLM, λ¨μμ±μλ Ollama, λ‘λ λ°Έλ°μ± λ° λ³΄μμλ nginxλ₯Ό μ¬μ©νμμμ€.
- 2026λ 4μ κΈ°μ€μΌλ‘, vLLMμ κ³ μ²λ¦¬λ μλΉμ€μ νλ‘λμ νμ€μ λλ€.
ν€λ리μ€λ 무μμ λκΉ?
ν€λ리μ€λ μννΈμ¨μ΄κ° κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€ μμ΄ μλΉμ€λ‘ μ€νλλ κ²μ μλ―Έν©λλ€. λ²νΌμ ν΄λ¦νλ λμ API νΈμΆ(REST, gRPC)μ ν΅ν΄ μνΈμμ©ν©λλ€.
μ₯μ : λ κ°λ²Όμ΄ 리μμ€ μ¬μ©(UI μ€λ²ν€λ μμ), μλνκ° μ©μ΄ν¨, μλ²μ μ ν©ν¨, νμ₯μ΄ λ μ¬μ.
λ¨μ : μκ°μ νΌλλ°± μμ, API μ§μ νμ, λ‘κ·Έ μμ΄ λλ²κΉ μ΄ μ΄λ €μ.
Ollamaλ₯Ό ν€λ리μ€λ‘ μ€ννλ λ°©λ²μ?
Ollamaλ μμ API μλΉμ€λ‘ μ€νν μ μμ΅λλ€:
# Run Ollama headless
ollama serve
# This starts the API at http://localhost:11434/v1
# No chat UI, just a background service
# Use the API from Python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
response = client.chat.completions.create(
model="llama3.2:3b",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
# Or from curl
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{{"model": "llama3.2:3b", "messages": [{{"role": "user", "content": "Hello"}}]}}'vLLMμ ν€λ리μ€λ‘ μ€ννλ λ°©λ²μ?
vLLMμ ν€λ리μ€, κ³ μ²λ¦¬λ λ°°ν¬μ μ΅μ νλμ΄ μμ΅λλ€:
# Install vLLM
pip install vllm
# Run headless with API
vllm serve llama-3.1-8b-instruct \
--host 0.0.0.0 \
--port 8000 \
--gpu-memory-utilization 0.9
# Access at http://localhost:8000/v1
# Supports 50+ concurrent requests
# Use from Python (same as Ollama)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="anything")
response = client.chat.completions.create(
model="meta-llama/Llama-2-7b-chat-hf",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)νλ‘λμ λ°°ν¬ λ°©λ²μ?
1. κ³ μ²λ¦¬λ(λμ μ¬μ©μ 50λͺ μ΄μ)μλ vLLMμ μ¬μ©νμμμ€.
2. λ¨μμ±(λ¨μΌ μ¬μ©μ λλ μκ·λͺ¨ ν)μλ Ollamaλ₯Ό μ¬μ©νμμμ€.
3. λ‘λ λ°Έλ°μ± λ° μΈμ¦μ μν΄ nginx μλ°©ν₯ νλ‘μλ₯Ό μΆκ°νμμμ€.
4. GPU λ©λͺ¨λ¦¬λ₯Ό λͺ¨λν°λ§νμμμ€ -- λͺ¨λΈμ΄ VRAMμ 80%λ₯Ό μ΄κ³Όνμ§ μμμΌ ν©λλ€.
5. λ‘κΉ μ μ€μ νμμμ€ -- μ€λ₯ λ° μ±λ₯μ μΆμ νμμμ€.
6. μλΉμ€ κ΄λ¦¬μλ systemd λλ Dockerλ₯Ό μ¬μ©νμμμ€(μΆ©λ μ μλ μ¬μμ).
# Example: Deploy vLLM on a server via Docker
docker run --gpus all -p 8000:8000 \
--env VLLM_API_KEY="your-secret-key" \
vllm/vllm-openai:latest \
--model meta-llama/Llama-2-13b-chat-hf \
--tensor-parallel-size 2 # Use 2 GPUs
# Nginx reverse proxy config (optional)
# server {
# listen 80;
# location / {
# proxy_pass http://localhost:8000;
# proxy_set_header Authorization "Bearer $http_authorization";
# }
# }ν€λλ¦¬μ€ λ°°ν¬λ₯Ό λͺ¨λν°λ§νλ λ°©λ²μ?
GPU λ©λͺ¨λ¦¬, μμ² μ§μ° μκ°, μ€λ₯μ¨μ λͺ¨λν°λ§νμμμ€:
# Monitor GPU usage (nvidia-smi)
watch nvidia-smi # Updates every 2 seconds
# Monitor request latency
# Add logging to your client code
import time
start = time.time()
response = client.chat.completions.create(...)
latency = time.time() - start
print(f"Request took {latency:.2f} seconds")
# Monitor vLLM logs
docker logs -f <container_id>
# Check error rates
# Parse logs for errors or use a monitoring tool (Prometheus + Grafana)ν€λλ¦¬μ€ λ°°ν¬μ νν μ€μ
- VRAMμ λͺ¨λν°λ§νμ§ μμ. λͺ¨λΈμ΄ μ‘°μ©ν λ©λͺ¨λ¦¬λ₯Ό μμ§ν μ μμ΅λλ€. νλ‘λμ μ λ°°ν¬νκΈ° μ μ GPUλ₯Ό λͺ¨λν°λ§νμμμ€.
- μΈμ¦ μμ΄ API λ ΈμΆ. ν€λλ¦¬μ€ μλΉμ€λ μ’ μ’ λ€νΈμν¬μ λ ΈμΆλ©λλ€. νμ μΈμ¦(API ν€, λ°©νλ²½)μ μΆκ°νμμμ€.
- 리μμ€ μ ν λ―Έμ€μ . λͺ¨λΈμ΄ GPUλ₯Ό 100% μ¬μ©νμ¬ λ€λ₯Έ μμ μ μ°¨λ¨ν μ μμ΅λλ€. vLLMμμ `--gpu-memory-utilization`μ μ¬μ©νμμμ€.
- Ollamaκ° 100λͺ μ΄μμ μ¬μ©μλ₯Ό μ²λ¦¬ν κ²μΌλ‘ κΈ°λν¨. λμ λμμ±μλ vLLMμ μ¬μ©νμμμ€. Ollamaλ μμμ λμ μ¬μ©μλ§ μ²λ¦¬ν μ μμ΅λλ€.
- μ₯μ μ‘°μΉ ν μ€νΈ λ―Έμ€μ. λͺ¨λΈ μλ²κ° μΆ©λνλ©΄ μμ²μ΄ μ€λ¨λ©λλ€. λ‘λ λ°Έλ°μμ μν κ²μ¬λ₯Ό μ¬μ©νμμμ€.
ν€λλ¦¬μ€ λ°°ν¬μ λν μμ£Ό 묻λ μ§λ¬Έ
Ollamaμ vLLMμ΄ λμΌν GPUμμ μ€νλ μ μμ΅λκΉ?
λμμλ μ€νν μ μμ΅λλ€. λ λκ΅¬κ° VRAMμ λκ³ κ²½μν©λλ€. νλλ§ μ€ννκ±°λ μ¬λ¬ GPUλ₯Ό μ¬μ©νμμμ€.
APIλ₯Ό μΈν°λ·μ λ ΈμΆνλ κ²μ΄ μμ ν©λκΉ?
μΈμ¦ μμ΄λ μμ νμ§ μμ΅λλ€. νμ API ν€, λ°©νλ²½, λλ μλ°©ν₯ νλ‘μλ₯Ό μμ λ°°μΉνμμμ€. localhost:11434λ₯Ό μ§μ λ ΈμΆνμ§ λ§μμμ€.
Ollamaλ λͺ λͺ μ λμ μ¬μ©μλ₯Ό μ²λ¦¬ν μ μμ΅λκΉ?
νμ μμ΄ μΌλ°μ μΌλ‘ 1-3λͺ μ λλ€. λ λ§μ μ¬μ©μλ₯Ό μν΄μλ vLLMμ μ¬μ©νκ±°λ μμ² νμμ μΆκ°νμμμ€.
Ollamaμ vLLMμ μ±λ₯ μ°¨μ΄λ 무μμ λκΉ?
λ¨μΌ μμ²: μ μ¬ν μλ. μ¬λ¬ λμ μμ²: vLLMμ΄ μμ²μ μΌκ΄ μ²λ¦¬νκΈ° λλ¬Έμ 5-10λ°° λ μ°μν©λλ€.
μΆμ²
- Ollama GitHub -- github.com/ollama/ollama
- vLLM GitHub -- github.com/vllm-project/vllm
- vLLM λ°°ν¬ κ°μ΄λ -- docs.vllm.ai/en/serving/deploying_with_docker.html
- Ollama API λ¬Έμ -- github.com/ollama/ollama/blob/main/docs/api.md