deepx-embedding-v09 / DEPLOY_GUIDE.md
tungns2408's picture
Upload DEPLOY_GUIDE.md with huggingface_hub
1c1eefa verified
|
Raw
History Blame Contribute Delete
3.9 kB
# DeepX v0.9 — Deployment Guide
## Package Deploy
Tất cả nằm trong 1 folder `deploy/`, không cần download thêm gì:
```
deploy/
├── deepx_v09.pt # Model weights (1.7GB, float16)
├── tokenizer/ # Gemma tokenizer (~4MB)
│ ├── tokenizer.model
│ ├── tokenizer_config.json
│ └── special_tokens_map.json
├── config.py # Model config
├── modeling/ # Model code
│ ├── __init__.py
│ ├── pipeline.py
│ ├── gdn2_attention.py
│ └── hyperloop.py
└── serve_embedding.py # Server script
```
---
## Setup Server (RTX 3060 Ti 12GB)
```bash
# 1. Install dependencies
pip install torch>=2.0 transformers flask numpy
pip install triton fla # FLA kernel (compile JIT lần đầu, mất ~10s)
# 2. Start server
python serve_embedding.py \
--checkpoint deepx_v09.pt \
--tokenizer tokenizer/ \
--port 8080
# Server ready tại http://localhost:8080
```
Lần chạy đầu tiên Triton sẽ compile kernel (~10s). Sau đó cache lại, fast.
---
## API
### Embed texts
```bash
curl -X POST http://localhost:8080/embed \
-H "Content-Type: application/json" \
-d '{"texts": ["Mức phạt khi vượt đèn đỏ?", "Thủ tục đăng ký kinh doanh"], "normalize": true}'
```
Response:
```json
{
"embeddings": [[0.012, -0.034, ...], [0.045, 0.021, ...]],
"dim": 1536,
"count": 2,
"time_ms": 45.2
}
```
### Similarity search
```bash
curl -X POST http://localhost:8080/similarity \
-H "Content-Type: application/json" \
-d '{"query": "Mức phạt khi vượt đèn đỏ?", "documents": ["Điều 5. Phạt tiền...", "Điều 7. Quy định..."]}'
```
Response:
```json
{
"scores": [0.85, 0.42],
"time_ms": 52.1
}
```
### Health check
```bash
curl http://localhost:8080/health
```
---
## Python Client
```python
import requests
SERVER = "http://localhost:8080"
def embed(texts):
r = requests.post(f"{SERVER}/embed", json={"texts": texts})
return r.json()["embeddings"]
def search(query, documents):
r = requests.post(f"{SERVER}/similarity", json={
"query": query, "documents": documents
})
return r.json()["scores"]
# Sử dụng
embeddings = embed(["Mức phạt vượt đèn đỏ?"])
scores = search("Thủ tục đăng ký?", ["Doc 1...", "Doc 2..."])
```
---
## Hardware Requirements
| Component | Minimum | Recommended |
|---|---|---|
| GPU | RTX 3060 12GB | RTX 3060 Ti 12GB+ |
| RAM | 16GB | 32GB |
| Disk | 3GB | 5GB |
| CUDA | 11.8+ | 12.0+ |
| Python | 3.10+ | 3.11+ |
### VRAM Usage
- Model load: ~3.5GB
- Inference (batch=1, seq=2048): ~1.5GB
- Total peak: ~5GB → fits 12GB comfortably
---
## Performance (RTX 3060 Ti, float16)
| Seq Length | Batch=1 | Batch=8 | Batch=32 |
|---|---|---|---|
| 128 tokens | ~20ms | ~80ms | ~280ms |
| 512 tokens | ~50ms | ~200ms | ~700ms |
| 2048 tokens | ~150ms | ~600ms | ~2000ms |
Throughput: ~30-150 docs/sec depending on length.
---
## Model Info
| Property | Value |
|---|---|
| Architecture | GDN-2 (Gated DeltaNet-2) + Hyperloop |
| Total params | 889M |
| Embedding dim | 1536 |
| Max sequence | 2048 tokens (training) |
| Attention | O(n) linear (FLA Triton kernel) |
| Zalo Legal nDCG@10 | 0.7449 |
| Version | 0.9 |
---
## Troubleshooting
| Issue | Fix |
|---|---|
| CUDA OOM | Giảm batch: sửa MAX_BATCH=16 trong serve_embedding.py |
| Slow first request | Bình thường — Triton compile kernel lần đầu |
| `fla` import error | `pip install fla` hoặc `pip install flash-linear-attention` |
| Triton error | Đảm bảo CUDA toolkit cùng version với PyTorch |
---
*Version: 0.9 | Date: 2026-07-09*