- Big Data Engineer. Alumno de la 3ª edición del Máster en Machine & Deep Learning e Inteligencia Artificial del Big Data International Campus.
- Big Data Engineer. Alumno de la 3ª edición del Máster en Machine & Deep Learning e Inteligencia Artificial del Big Data International Campus.
Científicos de datos en NPL constantemente recurrimos a proveedores en la Nube que nos entregan funcionalidades de machine Learning embebido a través de SaaS de servicio que al inicio tienen una versión de prueba pero que al final convierten en un gastos elevados y no personalizables por completo. En este articulo rescato una estructura de proyecto NPL para Machine Learning basado en la implementación de un modelo OCR ML que pueda ser integrado a sistemas de traducción con Bert Transformers o en su caso a computer visión CNN para la identificación y segmentación de texto en imagen y PDF. Se tiene en cuenta aspectos como que la predicción sea en tiempo real, los artefactos del modelo implementen diferentes versiones siendo instanciados por un punto final de acceso API Rest en el modelo de inferencia, los archivos procesados por el modelo son de más de 50 páginas PDF con tiempos de procesamiento mayores a 10 segundos, donde se presentaran picos de solicitudes del servicio y diseñaremos una arquitectura que cumpla con la función predictiva de una red neuronal OCR efectiva.
Inferencia del modelo de aprendizaje automático
El enfoque a tomar para el desarrollo del modelo será la inferencia en tiempo real (o interactiva): realizando predicciones por petición y/o en cualquier momento desencadenando una respuesta inmediata a cada petición. Teniendo en cuenta que las frecuencias para generar las predicciones serán por solicitud; con la mayor solicitud de predicciones en al inicio de la jornada y al cierre, se aplicaran los siguientes procesos para solventar la carga:
Infraestructura: El proceso de activación de la predicción será por activación de escalamiento en el clúster por segmento de tiempo. Donde se afrontaran los desafíos de consumo de GPU y memoria de consumo por el proceso OCR; esto nos permitirá entregar los resultados puntualmente.
Segmentación: Las predicciones se generaran por lotes de 1,024 Mega específicamente buffer lineal de 4096 bytes, donde los archivos serán preprocesados en un stage con sus respectivas predicciones para luego ser integrados bajo el contexto de todo el archivo.
Latencia del modelo:
- ¿Se espera la latencia del modelo?
- ¿Cuánta capacidad de proceso se necesita para ejecutar el modelo?
- ¿Existen implicaciones y costos operativos para mantener el modelo?
Para nuestro proceso utilizaremos la arquitectura de inferencia en tiempo real; donde el modelo se puede desencadenar en cualquier momento y se espera una respuesta inmediata. Este patrón permite analizar datos de streaming, interactivos de la aplicación, Bert Transformes para el sistema de traducción automática o identificación de carácter en tiempo real; de este modo le permite aprovechar al modelo de aprendizaje automático resolver el problema de inicio en frío, donde en el siguiente árbol de decisión muestra el paso del árbol de decisión:
Arbol decision Real-Time Inferecing
- Desafíos de la inferencia en tiempo real: los requisitos de latencia y rendimiento hacen que la arquitectura de inferencia en tiempo real sea más compleja para el modelo. Un sistema puede necesitar responder en 100 milisegundos o menos, en cuyo tiempo debe recuperar los datos, realizar la inferencia, validar y almacenar los resultados del modelo, ejecutar cualquier lógica de negocios necesaria y devolver los resultados al sistema o a la aplicación.
- Opciones de proceso para la inferencia en tiempo real: la mejor manera de implementar la inferencia en tiempo real es desplegando contenedores en un clúster de Kubernetes o Docker, y exponerlo como un servicio web API REST; de este modo, el modelo se ejecuta en su propio entorno aislado y se puede administrar como cualquier otro servicio web. Luego, las funcionalidades de Docker se pueden usar para la administración, supervisión, auto escaldo y traducción, el modelo se puede implementar de forma local, en la nube o en el perímetro on-premise.
- Implementación en varias regiones y alta disponibilidad: la implementación regional y las arquitecturas de alta disponibilidad se deben tener en cuenta en escenarios de inferencia en tiempo real, ya que la latencia y el rendimiento del modelo serán cuestiones complicadas de resolver. Para reducir la latencia en implementaciones en varias regiones, se recomienda localizar el modelo que esté lo más cerca posible del punto de consumo. El modelo y la infraestructura compatible deben cumplir los principios y la estrategia de alta disponibilidad y recuperación ante desastres de la empresa. El hecho de contar con muchos modelos para estos escenarios a fin de capturar datos regionales o relaciones a nivel de tienda podría generar una mayor precisión que un solo modelo. En este enfoque se supone que hay suficientes datos disponibles para este nivel de granularidad.
- (excepción alta latencia) Nota: En los casos que los contenedores no resuelvan las peticiones utilizaremos Inferencia por lotes: En caso de presentarse procesos OCR de imágenes complejas textos complejos de identificar o un gran tamaño de los archivos cargados a procesar por la red neuronal utilizaremos Deep Learning con procesos por lotes; ejecutando varios modelos simultáneamente para lograr una solución de inferencia muy escalable que pueda controlar grandes volúmenes de datos. Para lograr la inferencia jerárquica del modelo, muchos modelos se pueden dividir en categorías. Cada categoría puede tener su propio almacenamiento de inferencia, como un lago de datos preferiblemente en Hadoop. Al implementar este patrón, es necesario equilibrar el escalado horizontal y vertical de los modelos, ya que esto afectaría al costo y al rendimiento. Ejecutar demasiadas instancias de modelos podría aumentar el rendimiento, pero el costo podría verse afectado. Tener muy pocas instancias con nodos de alta especificación podría resultar más rentable, pero podrían producirse problemas con el escalado.
- (Optimo baja latencia) Inferencia en tiempo real con contenedores: Implementaremos la inferencia en tiempo real como mejor opción para varios modelos en baja latencia y con solicitudes a petición, se realizara con un punto de conexión REST de servicios externos requieren una interfaz estándar para interactuar con el modelo, normalmente a través de una interfaz REST con una carga JSON, Con este patrón en el servicio de detección identificaremos una lista de servicios y sus metadatos, cada servicio es un micro servicio sin estado que puede controlar varias solicitudes simultáneamente y se limita al recurso de máquina virtual física. El servicio puede implementar varios modelos si se seleccionan varios grupos. Para ello, se recomiendan agrupaciones homogéneas servicios de traducción, identificación de segmentación de imagen, filtros de imagen, selección de identificación de acción conducción autónoma, como la categorización, etc. La asignación entre la solicitud de servicio y el modelo seleccionado para un servicio determinado debe incorporarse a la lógica de inferencia, normalmente a través del script de puntuación. Si el tamaño de los modelos es relativamente pequeño (unos pocos megabytes), se recomienda cargarlos en la memoria por motivos de rendimiento. De lo contrario, cada modelo se puede cargar dinámicamente por solicitud
Procedimiento para el desarrollo del modelo OCR
Pilar de la tecnología a usar
Durante esta década; he trabajado y testeado servicios IaaS, Paas, SaaS con diferentes proveedores de servicios en la nube, donde por experiencia propia definitivamente AWS es la mejor opción. Para este proceso especifico de extracción de texto AWS Amazon TextExtract es la mejor solución donde encuentro la mayor cantidad de idiomas para procesamiento. Debemos tener en cuenta que como ingeniero en redes neuronales podemos desarrollar el mismo servicio en Python bajo la misma infraestructura AWS teniendo resultados muy similares (sea por transfer Learning) o desarrollo nativo.
Diagrama de arquitectura
Arquitectura Solución OCR propuesta
Enfoque técnico del problema ML para OCR
El objetivo de este modelo de Machine Learning OCR es traducir y procesar imagen a text en archivos PDF o imágenes a gran escala con el máximo de rendimiento; para eso es necesario definir métricas para el éxito del modelo. En este caso el usuario final espera una precisión 100% pero la realidad puede variar entre un 90% de precisión o un 95% o un 99% de precisión Accuracity. En caso de una precisión de predicción del 70% en el modelo OCR para un usuario normal no es óptimo, por tanto es necesario tomar medidas al respecto para la correcta predicción definiendo una meta clara.
Establecer objetivos alcanzables e identificar en qué momento la precisión +1 o -1 sea aplicable ya que no es lo mismo identificación OCR para lenguajes complejos arábigo, etc.
Fases Solución
- Preprocesamiento de la imagen de entrada
- Detección de la estructura principal del texto
- Segmentación de los caracteres (localización párrafos y palabras, extracción y segmentación de caracteres)
- Diseño y entrenamiento de la red neuronal
- Clasificación y reconocimiento de texto (Binarización y escalamiento de datos CNN)
- Post Procesado de texto
- Salida a Microsoft Word
Datos OCR
El modelo OCR trabaja en tiempo real por tanto requiere utilizar sistemas de almacenamiento de datos sin latencia y donde los datos sean almacenados en memoria cache; esto permitirá que el procesamiento GPU del modelo sea más efectivo, significa que los datos estén en Cache como por ejemplo en AWS ElastiCache para almacenamiento en línea, incluyendo los procesos de entrenamiento en tiempo real ya que en el mercado las tendencias de internet cambian con bastante rapidez y por tanto necesita el modelo ser reentrenado en tiempo real.
PLS Partial least Square.
Modelo Matemático y Estadístico Optimo.
¿Existen algunas inconsistencias en la predicción entre los datos de las pruebas y los de entrenamiento?, para la mejora se debe aplicar filtros en el entorno de la imagen con OpenCV. Utilizar reconocimiento de Contorno ajustando los parámetros con perfilamiento de resultados implementando un modelo matemático y estadístico PLS. Utilizaremos RedShift para DWH, AWS S3 para Data Lake.
Tipos de Texto en el entorno controlado OCR, el caso de entorno controlado son textos claros como página web, documentos, texto denso, la estructura de texto y su localización.
Texto en entornos no controlados, tipografía compleja no regulada, localización variada, tamaños variables, textos en grafitis, señales de tránsito, imágenes con mucho ruido, degradado o con mucha luz. Para el procesamiento de PDF utilizaremos “TESSERACT” será un dataset para usar en el proceso de tratamiento de los PDF. Para el procesamiento de PNG utilizaremos el dataset “SVHN Street View House Number” donde podemos evidenciar estas varianzas para el correcto entrenamiento del modelo. “OpenAlpr” Dataset para reconocimiento de Matriculas, “CAPTCHA” combinaciones de letras con dificultad de lectura. Para el procesamiento de Imagen PNG complejas utilizaremos Deep Learning con Visión Artificial herramientas como Mnist y/ó Coco-Text para reconocimiento imagen con ruido o mala iluminación. Por ejemplo, en un entrenamiento en tiempo real para un problema de predicción de clics, le muestras al usuario el anuncio y él no hace clic, ¿es un ejemplo de fracaso? Tal vez el usuario hace clic típicamente después de 10 minutos. Pero ya has creado los datos y entrenado tu modelo en eso. Hay muchos factores que debes considerar al preparar los datos para tus modelos. Necesitas hacer preguntas y pensar en el proceso de principio a fin para tener éxito en esta etapa.
Evaluación
Lo importante acá es la separación de los datos en entrenamiento y prueba para reconocimiento OCR. frecuentemente haciendo un conjunto de datos de entrenamiento y prueba, por muestreo, nos olvidamos de una suposición implícita, los datos rara vez se encuentran distribuidos de forma independiente e idéntica. En términos sencillos, nuestra suposición de que cada punto de datos es independiente entre sí y proviene de la misma distribución es, en el mejor de los casos, defectuosa, si no totalmente incorrecta. Puedes pensar en dividir los datos usando la variable de tiempo en lugar de tomar muestras al azar de los datos. Se propone una técnica novedosa para OCR automatizado basada en la fusión y selección de características de múltiples propiedades. Las características se fusionan utilizando la formulación en serie y la salida se pasa al método de selección basado en mínimos parciales (PLS). La selección se realiza en base a la función de aptitud de la entropía y las características finales se clasifican mediante un clasificador en conjunto. Para el modelo de series de tiempo, una línea de base es utilizar la predicción del último día, es decir, predecir el número del día anterior de traducciones o históricos. Para los modelos de clasificación del procesamiento del lenguaje natural se puede utilizar las métricas de evaluación, como precisión, para encontrar la mejor configuración de hiperparámetros, reduciendo sesgos innecesarios .
Características: La comprensión y aplicación correcta de varios métodos para la selección de características nos permitirá obtener el máximo rendimiento del modelo OCR. por lo que es adecuado implementarlo y evaluar los resultados obtenidos para al final obtener las características más adecuadas para construir el modelo.
Modelado: Con la adquisición y limpieza de datos de los dataset previamente nombrados, la creación de características y demás podremos hacer que el modelo sea interpretable.
Experimentación: Entrar en un bucle interminable para mejorar aún más nuestro modelo.
- Probar nuestro modelo en entornos de producción, obtener más información sobre lo que podría salir mal y continuar mejorando nuestro modelo con una integración continua.
- Para OCR en tiempo real debemos entender las deficiencias del modelo con la retroalimentación en tiempo real tratando de minimizar el tiempo para el primer experimento en línea del modelo.
Detección a los problemas que se pueden presentar al implementar modelo Text- OCR
Gestión de lenguajes de programación
Implementar un modelo en Python o R a uno con un lenguaje de producción como C++ o Java es complicado, y a menudo resulta en un rendimiento reducido, tomando en cuenta la velocidad, precisión, del modelo original.
R puede presentar problemas cuando aparecen nuevas versiones del software. Además, es lento y no se moverá través de los datos grandes de manera eficiente. R es un gran lenguaje para prototipos, ya que permite interacciones fáciles y resolución de problemas, pero necesita ser traducido a Python o C++ o Java para su producción.
Las tecnologías de contenedores, como Docker, pueden resolver los retos de incompatibilidad y portabilidad introducidos por la multitud de herramientas. Sin embargo, la comprobación automática de la dependencia, la comprobación de errores, las pruebas y las herramientas de creación no serán capaces de resolver los problemas a través de la barrera del idioma.
La reproducibilidad también es otro desafío. De hecho, se pueden construir muchas versiones de un modelo utilizando diferentes lenguajes de programación, librerías o versiones diferentes de la misma librería. Es difícil realizar un seguimiento manual de estas dependencias. Para resolver estos desafíos, se necesita una herramienta de ciclo de vida de Machine Learning que pueda rastrear y registrar automáticamente estas dependencias durante la fase de formación como configuración en forma de código y, posteriormente, agruparlas junto con el modelo formado para ser implementado. Es recomendable utilizar en una herramienta o plataforma que pueda traducir instantáneamente código de un idioma a otro o que permita implementar modelos detrás de una API para que puedan integrarse en cualquier lugar.
Poder de computo
En caso de que se utilicen redes neuronales, estas a menudo son muy profundas, lo que significa que el entrenamiento y el uso de las mismas para inferencia requiere mucha potencia computacional. Normalmente, queremos que nuestros algoritmos funcione rápido, para muchos usuarios y eso puede ser un obstáculo. Además, muchos de los procesos de producción de Machine Learning se basan hoy en día en las unidades de procesamiento gráficos o GPU. Sin embargo, estos equipos son caros, lo que fácilmente añade otra capa de complejidad a la tarea de escalar los sistemas de Machine Learning. Para soportar los picos de solicitudes del servicio por franja horaria este será el diseño Cloud optimo.
Portabilidad
Otro reto interesante de la implementación del modelo es la falta de portabilidad. Al carecer de la capacidad de migrar fácilmente un componente de software a otro entorno de host y ejecutarlo allí, las organizaciones pueden quedar bloqueadas en una plataforma en particular. Esto puede crear barreras a la hora de crear modelos y desplegarlos.
Escalabilidad
La escalabilidad es un problema real para muchos proyectos de Inteligencia Artificial. De hecho, es necesario asegurarse de que sus modelos sean capaces de escalar y satisfacer los aumentos de rendimiento y la demanda de aplicaciones en la producción. Al principio de un proyecto, normalmente nos basamos en datos relativamente estáticos a una escala manejable. A medida que el modelo avanza hacia la producción, suele estar expuesto a mayores volúmenes de datos y modos de transporte de datos. El equipo necesitará varias herramientas para monitorear y resolver los desafíos de rendimiento y escalabilidad que aparecerán con el tiempo. Los problemas de escalabilidad se pueden resolver adoptando un enfoque coherente y basado en micro servicios para el análisis de la producción. Del mismo modo, los equipos deben tener opciones para escalar las huellas de cálculo y memoria para soportar cargas de trabajado más complejas.
Problemas de pruebas y validación
Los modelos evolucionan continuamente debido a cambios en los datos, nuevos modelos, entre otras causas. Como consecuencia, cada vez que se produce un cambio de este tipo, debemos revalidar el rendimiento del modelo. Aparte de la validación de modelos en pruebas fuera de línea, es muy importante evaluar el rendimiento de los modelos en producción. Por lo general, esto lo planificamos en las secciones de estrategia de implementación y monitoreo. Los modelos de Machine Learning deben actualizarse con mayor frecuencia que las aplicaciones de software habituales.
MLOps Automatizacíon NPL de Machine Learning
Esto podría ser una buena solución para producir modelos más rápidos. Además, la plataforma puede soportar el desarrollo y comparación de múltiples modelos, de modo que el negocio puede elegir el modelo que mejor se adapte a sus necesidades de precisión predictiva, latencia y recursos de cálculo. Hasta un 90% de todos los modelos de Machine Learning empresarial pueden ser desarrollados automáticamente. Los expertos en Machine Learning pueden ser contratados para trabajar con gente de negocios para desarrollar el pequeño porcentaje de modelos que actualmente están fuera del alcance de la automatización. Muchos modelos experimentan degradaciones en su rendimiento con el tiempo. Como tal, los modelos desplegados deben ser monitoreados. Cada modelo desplegado debe registrar todas las entradas, salidas y excepciones. Una plataforma de implementación de modelos debe proporcionar almacenamiento de registros y visualización del rendimiento del modelo. Vigilar de cerca el rendimiento del modelo es clave para gestionar eficazmente el ciclo de vida de un modelo de Machine Learning. Machine Learning se encuentra todavía en sus primeras etapas. De hecho, tanto los componentes de software como los de hardware están en constante evolución para satisfacer las demandas actuales de Machine Learning. Desplegar Machine Learning es y seguirá siendo difícil, y eso es solo una realidad que las organizaciones van a tener que afrontar. Afortunadamente, algunas arquitecturas y productos nuevos están ayudando a cambiar este panorama. Además, a medida que más compañías están escalando las operaciones, también están implementando herramientas que facilitan la implementación del modelo.
El artefacto del modelo tiene varias versiones y todas ellas se pueden llamar a través del punto final de inferencia teniendo la facilidad de mejora en tiempo real variando la selección de los algoritmos para los trabajos del entendimiento y comprensión del texto con Amazon Comprend y extracción de texto con TextExtract. Dentro del Pipeline para localizar la selección de algoritmos podemos utilizar AutoKeras que utiliza NAS para la búsqueda del mejor algoritmo de extracción permitiéndonos desarrollar y mejorar modelos en producción y ejecución adecuándose a las necesidades de precisión en la predicción, cálculos y latencia, evitando degradaciones en el rendimiento del modelo con el uso en el tiempo, los procesos de extracción y excepciones en el almacenamiento S3 durante el ciclo de vida del modelo ML.
¿Quieres obtener el mismo conocimiento que Sayo?