El almacenamiento en caché de instrucciones es una forma de almacenar y luego reutilizar las respuestas generadas a partir de instrucciones ejecutadas cuando se trabaja con modelos de lenguaje como los modelos IBM Granite. Si se vuelve a encontrar la misma entrada (instrucción), en lugar de realizar una nueva llamada a la API, la aplicación recuperará la respuesta previamente almacenada en la caché de instrucciones.
Piense en el almacenamiento en caché de instrucciones como una especie de "memoria" para su aplicación. El sistema conserva los resultados de consultas anteriores para ahorrar tiempo de cálculo al no tener que realizar solicitudes repetidas contra la misma entrada.
El almacenamiento en caché de instrucciones es importante porque evita las llamadas repetidas a la interfaz de programación de aplicaciones (API) reutilizando las respuestas existentes para prompts repetidos idénticos. Esta capacidad se traduce en un tiempo de respuesta más rápido, un resultado coherente y un menor uso de la API, lo que es útil para mantenerse dentro de los límites de velocidad. También ayuda a escalar el flujo y crear resiliencia durante las interrupciones. El almacenamiento en caché de instrucciones es una característica crítica que añade valor a cualquier aplicación de IA eficiente, rentable y fácil de usar.
Necesita una cuenta de IBM Cloud para crear un proyecto watsonx.ai .
También necesita la versión 3.12.7 de Python
Aunque puede elegir entre varias herramientas, este tutorial le muestra cómo configurar una cuenta de IBM para utilizar un Jupyter Notebook.
Inicie sesión en watsonx.ai utilizando su cuenta de IBM Cloud.
Cree un proyecto watsonx.ai. Puede obtener el ID de su proyecto desde su proyecto. Haga clic en la pestaña Administrar. A continuación, copie el ID del proyecto de la sección Detalles de la página General. Necesita este ID para este tutorial.
Cree un Jupyter Notebook. Este paso abre un entorno de Jupyter Notebook donde puede copiar el código de este tutorial. También puede descargar este cuaderno en su sistema local y cargarlo en su proyecto watsonx.ai como activo. Para ver más tutoriales de Granite, consulte la comunidad de IBM Granite.
Cree una instancia de servicio watsonx.ai Runtime (elija el plan Lite, que es una instancia gratuita).
Genere una clave de API.
Asocie la instancia del servicio watsonx.ai Runtime al proyecto que ha creado en watsonx.ai.
Necesitamos bibliotecas para trabajar con Langchain marco y WatsonxLLM. Primero instalemos los paquetes necesarios. Este tutorial se ha creado con Python 3.12.7
Nota: Si está utilizando una versión anterior de pip, puede usar el comando pip install --upgrade pip para instalar fácilmente los últimos paquetes que podrían no ser compatibles con versiones anteriores. Pero si ya está utilizando la última versión o ha actualizado recientemente sus paquetes, puede omitir este comando.
os module se utiliza para acceder a variables de entorno, como credenciales de proyecto o claves API.
WatsonxLLM es un módulo de langchain_ibm que integra IBM® watsonx LLM para generar resultados a partir de modelos de IA generativa.
ChatWatsonx permite interacciones basadas en chat utilizando IBM watsonx a través de LangChain.
SimpleDirectoryReader sirve para cargar y leer documentos de un directorio para indexarlos con LlamaIndex.
GenParams contiene claves de metadatos para configurar los parámetros de generación de texto de watsonx.
SQLiteCache permite configurar una base de datos SQLite local.cache.db para evitar llamadas API redundantes y acelerar el desarrollo y las pruebas.
Necesitamos unas pocas bibliotecas y módulos para este tutorial. Asegúrese de importar los siguientes y, si no están instalados, una instalación rápida de pip resuelve el problema.
Este código configura las credenciales para acceder a la API de IBM® watsonx Machine Learning (WML) y ayuda a garantizar que el ID del proyecto esté configurado correctamente.
Este código inicializa IBM watsonx LLM para su uso en la aplicación:
Para obtener más información sobre los parámetros del modelo, como los límites mínimo y máximo de tokens, consulte la documentación.
SQLiteCache es una herramienta de almacenamiento en caché persistente ofrecida por LangChain que almacena las respuestas de las llamadas LLM en un archivo de base de datos SQLite. SQLiteCache reduce de forma inteligente el tiempo de CPU almacenando cálculos costosos, lo que significa que se centra en recuperar datos en lugar de recalcularlos. En lugar de volver a realizar todo el proceso, simplemente extrae los resultados del disco, lo que lo hace eficiente, fiable y reutilizable.
La figura ilustra con el almacenamiento en caché de instrucciones, cómo los resultados se cargan instantáneamente desde el disco; sin él, cada consulta pierde tiempo en cálculos redundantes.
En este caso, la CPU solo funcionó durante 22 ms, pero el tiempo transcurrido real fue de 1,43 segundos.
Este ejemplo sugiere que la mayor parte del tiempo se dedicó a esperar, probablemente para operaciones de E/S (por ejemplo, lectura y escritura de disco, acceso a la red o llamada a la API)
Ahora, ejecutemos el modelo por segunda vez con la instrucción y veamos el tiempo de respuesta.
Claramente, con SQLiteCache, la CPU se utiliza durante solo 7,26 ms, pero el tiempo real fue de 6,15 segundos.
Esto apunta claramente al bloqueo de dependencias externas (como esperar una respuesta de un servidor).
El almacenamiento en caché de instrucciones acelera y reduce el coste de las solicitudes de API a modelos de lenguaje de gran tamaño, como GPT-4o. Solicita contenido en caché, como tokens de entrada, tokens de salida, embeddings y mensajes del usuario, un prompt del sistema o la salida de una función, que ahora utiliza un contenido almacenado en caché en lugar de solicitudes de red para una nueva revisión. Este método proporciona precios más bajos, una mejor latencia de respuesta y mejores indicadores clave de rendimiento (KPI).
El almacenamiento en caché de instrucciones puede ser beneficioso para chatbots, sistemas RAG, fine-tuning y asistentes de código. Una estrategia de almacenamiento en caché sólida que incluya funciones como lectura de caché, escritura de caché, mensaje del sistema, control de caché y tiempo de vida adecuado (TTL) mejorará las tasas de aciertos de caché y reducirá las tasas de errores de caché.
El uso consistente de los mismos tokens de instrucción, prefijo de instrucción y uso de instrucciones del sistema ayuda con el rendimiento consistente de la instrucción en conversaciones multiturno y solicitudes posteriores. Independientemente de utilizar Python, un SDK o trabajar con OpenAI u otro proveedor, comprender cómo funciona el almacenamiento en caché de instrucciones le permitirá implementar mejor el almacenamiento en caché de instrucciones para su uso en muchos casos de uso.