El campo de la IA conversacional ha experimentado una transformación sustancial con la aparición de grandes modelos de lenguaje (LLM) como GPT-4, LaMDA, PaLM, LLAMA, CLAUDE y otros. Estos sofisticados modelos, basados en arquitecturas de transformadores, han redefinido las posibilidades del procesamiento del lenguaje natural, allanando el camino para un sinfín de aplicaciones tanto en el sector de consumo como en el empresarial. Sin embargo, a pesar de este avance, los LLM siguen teniendo una limitación importante: el tamaño de su ventana de contexto. Este cuello de botella restringe su capacidad para gestionar diálogos extensos y analizar documentos extensos con eficacia. Pero, ¿y si hubiera una forma de sortear esta limitación?

Tabla de contenidos

¿Qué es MemGPT?

MemGPT, acrónimo de Memory-GPT, es un sistema concebido para mejorar el rendimiento de los grandes modelos lingüísticos (LLM) mediante la introducción de un esquema de gestión de memoria más avanzado, que ayuda a superar los retos que plantean las ventanas de contexto fijas. A continuación se describen algunas de las principales características de MemGPT:

  1. Gestión de la memoria: MemGPT incorpora un sistema de memoria por niveles a un procesador LLM de contexto fijo, otorgándole la capacidad de gestionar su propia memoria. Al gestionar de forma inteligente los distintos niveles de memoria, amplía el contexto disponible dentro de la ventana de contexto limitada del LLM, lo que soluciona el problema de las ventanas de contexto limitadas, habitual en los modelos de lenguaje de gran tamaño.
  2. Gestión del contexto virtual: MemGPT introduce un método conocido como gestión de contexto virtual. Se trata de una característica clave que ayuda a gestionar las ventanas de contexto de los LLM.
  3. Inspirado en el sistema operativo: La arquitectura de MemGPT se inspira en los sistemas operativos tradicionales, especialmente en sus sistemas de memoria jerárquica que facilitan el movimiento de datos entre la memoria rápida y la lenta. Este enfoque permite una gestión eficaz de los recursos de memoria, similar a la forma en que los sistemas operativos proporcionan la ilusión de grandes recursos de memoria a las aplicaciones a través de la paginación de memoria virtual.
  4. Gestión de interrupciones: MemGPT emplea interrupciones para gestionar el flujo de control entre él mismo y el usuario, garantizando una interacción fluida y una gestión eficaz de la memoria durante las operaciones.
  5. Contexto conversacional ampliado: Mediante una gestión eficaz de la memoria, MemGPT facilita un contexto conversacional ampliado, permitiendo interacciones más largas y coherentes que superan las limitaciones impuestas por las ventanas de contexto de longitud fija.

En esencia, MemGPT representa un importante paso adelante en la utilización de grandes modelos lingüísticos, creando una vía para interacciones más eficaces y extendidas que se asemejan al discurso humano mediante la gestión inteligente de los recursos de memoria.

Para más información, puedes acceder al sitio web oficial aquí.

¿Cómo funciona MemGPT?

Imagina el sistema operativo de tu ordenador, que gestiona hábilmente las aplicaciones y los datos a través de la memoria RAM y el almacenamiento en disco, proporcionando un acceso fluido a los recursos más allá de los límites de la memoria física. MemGPT refleja este concepto trabajando con diferentes niveles de memoria dentro de un LLM. Incluye:

  1. Contexto principal: Análogo a la RAM, es el contexto inmediato con el que trabaja el procesador LLM durante la inferencia.
  2. Contexto externo: Similar a un disco duro, almacena información fuera del alcance directo del LLM, pero se puede acceder a ella cuando sea necesario.
  3. Interrupciones: Al igual que una interrupción del sistema operativo, MemGPT puede pausar y reanudar el procesador, gestionando el flujo de control con el usuario.

Esta arquitectura permite una gestión dinámica del contexto, permitiendo a la LLM recuperar datos históricos relevantes de forma similar a como un SO gestiona los fallos de página.

¿Qué problema resuelve MemGPT?

