Ultralytics YOLO27:

Buenas prácticas para el despliegue de modelos#

Introducción#

El despliegue de modelos es el paso de un proyecto de visión por ordenador que lleva un modelo de la fase de desarrollo a una aplicación del mundo real. Existen varias opciones de despliegue de modelos: el despliegue en la nube ofrece escalabilidad y facilidad de acceso, el despliegue en el edge reduce la latencia al acercar el modelo a la fuente de datos y el despliegue local garantiza la privacidad y el control. Elegir la estrategia adecuada depende de las necesidades de tu aplicación, equilibrando velocidad, seguridad y escalabilidad.



Watch: How to Optimize and Deploy AI Models: Best Practices, Troubleshooting, and Security Considerations

También es importante seguir buenas prácticas al desplegar un modelo, porque el despliegue puede afectar significativamente a la eficacia y fiabilidad del rendimiento del modelo. En esta guía, nos centraremos en cómo garantizar que el despliegue de tu modelo sea fluido, eficiente y seguro.

Opciones de despliegue de modelos#

A menudo, una vez que un modelo se ha entrenado, evaluado y probado, es necesario convertirlo a formatos específicos para desplegarlo eficazmente en distintos entornos, como la nube, el edge o dispositivos locales.

Con YOLO26, puedes exportar tu modelo a varios formatos según tus necesidades de despliegue. Por ejemplo, exportar YOLO26 a ONNX es sencillo e ideal para transferir modelos entre frameworks. Para explorar más opciones de integración y garantizar un despliegue fluido en distintos entornos, visita nuestro catálogo de integración de modelos.

Elegir un entorno de despliegue#

Elegir dónde desplegar tu modelo de visión por ordenador depende de varios factores. Cada entorno ofrece ventajas y desafíos únicos, por lo que es fundamental elegir el que mejor se adapte a tus necesidades.

Despliegue en la nube#

El despliegue en la nube es ideal para aplicaciones que necesitan escalar rápidamente y gestionar grandes volúmenes de datos. Plataformas como AWS, Google Cloud y Azure facilitan la gestión de tus modelos desde el entrenamiento hasta el despliegue. Ofrecen servicios como AWS SageMaker, Google AI Platform y Azure Machine Learning para ayudarte durante todo el proceso.

Sin embargo, usar la nube puede resultar caro, especialmente con un uso elevado de datos, y podrías sufrir problemas de latencia si tus usuarios están lejos de los centros de datos. Para gestionar los costes y el rendimiento, es importante optimizar el uso de los recursos y garantizar el cumplimiento de las normas de privacidad de los datos.

Despliegue en el edge#

El despliegue en el edge funciona bien para aplicaciones que necesitan respuestas en tiempo real y baja latencia, especialmente en lugares con acceso a Internet limitado o inexistente. Desplegar modelos en dispositivos edge, como smartphones o dispositivos IoT, garantiza un procesamiento rápido y mantiene los datos localmente, lo que mejora la privacidad. El despliegue en el edge también ahorra ancho de banda al reducir la cantidad de datos enviados a la nube.

Sin embargo, los dispositivos edge suelen tener una capacidad de procesamiento limitada, por lo que tendrás que optimizar tus modelos. Herramientas como LiteRT y NVIDIA Jetson pueden ayudarte. A pesar de sus ventajas, mantener y actualizar muchos dispositivos puede ser complicado.

Despliegue local#

El despliegue local es la mejor opción cuando la privacidad de los datos es crítica o cuando el acceso a Internet es poco fiable o inexistente. Ejecutar modelos en servidores locales o equipos de escritorio te proporciona un control total y mantiene tus datos seguros. También puede reducir la latencia si el servidor está cerca del usuario.

Sin embargo, escalar localmente puede ser difícil y el mantenimiento puede llevar mucho tiempo. Usar herramientas como Docker para la contenerización y Kubernetes para la gestión puede ayudar a hacer más eficientes los despliegues locales. Son necesarias actualizaciones y tareas de mantenimiento periódicas para que todo funcione correctamente.

Contenerización para agilizar el despliegue#

La contenerización es un enfoque potente que empaqueta tu modelo y todas sus dependencias en una unidad estandarizada llamada contenedor. Esta técnica garantiza un rendimiento uniforme en distintos entornos y simplifica el proceso de despliegue.

Ventajas de usar Docker para el despliegue de modelos#

Docker se ha convertido en el estándar del sector para la contenerización en despliegues de machine learning por varios motivos:

  • Coherencia del entorno: los contenedores de Docker encapsulan tu modelo y todas sus dependencias, eliminando el problema de «en mi máquina funciona» al garantizar un comportamiento uniforme en los entornos de desarrollo, pruebas y producción.
  • Aislamiento: los contenedores aíslan las aplicaciones entre sí y evitan conflictos entre distintas versiones de software o bibliotecas.
  • Portabilidad: los contenedores de Docker pueden ejecutarse en cualquier sistema compatible con Docker, lo que facilita desplegar tus modelos en distintas plataformas sin modificaciones.
  • Escalabilidad: los contenedores se pueden escalar fácilmente en función de la demanda, y las herramientas de orquestación como Kubernetes pueden automatizar este proceso.
  • Control de versiones: las imágenes de Docker pueden versionarse, lo que permite realizar un seguimiento de los cambios y volver a versiones anteriores cuando sea necesario.

Implementar Docker para el despliegue de YOLO26#

Para contenerizar tu modelo YOLO26, puedes crear un Dockerfile que especifique todas las dependencias y configuraciones necesarias. Este es un ejemplo básico:

FROM ultralytics/ultralytics:latest

WORKDIR /app

# Copy your model and any additional files
COPY ./models/yolo26n.pt /app/models/
COPY ./scripts /app/scripts/

# Set up any environment variables
ENV MODEL_PATH=/app/models/yolo26n.pt

# Command to run when the container starts
CMD ["python", "/app/scripts/predict.py"]

Este enfoque garantiza que el despliegue de tu modelo sea reproducible y uniforme en los entornos de desarrollo, pruebas y producción.

Técnicas de optimización de modelos#

Optimizar tu modelo de visión por ordenador ayuda a que se ejecute de forma eficiente, especialmente al desplegarlo en entornos con recursos limitados, como los dispositivos edge. Estas son algunas técnicas clave para optimizar tu modelo.

Poda de modelos#

La poda reduce el tamaño del modelo eliminando los pesos que contribuyen poco al resultado final. Hace que el modelo sea más pequeño y rápido sin afectar significativamente a la precisión. La poda consiste en identificar y eliminar parámetros innecesarios, lo que da como resultado un modelo más ligero que requiere menos potencia de cálculo. Es especialmente útil para desplegar modelos en dispositivos con recursos limitados.

Neural network pruning workflow

Cuantización de modelos#

La cuantización convierte los pesos y las activaciones del modelo de una precisión alta (como los floats de 32 bits) a una precisión inferior (como los enteros de 8 bits). Al reducir el tamaño del modelo, acelera la inferencia. El entrenamiento consciente de la cuantización (QAT) es un método en el que el modelo se entrena teniendo en cuenta la cuantización, preservando mejor la precisión que la cuantización posterior al entrenamiento. Al gestionar la cuantización durante la fase de entrenamiento, el modelo aprende a adaptarse a una precisión inferior, manteniendo el rendimiento y reduciendo las exigencias computacionales.

Optimized model efficiency for deployment

Destilación de conocimiento#

La destilación de conocimiento consiste en entrenar un modelo más pequeño y sencillo (el estudiante) para que imite las salidas de un modelo más grande y complejo (el profesor). El modelo estudiante aprende a aproximar las predicciones del profesor, lo que da como resultado un modelo compacto que conserva gran parte de la precisión del profesor. Esta técnica resulta útil para crear modelos eficientes adecuados para desplegarse en dispositivos edge con recursos limitados.

Knowledge distillation training process

Resolución de problemas de despliegue#

Puedes encontrarte con dificultades al desplegar tus modelos de visión por ordenador, pero comprender los problemas y las soluciones habituales puede hacer que el proceso sea más fluido. Estos son algunos consejos generales y buenas prácticas de resolución de problemas que te ayudarán a abordar las incidencias de despliegue.

Tu modelo es menos preciso después del despliegue#

Experimentar una disminución de la precisión de tu modelo después del despliegue puede resultar frustrante. Este problema puede deberse a varios factores. Estos son algunos pasos que te ayudarán a identificar y resolver el problema:

  • Comprueba la coherencia de los datos: asegúrate de que los datos que procesa tu modelo después del despliegue son coherentes con los datos con los que se entrenó. Las diferencias en la distribución, la calidad o el formato de los datos pueden afectar significativamente al rendimiento.
  • Valida los pasos de preprocesamiento: verifica que todos los pasos de preprocesamiento aplicados durante el entrenamiento también se aplican de forma coherente durante el despliegue. Esto incluye cambiar el tamaño de las imágenes, normalizar los valores de píxel y realizar otras transformaciones de datos.
  • Evalúa el entorno del modelo: asegúrate de que las configuraciones de hardware y software utilizadas durante el despliegue coinciden con las empleadas durante el entrenamiento. Las diferencias en bibliotecas, versiones y capacidades del hardware pueden introducir discrepancias.
  • Supervisa la inferencia del modelo: registra las entradas y salidas en distintas fases de la canalización de inferencia para detectar anomalías. Esto puede ayudar a identificar problemas como la corrupción de datos o un tratamiento incorrecto de las salidas del modelo.
  • Revisa la exportación y conversión del modelo: vuelve a exportar el modelo y asegúrate de que el proceso de conversión mantiene la integridad de los pesos y la arquitectura del modelo.
  • Prueba con un conjunto de datos controlado: despliega el modelo en un entorno de pruebas con un conjunto de datos que controles y compara los resultados con los de la fase de entrenamiento. Así podrás identificar si el problema está en el entorno de despliegue o en los datos.

Al desplegar YOLO26, varios factores pueden afectar a la precisión del modelo. Convertir modelos a formatos como TensorRT implica optimizaciones como la cuantización de pesos y la fusión de capas, que pueden causar pequeñas pérdidas de precisión. Usar FP16 (precisión media) en lugar de FP32 (precisión completa) puede acelerar la inferencia, pero también introducir errores de precisión numérica. Además, las limitaciones del hardware, como las del Jetson Nano, que cuenta con menos núcleos CUDA y un ancho de banda de memoria reducido, pueden afectar al rendimiento.

Las inferencias tardan más de lo esperado#

Al desplegar modelos de machine learning, es importante que se ejecuten de forma eficiente. Si las inferencias tardan más de lo esperado, esto puede afectar a la experiencia del usuario y a la eficacia de tu aplicación. Estos son algunos pasos que te ayudarán a identificar y resolver el problema:

  • Implementa ejecuciones de calentamiento: las ejecuciones iniciales suelen incluir sobrecostes de configuración que pueden distorsionar las mediciones de latencia. Realiza varias inferencias de calentamiento antes de medir la latencia. Excluir estas ejecuciones iniciales proporciona una medición más precisa del rendimiento del modelo.
  • Optimiza el motor de inferencia: comprueba que el motor de inferencia esté completamente optimizado para la arquitectura específica de tu GPU. Usa los controladores y las versiones de software más recientes adaptados a tu hardware para garantizar el máximo rendimiento y compatibilidad.
  • Usa procesamiento asíncrono: el procesamiento asíncrono puede ayudar a gestionar las cargas de trabajo de forma más eficiente. Utiliza técnicas de procesamiento asíncrono para gestionar varias inferencias simultáneamente, lo que puede ayudar a distribuir la carga y reducir los tiempos de espera.
  • Perfila la canalización de inferencia: identificar los cuellos de botella de la canalización de inferencia puede ayudar a localizar el origen de los retrasos. Usa herramientas de perfilado para analizar cada paso del proceso de inferencia e identificar y solucionar las fases que causen retrasos significativos, como capas ineficientes o problemas de transferencia de datos.
  • Usa una precisión adecuada: utilizar una precisión superior a la necesaria puede ralentizar los tiempos de inferencia. Experimenta con una precisión inferior, como FP16 (precisión media), en lugar de FP32 (precisión completa). Aunque FP16 puede reducir el tiempo de inferencia, ten en cuenta también que puede afectar a la precisión del modelo.

