update: traducción NLLB y compose
This commit is contained in:
parent
8109dbf274
commit
da4c59a0e1
5 changed files with 593 additions and 21 deletions
|
|
@ -1,7 +1,4 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Servicio de la Base de Datos PostgreSQL
|
||||
db:
|
||||
image: postgres:15
|
||||
container_name: rss_db
|
||||
|
|
@ -10,21 +7,21 @@ services:
|
|||
- POSTGRES_USER=${DB_USER}
|
||||
- POSTGRES_PASSWORD=${DB_PASS}
|
||||
volumes:
|
||||
# Volumen para persistir los datos de la base de datos
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
# Monta la carpeta local con los scripts SQL para inicializar la BD la primera vez
|
||||
- ./init-db:/docker-entrypoint-initdb.d
|
||||
restart: always
|
||||
healthcheck:
|
||||
# Comprueba si la base de datos está lista para aceptar conexiones
|
||||
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
# Servicio de la Aplicación Web (Gunicorn)
|
||||
web:
|
||||
build: .
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
# La imagen llevará torch-cu121 por reutilizar Dockerfile; web no usa GPU.
|
||||
TORCH_CUDA: cu121
|
||||
container_name: rss_web
|
||||
command: gunicorn --bind 0.0.0.0:8000 --workers 3 app:app
|
||||
ports:
|
||||
|
|
@ -36,15 +33,17 @@ services:
|
|||
- DB_USER=${DB_USER}
|
||||
- DB_PASS=${DB_PASS}
|
||||
- SECRET_KEY=${SECRET_KEY}
|
||||
# - NEWS_PER_PAGE=20 # opcional
|
||||
depends_on:
|
||||
db:
|
||||
# Espera a que el healthcheck de la base de datos sea exitoso antes de iniciar
|
||||
condition: service_healthy
|
||||
restart: always
|
||||
|
||||
# Servicio del Planificador de Tareas (Scheduler)
|
||||
scheduler:
|
||||
build: .
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
TORCH_CUDA: cu121
|
||||
container_name: rss_scheduler
|
||||
command: python scheduler.py
|
||||
environment:
|
||||
|
|
@ -56,10 +55,69 @@ services:
|
|||
- SECRET_KEY=${SECRET_KEY}
|
||||
depends_on:
|
||||
db:
|
||||
# También espera a que la base de datos esté saludable
|
||||
condition: service_healthy
|
||||
restart: always
|
||||
|
||||
# Define el volumen nombrado para la persistencia de datos
|
||||
translator:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
TORCH_CUDA: cu121 # PyTorch con CUDA 12.1 en la imagen
|
||||
container_name: rss_translator
|
||||
command: python translation_worker.py
|
||||
environment:
|
||||
# --- DB ---
|
||||
- DB_HOST=db
|
||||
- DB_PORT=5432
|
||||
- DB_NAME=${DB_NAME}
|
||||
- DB_USER=${DB_USER}
|
||||
- DB_PASS=${DB_PASS}
|
||||
|
||||
# --- Worker ---
|
||||
- TARGET_LANGS=es
|
||||
- TRANSLATOR_BATCH=4 # 1.3B: más seguro en 12 GB (sube a 4 si ves VRAM libre)
|
||||
- ENQUEUE=200
|
||||
- TRANSLATOR_SLEEP_IDLE=5
|
||||
|
||||
# Tokens (equilibrio calidad/VRAM)
|
||||
- MAX_SRC_TOKENS=512
|
||||
- MAX_NEW_TOKENS=256
|
||||
|
||||
# Beams: mejor título, cuerpo eficiente
|
||||
- NUM_BEAMS_TITLE=3
|
||||
- NUM_BEAMS_BODY=2
|
||||
|
||||
# Modelo NLLB 1.3B
|
||||
- UNIVERSAL_MODEL=facebook/nllb-200-1.3B
|
||||
|
||||
# Dispositivo (forzar GPU si está disponible; el worker cae a CPU si hay OOM)
|
||||
- DEVICE=cuda
|
||||
|
||||
# Rendimiento / estabilidad
|
||||
- PYTHONUNBUFFERED=1
|
||||
- HF_HOME=/root/.cache/huggingface
|
||||
- TOKENIZERS_PARALLELISM=false
|
||||
- PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True,max_split_size_mb:64,garbage_collection_threshold:0.9
|
||||
|
||||
# GPU (requiere NVIDIA Container Toolkit en el host)
|
||||
- NVIDIA_VISIBLE_DEVICES=all
|
||||
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
|
||||
volumes:
|
||||
- hf_cache:/root/.cache/huggingface
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
restart: always
|
||||
# Habilita GPU (Compose v2 + nvidia-container-toolkit)
|
||||
gpus: all
|
||||
# Alternativa con 'deploy':
|
||||
# deploy:
|
||||
# resources:
|
||||
# reservations:
|
||||
# devices:
|
||||
# - capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
hf_cache:
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue