La misión de NinjaTech AI es hacer que todos sean más productivos al encargarse de tareas complejas que consumen mucho tiempo con agentes de inteligencia artificial (IA) rápidos y asequibles. Recientemente lanzamos MyNinja.ai, uno de los primeros asistentes personales de IA con múltiples agentes del mundo, para avanzar hacia nuestra misión. MyNinja.ai se ha creado desde cero con agentes especializados que son capaces de completar tareas en tu nombre, como programar reuniones, realizar investigaciones exhaustivas desde la web, generar código y ayudarte a escribir. Estos agentes pueden dividir tareas complicadas de varios pasos en soluciones ramificadas y son capaces de evaluar las soluciones generadas de forma dinámica y, al mismo tiempo, aprender continuamente de las experiencias pasadas. Todas estas tareas se llevan a cabo de forma totalmente autónoma y asincrónica, lo que te permite continuar con tu día mientras Ninja trabaja en estas tareas en segundo plano y participar cuando se requiere tu participación.

Como ningún modelo de lenguaje extenso (LLM) es perfecto para cada tarea, sabíamos que crear un asistente personal de IA requeriría varios LLM optimizados específicamente para una variedad de tareas. Con el fin de ofrecer la precisión y las capacidades necesarias para satisfacer a nuestros usuarios, también sabíamos que necesitaríamos que estos múltiples modelos funcionaran en conjunto. Por último, necesitábamos métodos escalables y rentables para entrenar estos distintos modelos, una tarea que históricamente ha sido costosa para la mayoría de las empresas emergentes. En esta publicación, describimos cómo creamos nuestro innovador agente de productividad NinjalLM, la columna vertebral de MyNinja.ai, utilizando AWS Trainium patatas fritas.
Creación de un conjunto de datos
Desde el principio nos dimos cuenta de que, para cumplir con la misión de abordar las tareas en nombre de un usuario, necesitábamos varios modelos optimizados para tareas específicas. Algunos ejemplos son nuestros modelos Deep Researcher, Deep Coder y Advisor. Tras probar los modelos de código abierto disponibles, nos dimos cuenta de que las capacidades y respuestas listas para usar no bastaban con una ingeniería rápida para satisfacer nuestras necesidades. Concretamente, en nuestras pruebas con modelos de código abierto, queríamos asegurarnos de que cada modelo estaba optimizado para adaptarse a las instrucciones del estilo React-Chain-of-Thought. Además, queríamos asegurarnos de que el modelo lo hiciera, cuando se implementara como parte de un Generación aumentada de recuperación (RAG), cita con precisión cada fuente, así como cualquier sesgo hacia decir «no sé» en lugar de generar respuestas falsas. Para ello, optamos por ajustar los modelos para las diversas tareas posteriores.
Al crear nuestro conjunto de datos de capacitación, nuestro objetivo era doble: adaptar cada modelo a su tarea y persona posteriores adecuadas (investigador, asesor, programador, etc.) y adaptar los modelos para que siguieran una estructura de resultados específica. Con ese fin, seguimos el Enfoque de Lima para un ajuste fino. Usamos una muestra de entrenamiento de aproximadamente 20 millones de fichas, centrándonos en el formato y el tono del resultado, mientras que utilizamos un tamaño de muestra diverso pero relativamente pequeño. Para crear nuestro conjunto de datos supervisado de ajustes detallados, empezamos por crear las tareas iniciales para cada modelo. Con estas tareas iniciales, generamos un conjunto de datos sintético inicial utilizando el modelo Llama 2 de Meta. Pudimos usar el conjunto de datos sintético para realizar una ronda inicial de ajustes. Para evaluar inicialmente el rendimiento de este modelo perfeccionado, recabamos los comentarios de los usuarios de forma colaborativa para crear más muestras de forma iterativa. También utilizamos una serie de puntos de referencia (internos y públicos) para evaluar el rendimiento del modelo y seguimos realizando iteraciones.
Puesta a punto en Trainium
Elegimos comenzar con los modelos de Llama para un modelo base previamente entrenado por varias razones: entre las que destacan el excelente rendimiento listo para usar, el sólido soporte del ecosistema por parte de varias bibliotecas y la licencia verdaderamente permisiva y de código abierto. En aquel momento, empezamos con Llama 2, realizando pruebas en varios tamaños (7B, 13B y 70B). Para la formación, optamos por utilizar un clúster de instancias de tamaño 1.32xlarge para aprovechar las ventajas de los chips Trainium. Usamos un clúster de 32 instancias para paralelizar el entrenamiento de manera eficiente. También utilizamos Clúster paralelo de AWS para gestionar la orquestación de clústeres. Al usar un clúster de instancias de Trainium, cada iteración de ajuste tardó menos de 3 horas, con un coste inferior a 1000$. Este rápido tiempo de iteración y este bajo costo nos permitieron ajustar y probar rápidamente nuestros modelos y mejorar la precisión de nuestros modelos. Para lograr la precisión que se describe en las siguientes secciones, solo tuvimos que gastar alrededor de 30 000 dólares, lo que nos permitió ahorrar cientos de miles, si no millones, de dólares si no tuvimos que formarnos con aceleradores de entrenamiento tradicionales.
El siguiente diagrama ilustra nuestra arquitectura de formación.