Si te encuentras con este problema al desplegar YOLO26, ten en cuenta que YOLO26 ofrece varios tamaños de modelo, como YOLO26n (nano) para dispositivos con menor capacidad de memoria y YOLO26x (extra grande) para GPU más potentes. Elegir la variante de modelo adecuada para tu hardware puede ayudar a equilibrar el uso de memoria y el tiempo de procesamiento.

Ten en cuenta también que el tamaño de las imágenes de entrada afecta directamente al uso de memoria y al tiempo de procesamiento. Las resoluciones más bajas reducen el uso de memoria y aceleran la inferencia, mientras que las resoluciones más altas mejoran la precisión, pero requieren más memoria y potencia de cálculo.

Consideraciones de seguridad en el despliegue de modelos#

Otro aspecto importante del despliegue es la seguridad. La seguridad de tus modelos desplegados es fundamental para proteger los datos confidenciales y la propiedad intelectual. Estas son algunas buenas prácticas que puedes seguir para realizar un despliegue seguro de modelos.

Transmisión segura de datos#

Asegurarte de que los datos enviados entre clientes y servidores sean seguros es muy importante para evitar que sean interceptados o consultados por terceros no autorizados. Puedes usar protocolos de cifrado como TLS (Seguridad de la capa de transporte) para cifrar los datos durante su transmisión. Aunque alguien intercepte los datos, no podrá leerlos. También puedes usar cifrado de extremo a extremo, que protege los datos desde el origen hasta el destino para que nadie intermedio pueda acceder a ellos.

Controles de acceso#

Es fundamental controlar quién puede acceder a tu modelo y a sus datos para evitar usos no autorizados. Usa métodos de autenticación sólidos para verificar la identidad de los usuarios o sistemas que intenten acceder al modelo y considera añadir una capa de seguridad adicional con la autenticación multifactor (MFA). Configura un control de acceso basado en roles (RBAC) para asignar permisos según las funciones de los usuarios, de modo que cada persona solo tenga acceso a lo que necesita. Mantén registros de auditoría detallados para realizar un seguimiento de todos los accesos y cambios en el modelo y sus datos, y revisa estos registros periódicamente para detectar actividades sospechosas.

Ofuscación de modelos#

Puedes proteger tu modelo frente a la ingeniería inversa o el uso indebido mediante la ofuscación de modelos. Esta técnica consiste en cifrar los parámetros del modelo, como los pesos y sesgos de las redes neuronales, para dificultar que personas no autorizadas comprendan o modifiquen el modelo. También puedes ofuscar la arquitectura del modelo cambiando el nombre de las capas y los parámetros o añadiendo capas ficticias, lo que dificulta la ingeniería inversa. Además, servir el modelo en un entorno seguro, como un enclave seguro o un entorno de ejecución de confianza (TEE), puede proporcionar una capa de protección adicional durante la inferencia.

Conclusión y próximos pasos#

Hemos repasado algunas buenas prácticas que debes seguir al desplegar modelos de visión por ordenador. Al proteger los datos, controlar el acceso y ofuscar los detalles del modelo, puedes proteger la información confidencial y mantener tus modelos en funcionamiento sin problemas. También hemos explicado cómo abordar problemas habituales, como la reducción de la precisión y las inferencias lentas, mediante estrategias como las ejecuciones de calentamiento, la optimización de motores, el procesamiento asíncrono, el perfilado de canalizaciones y la elección de la precisión adecuada.

Después de desplegar tu modelo, el siguiente paso es supervisar, mantener y documentar tu aplicación. La supervisión periódica ayuda a detectar y solucionar rápidamente los problemas, el mantenimiento mantiene tus modelos actualizados y operativos, y una buena documentación registra todos los cambios y actualizaciones. Estos pasos te ayudarán a alcanzar los objetivos de tu proyecto de visión por ordenador.

Preguntas frecuentes#

  • Desplegar un modelo de machine learning, especialmente con Ultralytics YOLO26, implica seguir varias buenas prácticas para garantizar la eficiencia y la fiabilidad. Primero, elige el entorno de despliegue que se ajuste a tus necesidades: nube, edge o local. Optimiza tu modelo mediante técnicas como la poda, la cuantización y la destilación de conocimiento para desplegarlo eficazmente en entornos con recursos limitados. Considera usar la contenerización con Docker para garantizar la coherencia entre distintos entornos. Por último, asegúrate de que la coherencia de los datos y los pasos de preprocesamiento coincidan con la fase de entrenamiento para mantener el rendimiento. También puedes consultar las opciones de despliegue de modelos para obtener directrices más detalladas.

  • La resolución de problemas de despliegue se puede dividir en varios pasos clave. Si la precisión de tu modelo disminuye después del despliegue, comprueba la coherencia de los datos, valida los pasos de preprocesamiento y asegúrate de que el entorno de hardware y software coincida con el utilizado durante el entrenamiento. Si los tiempos de inferencia son lentos, realiza ejecuciones de calentamiento, optimiza el motor de inferencia, utiliza procesamiento asíncrono y perfila la canalización de inferencia. Consulta la resolución de problemas de despliegue para obtener una guía detallada sobre estas buenas prácticas.

  • Optimizar los modelos Ultralytics YOLO26 para dispositivos edge implica usar técnicas como la poda para reducir el tamaño del modelo, la cuantización para convertir los pesos a una precisión inferior y la destilación de conocimiento para entrenar modelos más pequeños que imiten a otros más grandes. Estas técnicas garantizan que el modelo se ejecute eficazmente en dispositivos con una potencia de cálculo limitada. Herramientas como LiteRT y NVIDIA Jetson son especialmente útiles para estas optimizaciones. Obtén más información sobre estas técnicas en nuestra sección sobre optimización de modelos.

  • La seguridad es fundamental al desplegar modelos de machine learning. Garantiza una transmisión segura de los datos mediante protocolos de cifrado como TLS. Implementa controles de acceso sólidos, incluida una autenticación robusta y un control de acceso basado en roles (RBAC). Las técnicas de ofuscación de modelos, como cifrar los parámetros del modelo y servir los modelos en un entorno seguro, como un entorno de ejecución de confianza (TEE), ofrecen protección adicional. Para consultar prácticas detalladas, visita consideraciones de seguridad.

  • Elegir el entorno de despliegue óptimo para tu modelo Ultralytics YOLO26 depende de las necesidades específicas de tu aplicación. El despliegue en la nube ofrece escalabilidad y facilidad de acceso, por lo que es ideal para aplicaciones con grandes volúmenes de datos. El despliegue en el edge es la mejor opción para aplicaciones de baja latencia que requieren respuestas en tiempo real, con herramientas como LiteRT. El despliegue local es adecuado para situaciones que requieren una privacidad y un control estrictos de los datos. Para obtener una visión general completa de cada entorno, consulta nuestra sección sobre cómo elegir un entorno de despliegue.

Comentarios