MemGPT aborda varios retos relacionados con el modelado lingüístico, en especial la mejora de las capacidades de los grandes modelos lingüísticos (LLM) existentes, como GPT-3. Estos son los principales problemas que resuelve:

  1. Retención del contexto a largo plazo: MemGPT introduce soluciones para gestionar el contexto a largo plazo, un obstáculo importante para avanzar en el modelado del lenguaje. Al gestionar eficazmente la memoria, puede retener y acceder a la información a lo largo de secuencias extensas, lo que resulta crucial para comprender y generar respuestas coherentes en conversaciones o documentos con muchas interacciones o textos largos.
  2. Gestión mejorada de la memoria: Emplea un sistema de memoria por niveles, funciones de transferencia de datos y control mediante interrupciones para gestionar la memoria de forma eficiente. Esta configuración mejora los LLM de contexto fijo, permitiéndoles gestionar con mayor eficacia tareas como el análisis de documentos y el chat multisesión, superando las limitaciones de contexto inherentes a los LLM modernos para mejorar el rendimiento y las interacciones con el usuario.
  3. Ventana de contexto ampliada: MemGPT amplía de forma efectiva la ventana de contexto de los LLM, permitiéndoles gestionar diferentes niveles de memoria de forma inteligente. Este contexto ampliado es crucial para que los LLM tengan una comprensión más profunda y generen respuestas más coherentes y contextualmente relevantes a lo largo de una serie de interacciones.
  4. Interacción mejorada con los chatbots: Al utilizar una jerarquía de memoria, MemGPT permite a los chatbots acceder y modificar información más allá de su limitada ventana de contexto, facilitando interacciones más significativas y prolongadas con los usuarios. Esta jerarquía de memoria permite al chatbot mover datos entre diferentes capas de memoria, garantizando que la información relevante esté fácilmente accesible cuando se necesite.

Gracias a estas soluciones, MemGPT acorta considerablemente la distancia entre la gestión de la memoria y la capacidad generativa en el modelado del lenguaje, allanando el camino para aplicaciones más sofisticadas en diversos dominios.

Comparación de las longitudes de contexto de los modelos / API más utilizados (datos recogidos 9/2023):

IA conversacional

Cómo instalar MemGPT

pip install pymemgpt

export OPENAI_API_KEY=YOUR_API_KEY # on Linux/Mac
set OPENAI_API_KEY=YOUR_API_KEY # on Windows
$Env:OPENAI_API_KEY = «YOUR_API_KEY» # on Windows (PowerShell)

Configura el ajuste por defecto para MemGPT ejecutando:

memgpt configure

Ahora, puedes ejecutar MemGPT con:

memgpt run

La orden de ejecución admite los siguientes indicadores opcionales (si están activados, anulan los valores predeterminados de configuración):

  • –agent: (str) Nombre del agente a crear o con el que reanudar el chat.
  • –human: (str) Nombre del humano con el que ejecutar el agente.
  • –persona: (str) Nombre de la persona del agente a utilizar.
  • –model: (str) Modelo LLM a ejecutar [gpt-4, gpt-3.5].
  • –preset: (str) MemGPT preset para ejecutar el agente.
  • –first: (str) Permitir al usuario enviar el primer mensaje.
  • –debug: (bool) Mostrar logs de depuración (por defecto=False)
  • –no-verify: (bool) Saltar la verificación de mensajes (por defecto=False)
  • –yes/-y: (bool) Omitir el mensaje de confirmación y utilizar los valores predeterminados (por defecto=False)

Puedes ejecutar los siguientes comandos en el indicador CLI de MemGPT:

  • /salir: Salir de la CLI
  • /attach: Adjunta una fuente de datos cargada al agente
  • /save: Guardar un punto de control del estado actual del agente/conversación.
  • /dump: Ver el registro de mensajes actual (ver el contenido del contexto principal)
  • /memory: Imprime el contenido actual de la memoria del agente
  • /pop: Deshacer el último mensaje de la conversación
  • /heartbeat: Envía un mensaje de sistema heartbeat al agente
  • /memorywarning: Envía un mensaje de aviso de memoria al agente
  • Puedes encontrar más información en la página oficial de GitHub.

Configuración de MemGPT para OpenAI

Matthew Berman ha elaborado una magnífica revisión del trabajo de investigación original sobre MemGPT y la configuración inicial para los usuarios de la API OpenAi.

Configuración de MemGPT y modelos de código abierto

