Panduan Penggunaan Docker untuk Hugging Face Model API
Struktur File
your-project/
βββ Dockerfile
βββ docker-compose.yml
βββ requirements.txt
βββ app.py
βββ cache/ # Folder untuk cache model
βββ README.md
Cara Menjalankan
1. Build dan Jalankan dengan Docker Compose
# Clone atau buat direktori project
mkdir gema-model-api
cd gema-model-api
# Copy semua file yang telah dibuat
# Kemudian jalankan:
docker-compose up --build
2. Atau Build Manual
# Build image
docker build -t gema-model-api .
# Run container
docker run -p 8000:8000 -v $(pwd)/cache:/root/.cache/huggingface gema-model-api
Testing API
1. Health Check
curl http://localhost:8000/health
2. Generate Text
curl -X POST "http://localhost:8000/generate" \
-H "Content-Type: application/json" \
-d '{
"inputs": "Apa kabar dunia teknologi hari ini?"
}'
3. Generate dengan Parameter Custom
curl -X POST "http://localhost:8000/generate" \
-H "Content-Type: application/json" \
-d '{
"inputs": "Jelaskan tentang kecerdasan buatan",
"max_length": 200,
"temperature": 0.8,
"top_p": 0.95
}'
Mengakses dari Aplikasi Lain
Python
import requests
url = "http://localhost:8000/generate"
data = {
"inputs": "CONTOH INPUT USER"
}
response = requests.post(url, json=data)
result = response.json()
print(result["generated_text"])
JavaScript/Node.js
const response = await fetch('http://localhost:8000/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
inputs: 'CONTOH INPUT USER'
})
});
const result = await response.json();
console.log(result.generated_text);
Dokumentasi API
Setelah menjalankan container, buka browser dan akses:
- API Docs:
http://localhost:8000/docs
- ReDoc:
http://localhost:8000/redoc
Tips Optimasi
1. Untuk GPU Support
Jika Anda memiliki GPU NVIDIA, update app.py
:
# Ubah gpu_layers dari 0 ke jumlah yang sesuai
gpu_layers=50 # Atau sesuai kemampuan GPU Anda
Dan update docker-compose.yml
:
services:
gema-model-api:
# ... konfigurasi lainnya
runtime: nvidia # Untuk GPU support
environment:
- NVIDIA_VISIBLE_DEVICES=all
2. Untuk Production
- Gunakan reverse proxy (nginx)
- Implement authentication
- Add rate limiting
- Set up monitoring dan logging
- Use environment variables untuk konfigurasi
3. Memory Management
Model ini memerlukan RAM yang cukup. Sesuaikan memory limits di docker-compose.yml berdasarkan spesifikasi server Anda.
Troubleshooting
Model Loading Issues
- Pastikan koneksi internet stabil saat pertama kali menjalankan
- Model akan diunduh otomatis dan disimpan di cache
- Jika gagal, coba hapus folder cache dan jalankan ulang
Memory Issues
- Kurangi
context_length
di app.py - Sesuaikan memory limits di docker-compose.yml
- Gunakan swap file jika diperlukan
Port Conflicts
- Ubah port di docker-compose.yml jika port 8000 sudah digunakan
- Contoh:
"8080:8000"
untuk menggunakan port 8080