{"id":15307,"date":"2023-06-07T10:20:55","date_gmt":"2023-06-07T10:20:55","guid":{"rendered":"https:\/\/bluetab.net\/?p=15307"},"modified":"2023-06-07T10:20:55","modified_gmt":"2023-06-07T10:20:55","slug":"de-documentos-en-papel-a-datos-digitales-con-fastcapture-y-generative-ai","status":"publish","type":"post","link":"https:\/\/bluetab.co.uk\/en\/2023\/06\/de-documentos-en-papel-a-datos-digitales-con-fastcapture-y-generative-ai\/","title":{"rendered":"De documentos en papel a datos digitales con Fastcapture y Generative AI"},"content":{"rendered":"<p><b>Resumen<\/b><\/p>\n<p>Los avances en Generative AI y en los grandes modelos de lenguaje, <b>LLMs<\/b> por sus siglas en ingl\u00e9s (Large Language Models), permiten transferir el pre-entrenamiento de estos modelos en una tarea simple, como predecir las palabras que faltan en una frase a tareas m\u00e1s complejas, como <b>procesar documentos en papel para extraer sus datos de forma autom\u00e1tica<\/b>. Esta transferencia del entrenamiento funciona tan bien que es posible plantear desarrollar casos de uso que cierren el <i>gap<\/i> entre la digitalizaci\u00f3n y las actividades que requieren documentos en papel.<\/p>\n<p>Hemos desarrollado un proyecto para modernizar la tecnolog\u00eda de AI de <b>Fastcapture<\/b>, nuestro IDP (Intelligent Document Processing), con Generative AI y LLMs. Hemos conectado <b>Fastcapture<\/b> con <b>Hugging Face<\/b>, un hub de la comunidad Open Source de AI. Los resultados que hemos obtenido est\u00e1n muy por encima de un F1 score de 0.9.<\/p>\n<p><b>Introducci\u00f3n<\/b><\/p>\n<p><b>Estamos viviendo una era de disrupciones<\/b>. Esta situaci\u00f3n est\u00e1 produciendo un momento de constantes avances tecnol\u00f3gicos. Me voy a fijar en 2 de ellos, la digitalizaci\u00f3n y el desarrollo de aplicaciones con inteligencia artificial (AI).<\/p>\n<p>La pandemia COVID-19 ha sido terrible. Ahora bien, una de sus consecuencias ha sido la <b>aceleraci\u00f3n de la digitalizaci\u00f3n<\/b>. El crecimiento de usuarios digitales ha sido de 2 d\u00edgitos en la gran mayor\u00eda de las empresas. Sin embargo, muchas actividades en las empresas siguen requiriendo documentos en papel. Un informe del US Bureau of Labor Statistics indica que las compa\u00f1\u00edas americanas se gastaron $5,3Bn en cargar manualmente los documentos durante el a\u00f1o 2021.<\/p>\n<p>Los avances en AI, y en particular los avances en Generative AI y en los grandes modelos de lenguaje han alcanzado un momento que, a parte de la aparici\u00f3n de aplicaciones sorprendentes como <b>ChatGPT<\/b>, permite el desarrollo de casos de uso de tratamiento de textos e im\u00e1genes con unos niveles de precisi\u00f3n muy elevados &gt;0.9.<\/p>\n<p>Juntando estas piezas,<b> hoy es realmente posible plantear automatizar el procesamiento de documentos en papel a escala para convertirlos en datos digitales<\/b> listos para ser consumidos y analizados en cualquier otra actividad de la empresa.&nbsp;<\/p>\n<p><b>El problema<\/b><\/p>\n<p>Muchas actividades en las empresas siguen requiriendo documentos en papel. <b>Facturas, contratos, informes<\/b>. Estos documentos contienen datos relevantes y disponer de una versi\u00f3n digital es clave para la digitalizaci\u00f3n de las empresas.&nbsp;<\/p>\n<p>Una forma de convertir los documentos en papel en datos digitales es mediante cargas manuales. Tambi\u00e9n se pueden convertir en datos digitales utilizando aplicaciones del tipo de un <b>IDP<\/b>. Un IDP consiste en un grupo de pipelines con pasos para procesar los documentos y convertirlos en datos digitales. El primer paso es la <b>conversi\u00f3n del documento en texto<\/b> con un modelo OCR (Optical Character Recognition).&nbsp;<\/p>\n<p>A continuaci\u00f3n vienen los pasos para <b>tratar el texto<\/b>. Los pasos de tratamiento del texto pueden utilizar modelos de AI. T\u00edpicamente estos modelos de AI est\u00e1n basados en una arquitectura RNN (Recurrent Neural Network). Los <b>modelos RNN <\/b>tratan la secuencia de palabras en orden, una a una. Estos modelos se enfrentan a <b>2 dificultades<\/b> a la hora de realizar su tarea. La primera es su <b>capacidad de tratamiento del contexto<\/b>. Seg\u00fan se van alejando las palabras y las frases, el modelo empieza a perder su capacidad para relacionarlas. La segunda es la<b> dificultad que tienen para escalar y, por lo tanto, para ser entrenados en grandes vol\u00famenes de textos<\/b>. Estas 2 dificultades suponen un techo para la precisi\u00f3n del IDP y por lo tanto para su capacidad de automatizar la conversi\u00f3n de documentos en papel en datos digitales.<\/p>\n<p><b>La soluci\u00f3n propuesta<\/b><\/p>\n<p><b>Los LLM se basan en la arquitectura de los Transformers<\/b>. Esta arquitectura propuesta en el paper \u201c<b>Attention is all you need<\/b>\u201d Vaswani et al. 2017 fu\u00e9 totalmente revolucionaria. Trata la secuencia a trav\u00e9s del mecanismo de atenci\u00f3n mediante matrices. El mecanismo de atenci\u00f3n permite realizar un mejor procesamiento del contexto.&nbsp;<\/p>\n<p>Todas las palabras se encuentran a la misma distancia entre s\u00ed medida en n\u00famero de operaciones matem\u00e1ticas. Y permite <b>escalar el entrenamiento de forma horizontal<\/b>. Los modelos basados en esta arquitectura se pueden entrenar con cantidades de textos muy grandes.&nbsp;<\/p>\n<p>En el paper \u201c<b>Improving Language Understanding by Generative Pre-Training<\/b>\u201d Radford et al. 2018 proponen un nuevo framework de 2 fases para entrenar los LLMs. Un pre-entrenamiento no supervisado sobre un objetivo sencillo, predecir la siguiente palabra de un texto, y con grandes vol\u00famenes de textos. Y un fine-tune para adaptar el modelo a resolver una tarea NLP concreta como extraer datos relevantes de un documento, y con pocos ejemplos.&nbsp;<\/p>\n<p>Esta combinaci\u00f3n es ideal para transferir el pre-entrenamiento de un modelo con grandes cantidades de textos a tareas para las que se disponen de pocos ejemplos.&nbsp;<\/p>\n<p><b>Nuestra aproximaci\u00f3n consiste en utilizar LLMs pre-entrenados disponibles en la comunidad Open Source y realizar un fine-tune para convertir los documentos en papel en datos digitales.&nbsp;<\/b><\/p>\n<p>Hemos conectado nuestro IDP Fastcapture con el hub de Hugging Face donde residen LLMs pre-entrenados Open Source para acceder a ellos y generar versiones especializadas mediante un fine-tune en nuestro hub privado sin enviar los datos al hub p\u00fablico.<\/p>\n<p><b>C\u00f3mo incorporar los LLMs en un IDP<\/b><\/p>\n<p>La estrategia que hemos seguido para incorporar los LLMs en nuestro IDP Fastcapture se ha basado en <b>3 pilares<\/b>, aprender a trav\u00e9s de I+D, apoyarnos en la comunidad Open Source de AI y construir sobre lo que ya ten\u00edamos.<\/p>\n<p>Estos han sido los pasos clave del proyecto:<\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\">La selecci\u00f3n del LLM pre-entrenado<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">El dise\u00f1o del contexto del Transformer<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Utilizar entornos multi-GPU para realizar el fine-tune y el servicing<\/li>\n<\/ol>\n<p><b>La selecci\u00f3n del LLM pre-entrenado<\/b><\/p>\n<p>La comunidad Open Source de AI da acceso a LLMs pre-entrenados con un nivel de calidad enterprise-grade. Nuestro caso de uso requiere un <b>modelo tipo encoder con capacidades multi idioma<\/b>. De esta manera un \u00fanico modelo ser\u00e1 capaz de extraer datos relevantes de documentos del mismo tipo con diferente idioma.<\/p>\n<p>Nos decantamos por el modelo pre-entrenado XLM-R propuesto en el paper \u201c<b>Unsupervised Cross-lingual Representation Learning at Scale<\/b>\u201d Conneau et al. 2020. El modelo XLM-R ha sido pre-entrenado en 2.5TB de textos con 100 idiomas. Hemos utilizado las siguientes tallas:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Modelo<\/td>\n<td>N\u00famero de par\u00e1metros<\/td>\n<\/tr>\n<tr>\n<td>XLM-RLarge<\/td>\n<td>550M<\/td>\n<\/tr>\n<tr>\n<td>XLM-RXL<\/td>\n<td>3.5B<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Dise\u00f1o del contexto del Transformer<\/b><\/p>\n<p>Dise\u00f1ar c\u00f3mo usar el contexto del LLM es un factor importante a la hora de conseguir niveles de performance de 0.9.<\/p>\n<p>Los documentos est\u00e1n organizados en p\u00e1ginas y frases. <b>Lo que queremos es que el LLM analice frase a frase en b\u00fasqueda de datos relevantes<\/b>. Los tipos de documentos que manejamos son m\u00e1s bien telegr\u00e1ficos, con poco texto. Esto suele ser una t\u00f3nica habitual al tratar documentos en papel en el mundo empresarial.&nbsp;<\/p>\n<p>Para dar una mejor oportunidad al LLM de hacer su tarea ubicamos la frase de inter\u00e9s a la derecha del contexto y completamos el contexto por la izquierda con las frases predecesoras que quepan.<\/p>\n<p>El siguiente esquema muestra el dise\u00f1o al que nos referimos.<\/p>\n<p><img decoding=\"async\" width=\"845\" height=\"197\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image5.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image5.png 845w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image5-300x70.png 300w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image5-768x179.png 768w\" sizes=\"(max-width: 845px) 100vw, 845px\"><\/p>\n<p><b>Fine-tune y servicing en un entorno multi-GPU<\/b><\/p>\n<p>Realizar un fine-tune de un LLM requiere utilizar GPU\u2019s (Graphics Processing Units). El modelo XLM-RLarge puede entrenarse sin utilizar un framework que optimice el uso de la memoria o que distribuya el modelo entre diferentes GPUs.&nbsp;<\/p>\n<p>Sin embargo la versi\u00f3n XLM-RXL es tan grande que al realizar el algoritmo de gradient descent no cabe y requiere utilizar frameworks de optimizaci\u00f3n y\/o que distribuyan el modelo en el entorno multi-GPU.<\/p>\n<p>El proyecto lo hemos realizado en una m\u00e1quina virtual con 4 GPUs NVIDIA a10g, y hemos utilizado el framework propuesto en el paper \u201cZeRO: Memory Optimizations Toward Training Trillion Parameter Models\u201d Rajbhandari et al. 2020. ZeRO optimiza el uso de la memoria para almacenar el estado del modelo a la hora de entrenar y permite distribuir los gradientes y los par\u00e1metros entre las GPUs.<\/p>\n<p>Utilizar entornos multi-GPU y frameworks de optimizaci\u00f3n como ZeRO, a parte de poder escalar el proceso de fine-tuning, permite gestionar los recursos computacionales que requieren modelos extra grandes.&nbsp;<\/p>\n<p><b>Resultados<\/b><\/p>\n<p>En el proyecto hemos utilizado 2 juegos de datos, uno de factura y otro de informes econ\u00f3micos.<\/p>\n<p><b>El impacto de la talla en el performance depende del caso de uso<\/b><\/p>\n<p>Las siguientes gr\u00e1ficas muestran el F1 score de las 2 tallas, L y XL, en cada uno de los juegos de datos.<\/p>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"750\" height=\"450\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image3.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image3.png 750w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image3-300x180.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\"><figcaption>Gr\u00e1fica 1. F1 score fine-tune facturas XLM-RLarge<\/figcaption><\/figure>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"503\" height=\"301\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image1.png 503w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image1-300x180.png 300w\" sizes=\"(max-width: 503px) 100vw, 503px\"><figcaption>Gr\u00e1fica 2. F1 score fine-tune facturas XLM-RXL<\/figcaption><\/figure>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"749\" height=\"450\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image4.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image4.png 749w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image4-300x180.png 300w\" sizes=\"(max-width: 749px) 100vw, 749px\"><figcaption>Gr\u00e1fica 3. F1 score fine-tune informes XLM-RLarge<\/figcaption><\/figure>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"750\" height=\"450\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image6.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image6.png 750w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image6-300x180.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\"><figcaption>Gr\u00e1fica 4. F1 score fine-tune informes XLM-RXL<\/figcaption><\/figure>\n<p>Estas gr\u00e1ficas ayudan a visualizar la diferencia de performance entre las tallas L y XL en los 2 juegos de datos y poder decidir qu\u00e9 modelo utilizar en el IDP. En el caso de las facturas la talla XL obtiene un score medio 8 puntos b\u00e1sicos mejor que la talla L, mientras que en el caso de los informes econ\u00f3micos la diferencia del score medio es de 1 punto b\u00e1sico.&nbsp;<\/p>\n<p>Al elegir el tama\u00f1o de modelo adecuado para cada caso de uso hay que considerar varios factores como el performance del modelo, los recursos de computaci\u00f3n y el trade-off entre precisi\u00f3n y complejidad. En algunos casos, un modelo m\u00e1s peque\u00f1o puede proporcionar resultados suficientemente precisos con menores requisitos de computaci\u00f3n y menor complejidad de mantenimiento.&nbsp;<\/p>\n<p><b>La importancia de dise\u00f1ar el contexto al trabajar con LLMs<\/b><\/p>\n<p>El dise\u00f1o del contexto es clave para cualquier caso de uso con LLMs. La siguiente gr\u00e1fica muestra el resultado de un fine-tune del modelo XLM-RLarge sin utilizar el contexto con dise\u00f1o de ventana. El F1 score medio es 3 puntos b\u00e1sicos inferior sin utilizar el dise\u00f1o de contexto con ventana.<\/p>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"749\" height=\"450\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image4.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image4.png 749w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image4-300x180.png 300w\" sizes=\"(max-width: 749px) 100vw, 749px\"><figcaption>Gr\u00e1fica 3. F1 score fine-tune informes XLM-RLarge<\/figcaption><\/figure>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"750\" height=\"450\" src=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image7.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image7.png 750w, https:\/\/bluetab.net\/wp-content\/uploads\/2023\/06\/image7-300x180.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\"><figcaption>sin el dise\u00f1o de contexto con ventana<\/figcaption><\/figure>\n<p><b>Referencias<\/b><\/p>\n<p>Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. arXiv:1706.03762&nbsp;<\/p>\n<p>Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever. Improving Language Understanding by Generative Pre-Training. 2018.&nbsp;<\/p>\n<p>Alexis Conneau, Kartikay Khandelwal, Naman Goyal, Vishrav Chaudhary, Guillaume Wenzek, Francisco Guzman, Edouard Grave, Myle Ott, Luke Zettlemoyer, Veselin Stoyanov. Unsupervised Cross-lingual Representation Learning at Scale. 2020. arXiv:1911.02116v2.<\/p>\n<p>Samyam Rajbhandari\u2217 , Jeff Rasley\u2217 , Olatunji Ruwase, Yuxiong He. ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. 2020. arXiv:1910.02054v3<\/p>\n<h5>\u00bfQuieres saber m\u00e1s de lo que ofrecemos y ver otros casos de \u00e9xito?<\/h5>\n<p><a href=\"\/\" role=\"button\"><br \/>\nDESCUBRE BLUETAB<br \/>\n<\/a><\/p>\n<p><b>SOLUCIONES, <\/b>SOMOS EXPERTOS<\/p>\n<p><a href=\"\/soluciones\/data-strategy\/\"><\/a><\/p>\n<p><a href=\"\/soluciones\/data-strategy\/\"><\/p>\n<h5>DATA STRATEGY<\/h5>\n<p><\/a><a href=\"\/soluciones\/data-strategy\/\">\t\t\t\t\t\t<\/a><br \/>\n<a href=\"\/soluciones\/data-fabric\/\"><\/a><\/p>\n<p><a href=\"\/soluciones\/data-fabric\/\"><\/p>\n<h5>DATA FABRIC<\/h5>\n<p><\/a><a href=\"\/soluciones\/data-fabric\/\">\t\t\t\t\t\t<\/a><br \/>\n<a href=\"\/soluciones\/augmented-analytics\/\"><\/a><\/p>\n<p><a href=\"\/soluciones\/augmented-analytics\/\"><\/p>\n<h5>AUGMENTED ANALYTICS<\/h5>\n<p><\/a><a href=\"\/soluciones\/augmented-analytics\/\">\t\t\t\t\t\t<\/a><\/p>\n<p>Te puede interesar<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Resumen Los avances en Generative AI y en los grandes modelos de lenguaje, LLMs por sus siglas en ingl\u00e9s (Large Language Models), permiten transferir el pre-entrenamiento de estos modelos en una tarea simple, como predecir las palabras que faltan en una frase a tareas m\u00e1s complejas, como procesar documentos en papel para extraer sus datos [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":20830,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,36,30],"tags":[],"class_list":["post-15307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-es","category-outstanding","category-tech-en"],"acf":[],"jetpack_featured_media_url":"https:\/\/bluetab.co.uk\/wp-content\/uploads\/2023\/06\/fast.png","_links":{"self":[{"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/posts\/15307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/comments?post=15307"}],"version-history":[{"count":0,"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/posts\/15307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/media\/20830"}],"wp:attachment":[{"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/media?parent=15307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/categories?post=15307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bluetab.co.uk\/en\/wp-json\/wp\/v2\/tags?post=15307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}