En este vídeo, Matthew Berman explica una configuración rápida para utilizar MemGPT con modelos de código abierto como LLaMA, Airobors y Mistral a través de Runpod. Aunque pueda parecer complicado, en realidad no es demasiado difícil y ofrece un gran potencial de ahorro frente al uso de OpenAI.

Configuración de MemGPT y Autogen

AutoGen es una herramienta que ayuda a crear aplicaciones LLM donde múltiples agentes pueden hablar entre ellos para completar tareas como por ejemplo una lluvia de ideas para una propuesta de negocio. Estos agentes AutoGen se pueden personalizar, pueden chatear y permiten fácilmente que los humanos se unan a la conversación. En este tutorial Matthew Berman explica cómo expandir la memoria de estos agentes AI combinando Autogen con MemGPT.

AutoGEN y MemGPT y LLM Local Tutorial Completo

Creado por Prompt Engineer este video de 30 minutos cubre en gran detalle todos los pasos necesarios para obtener esta combinación de soluciones en vivo con Runpod. Como Prompt Engineer explica, este tutorial tomó bastante tiempo para producir, ya que requiere una serie de pruebas y aprender los pasos. Hasta ahora este es uno de los tutoriales más completos disponibles.

Resumen: 00:11 🚀 El video muestra cómo conectar MemGPT, AutoGEN y modelos de lenguaje grande (LLM) locales usando Runpods.

01:32 🤖 Puedes integrar MemGPT y AutoGEN para trabajar juntos, con MemGPT actuando como agente asistente junto con los LLM locales.

03:46 📚 Para comenzar, instala Python, VS Code y crea una cuenta Runpods con créditos. Pueda utilizar Runpods para ejecutar LLM locales.

06:43 🛠️ Configura un entorno virtual, crea un archivo Python y activa el entorno para su proyecto.

08:52 📦 Instala las bibliotecas necesarias como OpenAI, PyAutoGEN y MGBPT para trabajar con AutoGEN y MemGPT.

16:21 ⚙️ Utiliza Runpods para implementar LLM locales, seleccionar la configuración del hardware y crear puntos finales API para la integración con AutoGEN y MemGPT.

20:29 🔄 Modifica el código para alternar entre el uso de agentes AutoGEN y MemGPT según una bandera, lo que le permitirá aprovechar el poder de ambos.

23:31 🤝 Conecta AutoGEN y MemGPT configurando los puntos finales de API con los LLM locales de Runpods, permitiéndote trabajar juntos sin problemas.

Sigue el código Python de ejemplo:

requirements.txt

pyautogen
pymemgpt

app.py

## pip install pyautogen pymemgpt  import os import autogen import memgpt.autogen.memgpt_agent as memgpt_autogen import memgpt.autogen.interface as autogen_interface import memgpt.agent as agent        import memgpt.system as system import memgpt.utils as utils  import memgpt.presets as presets import memgpt.constants as constants  import memgpt.personas.personas as personas import memgpt.humans.humans as humans from memgpt.persistence_manager import InMemoryStateManager, InMemoryStateManagerWithPreloadedArchivalMemory, InMemoryStateManagerWithEmbeddings, InMemoryStateManagerWithFaiss import openai  config_list = [     {         "api_type": "open_ai",         "api_base": "https://ekisktiz8hegao-5001.proxy.runpod.net/v1",         "api_key": "NULL",     }, ]  llm_config = {"config_list": config_list, "seed": 42}  # If USE_MEMGPT is False, then this example will be the same as the official AutoGen repo # (https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat.ipynb) # If USE_MEMGPT is True, then we swap out the "coder" agent with a MemGPT agent  USE_MEMGPT = True  ## api keys for the memGPT openai.api_base="https://ekisktiz8hegao-5001.proxy.runpod.net/v1" openai.api_key="NULL"   # The user agent user_proxy = autogen.UserProxyAgent(     name="User_proxy",     system_message="A human admin.",     code_execution_config={"last_n_messages": 2, "work_dir": "groupchat"},     human_input_mode="TERMINATE",  # needed?     default_auto_reply="You are going to figure all out by your own. "     "Work by yourself, the user won't reply until you output `TERMINATE` to end the conversation.", )   interface = autogen_interface.AutoGenInterface() persistence_manager=InMemoryStateManager() persona = "I am a 10x engineer, trained in Python. I was the first engineer at Uber." human = "Im a team manager at this company" memgpt_agent=presets.use_preset(presets.DEFAULT_PRESET, model='gpt-4', persona=persona, human=human, interface=interface, persistence_manager=persistence_manager, agent_config=llm_config)   if not USE_MEMGPT:     # In the AutoGen example, we create an AssistantAgent to play the role of the coder     coder = autogen.AssistantAgent(         name="Coder",         llm_config=llm_config,         system_message=f"I am a 10x engineer, trained in Python. I was the first engineer at Uber",         human_input_mode="TERMINATE",     )  else:     # In our example, we swap this AutoGen agent with a MemGPT agent     # This MemGPT agent will have all the benefits of MemGPT, ie persistent memory, etc.     print("\nMemGPT Agent at work\n")     coder = memgpt_autogen.MemGPTAgent(         name="MemGPT_coder",         agent=memgpt_agent,     )   # Begin the group chat with a message from the user user_proxy.initiate_chat(     coder,     message="Write a Function to print Numbers 1 to 10"     )

