SKILL.md
torchserve
Configura y despliega TorchServe como servidor de modelos PyTorch para servir los modelos de liveness detection (MiniFASNet), face recognition (ArcFace) y anti-spoofing del pipeline KYC. Proporciona batching dinámico, versionado de modelos y métricas de rendimiento integradas para monitoreo en producción.
When to use
Usa esta skill cuando necesites desplegar o configurar el servidor de inferencia PyTorch dentro del modelserveragent. Aplica cuando se requiera servir modelos ML del pipeline de verificación facial con soporte para batching, múltiples versiones simultáneas y endpoints de métricas.
Instructions
- Instalar TorchServe y sus dependencias:
``bash pip install torchserve torch-model-archiver torch-workflow-archiver ``
- Empaquetar cada modelo como un MAR (Model Archive) usando
torch-model-archiver:
``bash torch-model-archiver --model-name arcface \ --version 1.0 \ --model-file models/arcface.py \ --serialized-file weights/arcfacer100.pth \ --handler handlers/facerecognitionhandler.py \ --export-path modelstore/ ``
- Configurar el archivo
config.propertiescon batching dinámico, número de workers y puertos:
``properties inferenceaddress=http://0.0.0.0:8080 managementaddress=http://0.0.0.0:8081 metricsaddress=http://0.0.0.0:8082 jobqueuesize=100 batchsize=8 maxbatchdelay=200 defaultworkersper_model=2 ``
- Crear handlers personalizados para cada tipo de modelo (liveness, face_match, anti-spoofing) que implementen
initialize(),preprocess(),inference()ypostprocess().
- Iniciar TorchServe con el model store y la configuración:
``bash torchserve --start --model-store model_store/ \ --ts-config config.properties \ --models arcface=arcface.mar liveness=minifasnet.mar ``
- Registrar nuevas versiones de modelos en caliente mediante la Management API:
``bash curl -X POST "http://localhost:8081/models?url=arcfacev2.mar&modelname=arcface&initial_workers=2" ``
- Configurar métricas de Prometheus para monitorear latencia de inferencia, throughput y errores por modelo:
``properties metricsmode=prometheus metricsformat=prometheus ``
- Implementar health checks en el endpoint
/pingy validar que todos los modelos estén cargados antes de aceptar tráfico de verificación.
Notes
- El batching dinámico es crítico para optimizar el throughput cuando múltiples verificaciones KYC llegan simultáneamente; ajustar
batchsizeymaxbatch_delaysegún la carga esperada. - Cada modelo debe tener su propio handler para manejar correctamente el preprocesamiento específico (normalización facial, resize de documentos, etc.).
- Monitorear el uso de memoria GPU constantemente ya que cargar múltiples modelos (ArcFace + MiniFASNet + anti-spoofing) puede exceder la VRAM disponible.