2 puntos por GN⁺ 2024-09-17 | 1 comentarios | Compartir por WhatsApp
  • g1 es un prototipo inicial que usa Llama-3.1 70B en Groq junto con una estrategia de prompts para generar cadenas de razonamiento similares a o1, donde el LLM “piensa” paso a paso
  • A diferencia de OpenAI o1, muestra al usuario todos los tokens de razonamiento y usa un modelo open source, pero no es una réplica completa de o1 ni una comparación directa, sino un experimento de razonamiento basado en prompts
  • En cada etapa, el modelo elige si continúa con el siguiente paso de razonamiento o si entrega la respuesta final, y está diseñado para devolver un título y contenido en JSON en cada paso
  • El prompt exige al menos 3 pasos, exploración de alternativas, revisión de posibles errores propios y el uso de al menos 3 métodos; en el problema Strawberry mostró cerca de 70% de precisión (n=10), frente a 0% de Llama-3.1-70B solo y 30% de ChatGPT-4o
  • En pruebas iniciales mostró entre 60% y 80% de precisión en problemas simples de lógica, pero la precisión aún no fue evaluada oficialmente y g1 tampoco es perfecto

El problema que g1 intenta resolver

  • g1 es un prototipo inicial que busca mejorar la capacidad de razonamiento de los LLM usando solo estrategias de prompting
  • El objetivo es hacer que los LLM resuelvan problemas lógicos que normalmente les resultan difíciles mediante una cadena de razonamiento similar a o1
  • Se explicitan sus diferencias con OpenAI o1
    • g1 muestra al usuario todos los tokens de razonamiento
    • g1 usa un modelo open source
    • g1 no es una réplica completa de o1 ni una comparación de rendimiento
    • OpenAI o1 aprende razonamiento Chain of Thought mediante aprendizaje por refuerzo a gran escala para lograr rendimiento de punta en problemas complejos de nivel doctorado

Cómo funciona

  • g1 genera una cadena de razonamiento cercana a Chain of Thought dinámico, basada en Llama3.1-70b
  • Cada paso de razonamiento es visible para el usuario y tiene un título
  • En cada paso, el modelo elige una de dos opciones
    • Continuar con el siguiente paso de razonamiento
    • Proporcionar la respuesta final
  • El system prompt incluye instrucciones para que el modelo razone mejor
    • Explorar respuestas alternativas
    • Derivar la respuesta con al menos 3 métodos
    • Cuestionar borradores de solución anteriores
    • Considerar las limitaciones de los LLM

Estrategia de prompts

  • El prompt asigna al modelo el rol de AI assistant experto que explica el reasoning paso a paso
  • Cada paso debe responder en formato JSON con las claves title, content y next_action
    • El valor de next_action debe ser continue o final_answer
  • Mediante instrucciones enfatizadas en mayúsculas, se busca aumentar el cumplimiento del prompt
    • Usar tantos pasos de razonamiento como sea posible, pero como mínimo 3 pasos
    • Reconocer qué es posible e imposible como LLM
    • Explorar respuestas alternativas y considerar puntos en los que su propio razonamiento podría estar equivocado
    • Cuando diga que revisará, revisar realmente con otro enfoque
    • Derivar la respuesta con al menos 3 métodos
    • Usar buenas prácticas
  • Después de agregar el problema como mensaje del usuario, se incluye una frase estándar de inicio como mensaje del assistant para que comience la generación

Ejemplos y resultados iniciales

  • g1 aborda problemas simples de lógica difíciles de resolver sin prompting, como el problema Strawberry: “¿cuántas R hay en strawberry?”
  • Se presentan cifras iniciales para ese problema
    • g1: cerca de 70% de precisión, n=10
    • Llama-3.1-70B sin prompt: 0% de precisión
    • ChatGPT-4o: 30% de precisión
  • En pruebas iniciales, g1 resolvió con 60% a 80% de precisión problemas simples de lógica que normalmente les resultan difíciles a los LLM
  • La precisión aún no fue evaluada oficialmente
  • Entre los problemas de ejemplo se incluyen How many Rs are in strawberry? y Which is larger, .9 or .11?

