Proyecto Treehacks 2024. Desplácese hacia abajo para más detalles.
| Sección | Descripción |
|---|---|
| Aplicación Vision OS | Instrucciones para descargar y extraer el archivo VisionMama.zip para la aplicación Vision OS. |
| Pipeline de agente de IA para generación de recetas, búsqueda de alimentos y pedidos de Instacart | Detalles sobre la tubería de la solicitud de alimentos de un usuario para generar una receta, identificar ingredientes, encontrar ubicaciones de compra y crear un pedido de Instacart. Utiliza un Mistral-7B LLM, GPT-4-TURBO, API SERP y un algoritmo de clasificación sofisticado. |
| Pre-entrenamiento | Información sobre la preparación del conjunto de datos, el proceso de pre-entrenamiento y la toma de decisiones con respecto al uso de un modelo Mistral-7B sintonizado. |
| Sintonia FINA | Describe el ajuste fino de Lora de Mistral-7B con 250k recetas, configuraciones utilizadas e impacto en el tamaño del conjunto de datos en el rendimiento. |
| Reflex.dev agente de chat web | Uso de Reflex.dev para crear una interfaz de chat para interactuar con el agente de IA, incluidos los desencadenantes para la generación de recetas y la identificación de ingredientes. |
| Intersystems Iris Vector Database para descubrimiento de recetas semánticas | Uso de la base de datos de Iris Vector para incrustaciones de recetas y búsquedas semánticas basadas en entradas de "VIBE" del usuario. |
En el archivo visionmama.zip, descargue y extraiga esto
Construimos un punto final que golpeamos desde nuestro Vision Pro y nuestro sitio reflejo. Básicamente, lo que sucede es que enviamos la comida deseada de un usuario, como "sopa de plátano". Lo transmitimos a nuestro Mistral-7B LLM sintonizado para generar una receta. Luego, usamos rápidamente GPT-4-TURBO para analizar la receta y extraer los ingredientes. Luego usamos la API SERP en cada ingrediente para encontrar dónde se puede comprar cerca. Priorizamos ingredientes más baratos y usamos un algoritmo para tratar de visitar la menor cantidad de tiendas para comprar todos los ingredientes. Finalmente, pueblamos una llamada API de Orden de Instacart para comprar los ingredientes (simulados por ahora ya que no tenemos acceso de socio real a la API de Instacart)
Encontramos un conjunto de datos en línea de 250,000 recetas. Los preprocesamos y los dividimos y los tocamos para que se realizaran previamente. Utilizamos el tokenizador de codificación de par de bytes GPT2. Entrenamos en nuestro parámetro de 40m LLM utilizando la implementación modificada de nanogpt, no tuvimos tiempo para descubrir cómo implementar el LLM, por lo que fuimos con nuestro modelo Mistral-7B afinado (que también funcionó mejor). Más detalles sobre nuestro Devpost.
Lora nos ajustamos a Mistral-7B utilizando la plataforma en línea de Monsterapi: Monsterapi.ai. (¡Gracias al equipo por darnos créditos gratuitos!) Configuración: una época, Lora R = 8, Lora Alpha = 16, abandono = 0, sesgo = ninguno, pasos de acumulación de gradiente = 32, LR = 0.0002, pasos de calentamiento = 100
Antes de ajustar, preparamos 250k recetas que obtuvimos de en línea en un formato de instrucción estándar usando este script: preparerecipesforfinetuning.py El formato es: usted es un chef experto. Sabes sobre muchas cocinas diversas. Escribe recetas sabrosas útiles.
También bajamos todas las indicaciones y terminaciones. Experimentamos con el ajuste con recetas de 10k, 50k y 250k. Observamos que usar más datos condujo a una menor pérdida, pero a rendimientos decrecientes. Implementamos nuestro Mistral-7B (250k ejemplos) ajustado utilizando Monsterapi.ai, el script Finetuned-Mistral7b-Monsterapi.py demuestra cómo llamamos al modelo ajustado, así como procesamos la salida en un formato estandarizado utilizando métodos de procesamiento REGEX y String.
Utilizamos Reflex.dev, que es como React pero completamente en Python, para crear una interfaz de chat simple para interactuar con nuestro agente, porque la mayoría de las personas no tienen una Vision Pro. Ejecutamos GPT-3.5-TURBO que es inmediato diseñado para proporcionar información nutricional al usuario si hacen una pregunta. However, if the user begins their chat message with "get me " and then an imaginary food, it triggers our AI agent pipeline which then calls our fine-tuned Mistral-7b to generate a recipe, GPT-4-turbo to process and extract ingredients from the recipe, and then Google Search via SERP API and a sophisticiated multiobjective ranking algorithm to identify the cheapest and best ingredients from the minimal number of stores, y finalmente llena las llamadas API de Orden de Instacart . Lo alojamos en Reflex.dev, que fue fácil. ¡Acabamos de desplegar reflejos y poner en nuestra variable ENV desde el terminal! Gracias a Reflex.
Utilizamos la versión de acceso temprano de la base de datos de Iris Vector , ejecutándola en una Mac con Docker. Incrustamos 10,000 recetas únicas de diversas cocinas utilizando la incrustación Text-ADA-002 de Openai. Almacenamos los incrustaciones y las recetas en una base de datos de Iris Vector. Luego, dejamos que el usuario ingrese un "ambiente", como el "día de invierno de lluvia fría". Utilizamos Mistral-7B para generar tres indicaciones de incrustación de documentos hipotéticos (HYDE) en un formato estructurado. Luego consultamos el IRIS DB utilizando las tres indicaciones generadas por mistral. La clave aquí es que la búsqueda semántica regular no le permite buscar en VIBE de manera efectiva. Si realiza una búsqueda semántica en el "día de invierno de lluvia fría", es más probable que le brinde resultados relacionados con el frío o la lluvia, en lugar de los alimentos. Nuestra solicitud alienta a Mistral a comprender el ambiente de su aporte y convertirlo en mejores indicaciones de Hyde. Ejemplo real: Entrada del usuario: algo para un frío día de invierno Generado consultas de búsqueda: {'consultas': ['Recetas de platos de invierno de invierno', 'Recetas de comida reconfortante para días fríos', 'guisos y sopas abundantes para clima frío']}