Entrevista con Charles Parker, co-creador de MemGPT

Para más información sobre los creadores de MemGPT, vea también esta entrevista en vídeo con uno de sus cocreadores, Charles Parker, estudiante de doctorado de la Universidad de Berkley.

MemGPT como sistema operativo

MemGPT se inspira en el concepto de memoria virtual de los sistemas operativos y se aplica de forma innovadora a grandes modelos lingüísticos para crear un espacio de contexto expansivo. Esta innovación brilla en escenarios como las conversaciones continuas, donde las limitaciones tradicionales sobre la longitud del contexto suponen un reto. Al permitir que los modelos lingüísticos de gran tamaño gestionen su memoria, MemGPT elude las restricciones habituales establecidas por las longitudes de contexto fijas.

Limitaciones de MemGPT

En primer lugar, es esencial ser consciente de que MemGPT es un proyecto emergente actualmente en proceso de mejora. Han creado un grupo de Discord para fomentar el intercambio de ideas y permitir la interacción directa con los creadores. Le invitamos a unirse a https://discord.gg/9GEQrxmVyE

Sensibilidad de los datos: El hecho de que MemGPT se base en interacciones previas para determinar el contexto puede plantear problemas relacionados con la privacidad y la sensibilidad de los datos, especialmente en situaciones que impliquen información personal o confidencial.

Interpretaciones erróneas del contexto: Aunque es experto en el manejo de conversaciones extensas, MemGPT puede ocasionalmente malinterpretar el contexto, especialmente en comunicaciones matizadas o emocionalmente cargadas, dando lugar a respuestas que pueden parecer fuera de lugar.

Intensidad de recursos: El sistema requiere importantes recursos informáticos para funcionar de forma óptima, sobre todo para procesar grandes volúmenes de datos o mantener historiales de conversaciones extensos.

Dependencia de datos de entrenamiento de calidad: La eficacia de MemGPT está estrechamente ligada a la calidad de los datos de entrenamiento. Unos datos sesgados, imprecisos o incompletos pueden dificultar el proceso de aprendizaje y afectar a la calidad de las interacciones.

Adaptación a discursos diversos: La capacidad del sistema para adaptarse a distintos estilos de comunicación o comprender diferentes dialectos y matices culturales es todavía un trabajo en curso, lo que en ocasiones afecta a su versatilidad en escenarios globales o multiculturales.

MemGPT frente a representaciones de cebado dispersas (SPR)

MemGPT:

  • Inspiración: Se inspira en los sistemas de memoria jerárquicos de los sistemas operativos tradicionales.
  • Funcionalidad: Implementa un sistema de memoria por niveles que permite a un LLM ampliar su ventana de contexto gestionando qué información se almacena o recupera, y cuándo debe ocurrir.
  • Estructura: Comprende un Contexto Principal (análogo a la memoria principal de un SO) y un Contexto Externo (similar al almacenamiento secundario).
  • Utilidad: Pretende revolucionar las capacidades de los LLM en tareas que implican un contexto ilimitado, como las conversaciones largas y el análisis detallado de documentos.