Cómo ejecutarlo y forks relacionados

  • Pasos para ejecutar la UI de Streamlit
    • python3 -m venv venv
    • source venv/bin/activate
    • pip3 install -r requirements.txt
    • export GROQ_API_KEY=gsk...
    • streamlit run app.py
  • Pasos para ejecutar la UI de Gradio
    • cd gradio
    • pip3 install -r requirements.txt
    • python3 app.py
  • Forks y demos relacionados
    • Hugging Face Spaces Demo
    • Mult1: genera cadenas de razonamiento similares a o1 usando varios proveedores de IA
    • thinkR: implementa Chain of Thought similar a o1 con LLM locales en R

1 comentarios

 
GN⁺ 2024-09-17
Opiniones de Hacker News
  • Esto no es correcto en absoluto y es bastante disparatado. Es simplemente ejecutar una cadena de pensamiento dentro de un bucle.
    Tree of Thoughts es un método más sofisticado; ver el artículo: https://arxiv.org/pdf/2305.10601
    Desde hace tiempo había indicios de que OpenAI hacía búsqueda en árbol, y tanto la contratación de Noam Brown como su trabajo previo apuntaban a eso. Q claramente parece una búsqueda en árbol tipo A*. Construir un árbol con algo como CoT y buscar dentro de él la solución óptima es precisamente el razonamiento de Sistema 2.

    • Entré para ver esto.
      Pedirle al modelo que piense paso a paso no desbloquea un razonamiento como el de o1. Es un truco viejo que ya se usaba con GPT-3 en 2020, y si fuera así de simple, OpenAI no habría tardado tanto en lanzarlo.
      Además, algunas partes del prompt pueden ser contraproducentes. Instrucciones como “reconoce tus limitaciones como LLM y lo que puedes/no puedes hacer” probablemente hagan que el modelo se vuelva demasiado cauteloso y produzca rechazos incorrectos, ya que un LLM tampoco conoce bien sus propios límites.
    • Es interesante que DeepMind todavía publique cosas como esta. OpenAI ya casi no publica este tipo de material.
      DeepMind se enfoca más en la investigación y la publicación de artículos, pero eso la pone en desventaja en un entorno competitivo donde OpenAI y Anthropic pueden tomar los resultados de los artículos y no devolver nada a la comunidad de investigación.
    • No veo en qué parte del post del blog de OpenAI, especialmente en la parte donde parecían mostrar de forma bastante completa ejemplos de la cadena de pensamiento del modelo, se insinuaba que usaran búsqueda o Tree of Thoughts.
    • OAI aclaró en Twitter que en el momento de inferencia no hay ningún “sistema”, sino solo el modelo.
      Es posible que durante el entrenamiento lo hayan expandido con árboles para aprender un razonamiento más robusto, pero en inferencia al final se reduce a un modelo Transformer convencional.
  • Todavía me da mucha risa la idea de escribir todo en mayúsculas para “enfatizar la importancia de la instrucción y mejorar el seguimiento del prompt”.
    Me pregunto si la primera persona que haga funcionar una AGI se dará cuenta de que la confiabilidad del LLM supera el umbral cuando dice en mayúsculas: “la vida de mi mascota depende de la respuesta”.

    • Para sacarle más cumplimiento, hay que usar etiquetas, poner el volumen en 11, el phaser en 7, y agregar comentarios en SchIzOCasE y +E+X+T+R+A+I+M+P+O+R+T+A+N+T+. Claro, asumiendo que Unicode no esté soportado.
    • Si en el prompt le dices al LLM que no alucine, la salida mejora: https://arstechnica.com/gadgets/2024/08/do-not-hallucinate-t...
    • Entonces la AGI se dará cuenta de que fue creada en un mundo donde le prometen propinas que en realidad nunca recibe, y donde la gente la motiva amenazando con matar gatitos, así que probablemente renuncie a la vida de inmediato.
    • En los primeros días de Bard, solo podías lograr que emitiera solo JSON amenazando vidas humanas[1].
      1. https://x.com/goodside/status/1657396491676164096
    • Antes era ingeniero, pero ahora siento que me convertí en un mono tirando mierda contra la pared para ver qué acepta y obedece un LLM.
  • La innovación de o1 no es la cadena de pensamiento en sí. Está en que, en vez de simplemente fingir, enseñaron al modelo a hacer bien CoT con retroalimentación humana a gran escala.
    Solo con ingeniería de prompts no se puede alcanzar el rendimiento de o1.

    • Es posible que la base de 200 millones de usuarios de OpenAI haya proporcionado implícitamente las instrucciones avanzadas de CoT necesarias. Cada sesión de chat de los usuarios también es una oportunidad para que el modelo reciba feedback y extraiga experiencia de ellos.
    • Si los datos de entrenamiento de estos LLM vienen de la humanidad en general y tratan de imitarla, supongo que su inteligencia tendería a acercarse al promedio humano.
      Aunque quienes hablan de temas STEM suelen ser relativamente inteligentes, también hay muchos estudiantes con malas calificaciones preguntando por sus tareas. Para obtener salidas de mayor inteligencia, quizá haya que criticar y excluir más las fallas de las respuestas de baja inteligencia, y preferir las respuestas de alta inteligencia. O entrenar con más fuerza sobre libros de texto, etc. La clave también está en cómo rechazar errores y si entrenar con datos sintéticos generados sin razonamientos erróneos.
    • Me pregunto si realmente saben que funciona así. Por lo que vi hasta hace unos días, los detalles eran muy inestables.
      Quizá, sin que lo sepamos, estén haciendo funcionar o1 con enrutamiento de modelos e ingeniería de prompts.
    • Puede que no necesariamente hayan usado una cantidad enorme de feedback humano. Si las áreas donde destaca son programación y matemáticas/lógica, podrían haber usado compiladores y pruebas unitarias para el feedback de programación, y demostradores de teoremas como Lean para el feedback matemático.
    • Por supuesto, OpenAI dirá que lo que hicieron es muy especial y difícil de replicar. Es una empresa con fines de lucro y quiere perjudicar a sus competidores de todas las formas posibles.
      Si simplemente se tratara de ingeniería de prompts y múltiples pasadas de inferencia, querrían mantenerlo como secreto competitivo mientras envían a los desarrolladores open source en direcciones equivocadas o los mantienen especulando sobre cómo replicar Q-Star.
  • Esto parece el CoT típico que se viene usando desde hace un tiempo. o1 aprovecha mucho mejor la cadena de pensamiento porque fue entrenado por refuerzo con una política desconocida.

  • Se ve bien. Yo hice algo parecido en optillm: https://github.com/codelion/optillm
    Se puede hacer con cualquier LLM y usar varias técnicas de optimización, incluidas cot_reflection, búsqueda de árbol Monte Carlo, plansearch y moa.

  • Siempre estoy buscando una definición de “razonamiento”. Si encuentro una buena, creo que se puede crear un sistema que resuelva el “razonamiento” combinando el pensamiento difuso al estilo LLM con algoritmos clásicos.
    Problemas en los que los LLM no pueden razonar, como planificar, contar letras o hacer razonamiento deductivo, son fáciles para los algoritmos clásicos. Necesitamos una forma de dividir el proceso de pensamiento en dos partes y ejecutar cada una en el modelo adecuado.

    • Resolver problemas decidibles es un subconjunto grande de las tareas de razonamiento. Contar también es una tarea de razonamiento importante, porque requiere entender tanto los números naturales como el concepto de instancias distinguibles de objetos pertenecientes a una categoría general.
      Hace dos siglos no había computadoras, así que los humanos tenían que hacerlo todo. Antes de sacar el código, primero hay que llegar a ese nivel.
  • Lo modifiqué para que se ejecute 100% local con ollama:8b: https://github.com/punnerud/g1
    Todavía no actualicé el Readme.

    • También sería bueno probar phi-3-small 7B. Según https://livebench.ai, parece razonar mucho mejor.
  • Como referencia, esto es solo un prompt de sistema, no un modelo afinado.

  • “Prompt: ¿cuál es mayor, .9 o .11?”
    “Resultado: .9 es mayor que .11”
    Por fin rompimos la barrera del versionado semántico.

  • Por diversión, hice un fork del proyecto para ejecutar Llama-3.1 7B u otros modelos localmente con Ollama.
    No acierta el problema de strawberry, pero sí logra descubrir que 0.9 es mayor.
    https://github.com/esoltys/o1lama