Una vez que establecimos nuestros canales de ajuste detallados basados en Trainium, pudimos ajustar y refinar nuestros modelos gracias a las bibliotecas de capacitación distribuidas de Neuron. Esto resultó excepcionalmente útil y oportuno, ya que, antes del lanzamiento de MyNinja.ai, ya se habían lanzado los modelos Llama 3 de Meta. Llama 3 y Llama 2 comparten una arquitectura similar, por lo que pudimos actualizarnos rápidamente al modelo más nuevo. Esta velocidad de cambio nos permitió aprovechar las mejoras inherentes a la precisión de los modelos y realizar rápidamente otra ronda de ajustes con las pesas del Llama 3 y prepararnos para el lanzamiento.
Evaluación del modelo
Para evaluar el modelo, había dos objetivos: evaluar la capacidad del modelo para responder a las preguntas de los usuarios y evaluar la capacidad del sistema para responder a las preguntas con las fuentes proporcionadas, porque esta es la interfaz principal de nuestro asistente personal de IA. Hemos seleccionado el Hotpot QA y Preguntas naturales (NQ) Abierto conjuntos de datos, los cuales son una buena opción debido a sus conjuntos de datos de evaluación comparativa abiertos con tablas de clasificación públicas.
Calculamos la precisión haciendo coincidir la respuesta del modelo con la respuesta esperada, utilizando los 10 pasajes principales recuperados de un corpus de Wikipedia. Realizamos el filtrado y la clasificación del contenido utilizando Colbert TV 2, un modelo de recuperación basado en Bert. Logramos una precisión del 62,22% en el conjunto de datos de NQ Open y del 58,84% en HotpotQA mediante el uso de nuestro modelo RAG Llama 3 mejorado, lo que demuestra mejoras notables con respecto a otros modelos de referencia. La siguiente figura resume nuestros resultados.

Trabajo futuro
De cara al futuro, estamos trabajando en varios desarrollos para seguir mejorando el rendimiento y la experiencia de usuario de nuestro modelo. En primer lugar, tenemos la intención de utilizar ORPO para afinar nuestros modelos. ORPO combina el ajuste fino tradicional con la alineación de preferencias, al tiempo que utiliza un único conjunto de datos de alineación de preferencias para ambos. Creemos que esto nos permitirá alinear mejor los modelos para lograr mejores resultados para los usuarios.
Además, tenemos la intención de crear un modelo de conjunto personalizado a partir de los distintos modelos que hemos perfeccionado hasta ahora. Inspirándonos en las arquitecturas de modelos Mixture of Expert (MoE), pretendemos introducir una capa de enrutamiento en nuestros distintos modelos. Creemos que esto simplificará radicalmente nuestra arquitectura de distribución y escalado de modelos y, al mismo tiempo, mantendrá la calidad en diversas tareas que nuestros usuarios esperan de nuestro asistente personal de inteligencia artificial.
Conclusión
Crear agentes de IA de próxima generación para que todos sean más productivos es el camino de NinjaTech AI para lograr su misión. Para democratizar el acceso a esta tecnología transformadora, es fundamental tener acceso a una computación de alta potencia, modelos de código abierto y un ecosistema de herramientas que hagan que la capacitación de cada nuevo agente sea asequible y rápida. Esto es posible gracias a los chips de IA diseñados específicamente por AWS, al acceso a los principales modelos de código abierto y a su arquitectura de formación.
Para obtener más información sobre cómo creamos la IA personal multiagente de NinjaTech AI, puedes leer nuestro documento técnico. También puedes probar estos agentes de IA de forma gratuita en MyNinja.ai.
Acerca de los autores

Arash Sadrieh es cofundador y director científico de Ninjatech.ai. Arash cofundó Ninjatech.ai con la visión de hacer que todos fueran más productivos al encargarse de tareas que consumen mucho tiempo con agentes de inteligencia artificial. Esta visión se forjó durante su mandato como científico aplicado sénior en AWS, donde impulsó iniciativas de investigación clave que mejoraron significativamente la eficiencia de la infraestructura durante seis años, lo que le valió varias patentes para optimizar la infraestructura principal. Su formación académica incluye un doctorado en modelado y simulación por ordenador, con colaboraciones con prestigiosas instituciones como la Universidad de Oxford, la Universidad de Sídney y el CSIRO. Antes de trabajar en la industria, Arash tuvo un período de investigación posdoctoral caracterizado por publicaciones en revistas de alto impacto, incluida Nature Communications.

Tahir Azim es ingeniero de software de plantilla en NinjaTech. Tahir se centra en las plataformas de entrenamiento e inferencia basadas en Inf2 y Trn1 de NinjaTech, en su portal unificado para acceder a estas plataformas y en su habilidad de investigación basada en RAG. Anteriormente trabajó en Amazon como ingeniero de software sénior, creando sistemas basados en datos para utilizar de forma óptima la infraestructura perimetral global de Internet de Amazon, reduciendo los costes, la congestión y la latencia. Antes de dedicarse a la industria, Tahir obtuvo una maestría y un doctorado en Ciencias de la Computación en la Universidad de Stanford, enseñó durante tres años como profesor adjunto en la NUST (Pakistán) y realizó un posdoctorado en sistemas rápidos de análisis de datos en la EPFL. Tahir es autor de varias publicaciones presentadas en conferencias de primer nivel, como VLDB, USENIX ATC, MobiCom y MobiHoc.

Tengfei Xue es científico aplicado en NinjaTech AI. Sus intereses de investigación actuales incluyen el procesamiento del lenguaje natural y el aprendizaje multimodal, particularmente utilizando grandes modelos lingüísticos y grandes modelos multimodales. Tengfei completó sus estudios de doctorado en la Escuela de Ciencias de la Computación de la Universidad de Sídney, donde se centró en el aprendizaje profundo para la atención médica mediante diversas modalidades. También fue doctorando visitante en el Laboratorio de Matemáticas en Imagen (LMI) de la Universidad de Harvard, donde trabajó en la visión artificial 3D de datos geométricos complejos.