Representaciones Sparse Priming (SPR):

  • Inspiración: Inspiradas en los sistemas de organización y recuperación de la memoria humana, se centran en la información crítica.
  • Funcionalidad: Mejora la eficiencia del sistema de memoria mediante la creación de primers concisos que representan ideas complejas, favoreciendo la precisión en la comprensión y el recuerdo.
  • Enfoque: Da prioridad a una gestión de la memoria intuitiva y fácil de usar, similar a la forma en que los seres humanos procesan y almacenan la información de forma natural.
  • Utilidad: Se centra en hacer que los LLM sean más eficientes en la recuperación de conocimientos y el aprendizaje, mejorando el compromiso del usuario y las herramientas de comunicación.

Implementación técnica:

MemGPT:

  • Utiliza un enfoque estructurado para la gestión de niveles de memoria, lo que permite un movimiento de datos y una gestión de contextos eficaces.
  • Adaptado para la escalabilidad en el tratamiento de grandes conjuntos de datos y tareas complejas y ampliadas.

SPR:

  • Utiliza un método de creación de cartillas que actúan como una destilación de información compleja, lo que permite una experiencia de gestión de memoria más intuitiva.
  • Su objetivo es imitar los procesos cognitivos humanos para mejorar el aprendizaje y la comunicación.

Aplicaciones e implicaciones:

MemGPT:

  • Puede beneficiar enormemente a las aplicaciones que requieren el procesamiento de grandes cantidades de datos durante periodos prolongados, como los análisis en profundidad y las interacciones continuas.

SPR:

  • Podría mejorar significativamente las herramientas de aprendizaje y comunicación al proporcionar a los usuarios resúmenes o cartillas fáciles de entender sobre temas complejos.

Comunidad y compromiso:

MemGPT:

  • Ofrece una plataforma de código abierto para que desarrolladores e investigadores contribuyan y mejoren las capacidades del sistema de gestión de memoria.

SPR:

  • Fomenta la participación de la comunidad mediante la aportación de nuevos ejemplos, investigaciones y herramientas para mejorar la eficacia e intuitividad del sistema.
    En conclusión, tanto MemGPT como SPR son respuestas innovadoras a los retos de la gestión de memoria en los LLM, cada una con su propia filosofía y metodología. MemGPT es más estructural y orientado al sistema, potencialmente mejor para tareas que requieren la gestión de contextos extensos. SPR está más centrado en el usuario y es más intuitivo, posiblemente mejor para el aprendizaje y la comunicación al simplificar la información compleja.

Aunque ambos pretenden mejorar el manejo del contexto por parte de los LLM, sus filosofías subyacentes y aplicaciones previstas difieren, reflejando la diversidad de enfoques en el avance de las capacidades de IA y ML. Los desarrollos en curso y las contribuciones de la comunidad en estas dos áreas muestran un esfuerzo vibrante y de colaboración para ampliar los límites de lo que es posible con la gestión de memoria en los LLM.

Conclusión

MemGPT es un testimonio del poder de la innovación en la IA, salvando las distancias entre lo que los LLM pueden hacer y lo que aspiramos a que consigan. A medida que avanzamos hacia el futuro, la visión de los LLM como sistemas operativos integrales no parece lejana, está casi a nuestro alcance, y MemGPT lidera la carga. ¿Qué te parece?

Esto es todo por hoy.

Por Lawrence Teixeira

MBA en Inteligencia Artificial en Administración Estratégica. Licenciado en Sistemas de Información y Tecnología en Procesamiento de Datos. Portugués, Inglés y Español. Lawrence es un líder senior en la entrega de tecnología con más de 17 años de experiencia como CTO y CIO en empresas de propiedad intelectual. Tiene experiencia en metodologías de desarrollo Agile y Waterfall. Posee una sólida formación técnica en TI y excelentes habilidades de gestión con más de 25 años en el campo, entregando proyectos avanzados de sistemas y análisis de datos. Lawrence tiene experiencia práctica en la creación e implementación de sistemas de propiedad intelectual, inteligencia de negocios, data warehousing y en la creación de bots para RPA y recopilación de datos. También conoce PMP, Agile, Scrum, DevOps, ITIL, CMMI y ISO/IEC 27001.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *