- Canva alcanzó 200 millones de MAU, tiene más de 30 mil millones de diseños y genera alrededor de 300 diseños nuevos por segundo
- Buscar diseños y encontrar archivos compartidos por otros usuarios se ha vuelto un problema cada vez más importante
- En la búsqueda pública (web/búsqueda de productos), se construyen datasets a partir de las consultas de los usuarios y un conjunto fijo de elementos de búsqueda
- Revisores especializados evalúan la relevancia entre cada consulta y elemento para asignar etiquetas
- El rendimiento del motor de búsqueda se evalúa mediante métricas de recall y precision
- En la búsqueda personal, para proteger la privacidad, no se pueden revisar diseños privados ni usar los datos de los usuarios como dataset de evaluación
- Como solución, se usa IA generativa (como GPT-4o) para crear contenido y consultas realistas pero completamente sintéticos
- Esto permite evaluar mejoras en el pipeline de búsqueda sin comprometer en absoluto la privacidad
Estado anterior: métodos de prueba limitados
- Proceso de prueba anterior
- Los ingenieros usaban métodos limitados de pruebas offline
- Ejecutaban consultas de problemas conocidos en cuentas de Canva para comparar el rendimiento antes y después de cambios de código
- Ejemplo: al mejorar la corrección ortográfica, probaban consultas mal escritas como
desgin
- Antes del cambio: sin resultados
- Después del cambio: se devolvían documentos relacionados con
design
- Los cambios que pasaban las pruebas offline avanzaban a la etapa de pruebas online
- Se realizaban pruebas A/B usando el framework de experimentación de Canva
- Se comparaba la tasa de éxito de búsqueda entre usuarios con el cambio aplicado y usuarios con la búsqueda estándar
- Limitaciones
- Falta de validez estadística en las pruebas offline
- Con un número limitado de consultas es difícil representar diversos comportamientos de búsqueda
- Posible impacto negativo en los usuarios
- Existe la posibilidad de que degradaciones de rendimiento no detectadas offline queden expuestas en experimentos online
- Consumo de tiempo en los experimentos online
- Para obtener significancia estadística se requieren al menos varios días o semanas
- Esto limita la cantidad de experimentos simultáneos y la velocidad para probar ideas
Estado ideal: construir un nuevo dataset y un pipeline de evaluación
- Objetivo: se necesitaba un dataset personalizado y un pipeline de evaluación para que los ingenieros pudieran medir objetivamente los cambios antes de pasar a pruebas online
- Requisitos principales:
- Reproducibilidad: ofrecer los mismos resultados en cualquier momento
- Iteración rápida: que los ingenieros puedan probar rápidamente los resultados tras cambiar código, sin esperar al despliegue en producción
- Similitud con producción: ofrecer resultados alineados con el comportamiento real en producción
- Trabajo no bloqueante: permitir que los miembros del equipo experimenten de forma independiente sin estorbarse entre sí
Crear datasets realistas: uso de IA generativa
- Dataset de evaluación que respeta la privacidad
- Se usó GPT-4o para generar datos sintéticos que pudieran reemplazar los datos reales de los usuarios
- Sin copiar diseños de usuarios, se crearon datos realistas reflejando distribuciones estadísticas como la longitud del texto
- Generación de casos de prueba para evaluar recall
- A partir de temas y tipos de diseño (documentos, presentaciones, etc.), se usó GPT-4o para generar consultas y contenido correspondiente
- Ajuste de dificultad de las consultas:
- incluir errores ortográficos
- sustituir por sinónimos
- reformular la consulta
- Generación de casos de prueba para evaluar precision
- Se generó un dataset que incluía diseños relevantes y no relevantes
- Formas de generar diseños no relevantes:
- incluir solo algunas palabras clave
- modificarlos para que parezcan plantillas o borradores
- configurarlos como diseños antiguos
Problemas al usar IA generativa
- Ventajas y límites de los LLMs
- Ventaja: pueden generar grandes volúmenes de texto de forma eficiente
- El dataset de evaluación estático generado puede reutilizarse repetidamente y entregar resultados consistentes y deterministas con rapidez
- Eliminación de limitaciones: una vez creado el dataset, se excluyen los problemas de latencia y aleatoriedad de los LLM
- Problemas
- Negativa a generar títulos largos
- Aunque se pidió generar títulos de 12 a 15 palabras, devolvía títulos más cortos
- Ejemplo:
Exploring the Latest Advancements in Screen Technology and Applications (9 palabras)
Best Practices for Teachers: Presentation Tips for Meet the Teacher (10 palabras)
- Es posible que esto refleje que en documentos reales los títulos largos son poco frecuentes
- Como resultado, se replanteó el criterio sobre la longitud de los títulos
- Errores de repetición y alucinación
- Al pedir distintas faltas de ortografía de una palabra, devolvía resultados duplicados o poco realistas
- Ejemplo: al pedir distintas faltas de ortografía de
Calendar, generaba resultados repetitivos
- Problemas al generar títulos no relevantes
- Hubo casos en que no seguía correctamente las instrucciones al crear títulos de diseños nonrelevant
- Algunos títulos devueltos no incluían las palabras clave especificadas o incluso contenían simplemente
title string, entre otros resultados incorrectos
Ejecutar la evaluación: pruebas y análisis en entorno local
- Uso del dataset de evaluación
- El dataset sintético generado se aplicó al pipeline de búsqueda para obtener métricas de evaluación
- Tras explorar varios métodos de ejecución, se adoptó una ejecución local usando Testcontainers
- Pipeline local basado en Testcontainers
- Aprovechar el soporte existente de Testcontainer
- La arquitectura RPC orientada a servicios de Canva ya tenía implementado soporte para Testcontainer
- Se construyó el pipeline combinando componentes externos como Elasticsearch con Testcontainers internos
- Reproducción completa de la configuración de producción
- Al ejecutar localmente el pipeline de búsqueda y los modelos de ML de soporte, se configuró un entorno idéntico al de producción
- Los ingenieros podían experimentar con distintas variantes de modelos
- Proceso de manejo de casos de prueba
- Crear el estado necesario para cada caso de prueba
- En lugar de generar diseños de Canva, solo se extraían e insertaban los datos necesarios para el índice de búsqueda
- Ejecutar el pipeline de búsqueda local
- Se ejecutaba el dataset junto con las consultas de prueba para producir resultados de búsqueda
- Enviar los resultados al módulo de evaluación
- Se calculaban métricas de recall y precision
- Diagrama de flujo de datos
- Se proporcionó un diagrama que muestra visualmente el flujo completo de procesamiento de datos a través de la herramienta de evaluación
Visualizar los resultados
- Desarrollo de una herramienta de visualización
- Se creó una herramienta personalizada basada en Streamlit para visualizar y comparar eficazmente los resultados de evaluación
- Los ingenieros podían comparar de un vistazo las métricas de recall y precision entre distintas configuraciones
- Funciones principales
- Comparación por configuración
- Agrega resultados para comparar lado a lado el rendimiento de distintos ajustes
- Desglose del rendimiento por tipo de consulta y dificultad
- Permite analizar por separado el rendimiento según el tipo o la dificultad de una consulta específica
- Depuración de consultas individuales
- Permite revisar la salida de cada consulta para depurar con precisión casos de uso específicos
- Apoyo para decisiones rápidas
- Una vez terminada la evaluación, la herramienta se ejecuta de inmediato y ayuda a los ingenieros a tomar decisiones rápidamente en función de los resultados
- Los ingenieros pueden iterar y mejorar de manera independiente sin depender del trabajo de otros miembros del equipo
Impacto y planes a futuro
- ¿Qué tan cerca estuvieron del estado ideal?
- El dataset de evaluación y la herramienta ofrecen reproducibilidad completa y generan resultados en cuestión de minutos
- Los ingenieros pueden evaluar localmente de forma independiente y objetiva resultados alineados con el comportamiento en producción
- Se garantiza completamente la privacidad sin revisar en absoluto los diseños ni las consultas de los clientes
- Resumen de resultados
- Iteración rápida
- Se procesan más de 1000 casos de prueba en menos de 10 minutos
- Durante el periodo de 2 a 3 días que requiere un experimento online, se pueden realizar más de 300 evaluaciones offline
- Correlación entre resultados offline y online
- Los resultados offline están diseñados para descartar ideas inadecuadas y permitir que solo los cambios con alta probabilidad de éxito pasen a experimentos online
- Durante el desarrollo se realizaron varios experimentos para verificar la sincronización entre resultados offline y online
- Se confirmó una fuerte consistencia tanto en cambios positivos como negativos del rendimiento
- Capacidades de depuración local
- Se ofrece soporte de depuración para observar el flujo de los casos de prueba a través de cada componente del pipeline de búsqueda
- Es mucho más eficiente que el método anterior de depuración, que dependía de logs de producción
- Planes a futuro
- Expandir el dataset
- Agregar funciones más realistas, como el grafo de colaboración
- Mejorar las herramientas
- Fortalecer el tooling para que los ingenieros puedan generar datos sintéticos personalizados según sus necesidades
- Maximizar el uso de IA generativa
- Seguir aprovechando las posibilidades que ofrecen los datos sintéticos para mejorar la herramienta de búsqueda de Canva y brindar la mejor experiencia posible a la comunidad
Aún no hay comentarios.