Este artículo es parte de nuestra cobertura de lo último en investigación de IA.
Los modelos de lenguaje grande (LLM) como ChatGPT y GPT-4 son muy convenientes. Puede hacer que hagan cosas impresionantes con unas pocas llamadas a la API. Cada llamada a la API tiene un costo marginal y puede armar pruebas de conceptos y ejemplos de trabajo en poco tiempo.
Sin embargo, cuando se utilizan LLM para aplicaciones reales que envían miles de llamadas API por día, los costos pueden acumularse rápidamente. Puede terminar pagando miles de dólares por mes para realizar tareas que de otro modo requerirían una fracción del dinero.
Un estudio reciente realizado por investigadores de la Universidad de Stanford muestra que puede reducir considerablemente los costos de usar GPT-4, ChatGPT y otras API de LLM. En un documento titulado «FrugalGPT», presentan varias técnicas para reducir los costos de las API de LLM hasta en un 98 por ciento mientras preservan o incluso mejoran su rendimiento.
¿Qué API de modelo de lenguaje debería usar?
GPT-4 es posiblemente el modelo de lenguaje grande más capaz. Pero también es el más caro. Y los costos solo aumentan a medida que su solicitud se vuelve más larga. En muchos casos, puede encontrar otro modelo de lenguaje, proveedor de API o incluso aviso que pueda reducir los costos de inferencia. Por ejemplo, OpenAI proporciona una amplia gama de modelos, cuyos costos oscilan entre $0,0004 y $0,12 por cada 1000 tokens, una diferencia de 300x. Además, puede probar otros proveedores como AI21 Labs, Cohere y Textsynth para conocer otras opciones de precios.
Afortunadamente, la mayoría de los servicios de API tienen interfaces similares. Con un poco de esfuerzo, puede crear una capa de abstracción que se puede aplicar a diferentes API sin problemas. De hecho, las bibliotecas de Python como LangChain ya han hecho la mayor parte del trabajo por usted. Sin embargo, sin un enfoque sistemático para seleccionar el LLM más eficiente para cada tarea, tendrá que elegir entre calidad y costos.
En su artículo, los investigadores de la Universidad de Stanford proponen un enfoque que mantiene los costos de API LLM dentro de una restricción presupuestaria. Para lograrlo, proponen tres estrategias: adaptación rápida, aproximación LLM y cascada LLM. Si bien estas técnicas no se han aplicado en entornos de producción, las pruebas iniciales muestran resultados prometedores.
Adaptación rápida
Todas las API LLM tienen un modelo de precios que es una función de la duración de la solicitud. Por lo tanto, la forma más sencilla de reducir los costos del uso de la API es acortar las indicaciones. Hay varias formas de hacerlo.
Para muchas tareas, los LLM requieren indicaciones de pocas tomas. Esto significa que para mejorar el rendimiento del modelo, debe anteponer su mensaje con algunos ejemplos, generalmente en el formato de mensaje->respuesta. Los marcos como LangChain brindan herramientas que le permiten crear plantillas que incluyen ejemplos de pocas tomas.
Dado que los LLM admiten contextos cada vez más largos, los desarrolladores a veces tienden a crear plantillas muy grandes de pocas tomas para mejorar la precisión del modelo. Sin embargo, el modelo podría no necesitar tantos ejemplos.
Los investigadores proponen una «selección rápida», donde reduce la cantidad de ejemplos de pocas tomas a una cantidad mínima que preserva la calidad de salida. Incluso si puede eliminar 100 tokens de la plantilla, puede generar grandes ahorros cuando se usa muchas veces.
Otra técnica que proponen es la «concatenación de consultas», en la que se agrupan varios avisos en uno y el modelo genera varios resultados en una sola llamada. Una vez más, esto es especialmente efectivo cuando se utilizan indicaciones de pocos intentos. Si envía sus preguntas de una en una, deberá incluir los ejemplos de pocas tomas con cada indicación. Pero si concatena sus indicaciones, solo necesitará enviar el contexto una vez y obtener varias respuestas en la salida.
Un consejo que agregaría es optimizar los documentos de contexto. Para algunas aplicaciones, el LLM de vainilla no tendrá el conocimiento para proporcionar las respuestas correctas a las consultas de los usuarios. Un método popular para abordar esta brecha es el aumento de recuperación. Aquí tiene un conjunto de documentos (archivos PDF, páginas de documentación, etc.) que contienen el conocimiento para su aplicación. Cuando el usuario envía un aviso, encuentra el documento más relevante y lo antepone al aviso como contexto antes de enviarlo al LLM. De esta forma, condicionas el modelo para que responda al usuario en función del conocimiento del documento.
Este es un método muy eficaz para abordar el problema de las alucinaciones de ChatGPT y personalizarlo para sus propias aplicaciones. Pero también puede aumentar el tamaño de las indicaciones. Puede reducir los costos del aumento de la recuperación experimentando con fragmentos de contexto más pequeños.
aproximación LLM
Otra solución para abaratar costes es reducir el número de llamadas API realizadas al LLM. Los investigadores proponen aproximarse a los LLM costosos «utilizando modelos o infraestructura más asequibles».
Un método para aproximar los LLM es el «caché de finalización», en el que almacena las indicaciones y respuestas del LLM en un servidor intermedio. Si un usuario envía una solicitud que es idéntica o similar a una solicitud previamente almacenada en caché, recupera la respuesta almacenada en caché en lugar de volver a consultar el modelo. Si bien la implementación de la caché de finalización es fácil, tiene algunas desventajas importantes. Primero, reduce la creatividad y las variaciones de la respuesta del LLM. En segundo lugar, su aplicabilidad dependerá de cuán similares sean las consultas de los usuarios. En tercer lugar, la memoria caché puede llegar a ser muy grande si las indicaciones y respuestas almacenadas son muy diversas. Finalmente, si la salida del LLM depende del contexto del usuario, el almacenamiento en caché de las respuestas no será muy eficiente.
Los investigadores de Stanford proponen el “ajuste fino del modelo” como otro método de aproximación. En este caso, recopila una colección de pares de respuesta rápida de un LLM poderoso y costoso como ChatGPT o GPT-4. Luego, utiliza estas respuestas para ajustar un modelo más pequeño y asequible, posiblemente un LLM de código abierto que se ejecuta en sus propios servidores. Alternativamente, puede ajustar un modelo en línea más asequible (por ejemplo, GPT-3 Ada o Babbage) con los datos recopilados.
Este enfoque, a veces denominado «imitación de modelo», es un método viable para aproximar las capacidades del modelo más grande, pero también tiene límites. En particular, se ha observado que los LLM pequeños entrenados en la imitación de modelos imitan el estilo del modelo más grande sin adquirir su conocimiento. Por lo tanto, la precisión del modelo cae.
cascada LLM
Una solución más compleja es crear un sistema que seleccione la mejor API para cada solicitud. En lugar de enviar todo a GPT-4, el sistema se puede optimizar para elegir el LLM más económico que pueda responder a la solicitud del usuario. Esto puede resultar tanto en la reducción de costos como en la mejora del rendimiento.
Los investigadores proponen un método llamado «cascada de LLM» que funciona de la siguiente manera: la aplicación realiza un seguimiento de una lista de API de LLM que van desde simples/económicas hasta complejas/costosas. Cuando la aplicación recibe un nuevo mensaje, comienza enviándolo al modelo más simple. Si la respuesta es fiable, se detiene y se la devuelve al usuario. Si no, continúa por la cascada y consulta el siguiente modelo de lenguaje. Si obtiene respuestas confiables al principio de la canalización, reducirá considerablemente los costos de su aplicación.
Sin embargo, hay algunas trampas. Primero, si su aplicación es demasiado complicada para los modelos más pequeños, agregará una sobrecarga innecesaria que aumentará los costos y reducirá el rendimiento.
El otro desafío es crear un sistema que pueda determinar la calidad y confiabilidad del resultado de un LLM. Los investigadores sugieren entrenar un modelo de regresión que determine si una generación es correcta a partir de la consulta y la respuesta generada. Esto agrega complejidad adicional y requiere un esfuerzo inicial del equipo de desarrollo para probar cada una de las API de LLM en una variedad de indicaciones que representan el tipo de consultas que recibe su aplicación. También queda por ver qué tan práctico es en entornos de producción reales.
Otra solución es combinar diferentes estrategias para crear una cascada LLM más eficiente (aunque más compleja). Por ejemplo, los investigadores proponen una «selección conjunta de indicaciones y LLM» para seleccionar la indicación más pequeña y el LLM más asequible que pueda lograr un desempeño satisfactorio de la tarea.
FrugalGPT
Los investigadores implementaron la estrategia en cascada de LLM con FrugalGPT, un sistema que utiliza 12 API diferentes de OpenAI, Cohere, AI21 Labs, Textsynth y ForeFrontAI.
Probaron FrugalGPT con varios puntos de referencia de lenguaje natural. Sus resultados iniciales muestran que pudieron reducir los costos en órdenes de magnitud y, a veces, mejorar el rendimiento.
Los investigadores escriben: “FrugalGPT permite realizar compensaciones fluidas entre rendimiento y costo en todos los conjuntos de datos evaluados. Esto ofrece opciones flexibles a los usuarios de LLM y potencialmente ayuda a los proveedores de API de LLM a ahorrar energía y reducir las emisiones de carbono. De hecho, FrugalGPT puede reducir costos y mejorar la precisión simultáneamente”.
Vale la pena señalar que las pruebas comparativas no son necesariamente indicadores precisos de cómo se desempeñará un modelo en aplicaciones del mundo real. Los investigadores también señalan que el enfoque tiene algunas limitaciones, incluida la necesidad de datos etiquetados y recursos informáticos para entrenar al evaluador de respuestas de FrugalGPT. “Vemos esto como una [sic] costo inicial único; esto es beneficioso cuando el conjunto de datos de consulta final es más grande que los datos utilizados para entrenar la cascada”, escriben los investigadores.
Pero proporciona direcciones interesantes para explorar en aplicaciones LLM. Si bien este trabajo se enfoca en los costos, se pueden usar enfoques similares para otras preocupaciones, como la criticidad del riesgo, la latencia y la privacidad. “La evolución continua de los LLM y sus aplicaciones inevitablemente revelará nuevos desafíos y oportunidades, fomentando una mayor investigación y desarrollo en este campo dinámico”, escriben los investigadores.