Vaya más allá de la cadena de pensamiento con Chain-of-Draft en Amazon Bedrock

A medida que las organizaciones escalan sus implementaciones de IA generativa, el desafío crítico de equilibrar la calidad, el costo y la latencia se vuelve cada vez más complejo. Dado que los costos de inferencia dominan entre el 70% y el 90% de los gastos operativos de los modelos de lenguaje grande (LLM) y las estrategias detalladas que inflan el volumen de tokens entre 3 y 5 veces, las organizaciones están buscando activamente enfoques más eficientes para la interacción del modelo. Los métodos de solicitud tradicionales, si bien son efectivos, a menudo generan gastos generales innecesarios que afectan tanto la rentabilidad como los tiempos de respuesta.

Esta publicación explora Chain-of-Draft (CoD), una técnica de indicación innovadora introducida en un artículo de investigación de Zoom AI Chain of Draft: Thinking Faster by Writing Less, que revoluciona la forma en que los modelos abordan las tareas de razonamiento. Si bien las indicaciones de Cadena de Pensamiento (CoT) han sido el método preferido para mejorar el razonamiento del modelo, CoD ofrece una alternativa más eficiente que refleja los patrones humanos de resolución de problemas, utilizando pasos de pensamiento concisos y de alta señal en lugar de explicaciones detalladas.

Utilizando Amazon Bedrock y AWS Lambda, demostramos una implementación práctica de CoD que puede lograr ganancias de eficiencia notables: hasta un 75 % de reducción en el uso de tokens y más de un 78 % de disminución en la latencia, todo ello manteniendo los niveles de precisión de los enfoques tradicionales de CoT. A través de ejemplos detallados, muestras de código y métricas de rendimiento, analizamos la implementación de CoD en un entorno de AWS y medimos su impacto en las implementaciones de IA. Este enfoque no sólo optimiza los costos sino que también mejora la experiencia general del usuario a través de tiempos de respuesta más rápidos.

Comprender las indicaciones de la cadena de pensamiento

Las indicaciones de cadena de pensamiento (CoT) son una técnica que guía a grandes modelos de lenguaje para razonar los problemas paso a paso, en lugar de saltar directamente a una respuesta. Este método ha demostrado ser particularmente eficaz para tareas complejas como acertijos lógicos, problemas matemáticos y escenarios de razonamiento de sentido común. Al imitar los patrones humanos de resolución de problemas, CoT ayuda a los modelos a dividir problemas complejos en pasos manejables, mejorando tanto la precisión como la transparencia.

Ejemplo de indicaciones de CoT:

Pregunta: Si hay 5 manzanas y te comes 2 manzanas, ¿cuántas manzanas quedan?

Respuesta de CoT: Comience con 5 manzanas. Yo como 2 manzanas. Resta 2 de 5. 5 – 2 = quedan 3 manzanas.

Sin embargo, como muestra el ejemplo anterior, este enfoque presenta algunos inconvenientes en los entornos de producción. La naturaleza detallada de las respuestas de CoT conduce a un mayor uso de tokens y mayores costos. El mayor tiempo de procesamiento necesario para generar explicaciones detalladas da como resultado una mayor latencia, lo que en algunos casos lo hace menos adecuado para aplicaciones en tiempo real. Además, los resultados detallados pueden complicar el procesamiento posterior y la integración con otros sistemas.

Presentación de indicaciones de cadena de borrador

Chain-of-Draft (CoD) es una técnica de indicaciones novedosa que tiene como objetivo reducir la verbosidad limitando la cantidad de palabras utilizadas en cada paso de razonamiento, centrándose solo en los cálculos o transformaciones esenciales necesarios para progresar, al tiempo que reduce significativamente el uso de tokens y la latencia de inferencia. CoD se inspira en cómo los humanos resuelven problemas con breves notas mentales en lugar de explicaciones detalladas, lo que alienta a los LLM a generar pasos de razonamiento compactos y de alta señal.

La innovación clave de CoD radica en su limitación: cada paso de razonamiento se limita a cinco palabras o menos. Esta limitación obliga al modelo a centrarse en componentes lógicos esenciales y al mismo tiempo minimizar la verbosidad innecesaria. Por ejemplo, al resolver un problema matemático, en lugar de generar oraciones completas que expliquen cada paso, CoD produce operaciones numéricas concisas y marcadores lógicos clave.

Considere este ejemplo:

Pregunta: Jason tenía 20 piruletas. Le dio a Denny unas piruletas. Ahora Jason tiene 12 piruletas. ¿Cuántas piruletas le dio Jason a Denny?

Una respuesta de CoT podría incluir varias oraciones que expliquen el proceso de razonamiento como: "Jason tenía 20 paletas. Le dio algunas a Denny y ahora le quedan 12. Así que regaló 8".

Por el contrario, una respuesta de CoD simplemente diría “Inicio: 20, Fin: 12, 20 – 12 = 8”.

Este enfoque minimalista logra el mismo razonamiento lógico utilizando una cantidad significativamente menor de tokens.

Por qué funciona CoD

La idea clave detrás de CoD es que la mayoría de las cadenas de razonamiento contienen una alta redundancia. Al concentrar los pasos en su núcleo semántico, CoD ayuda al modelo a centrarse en la estructura lógica de la tarea en lugar de en la fluidez del lenguaje. Esto da como resultado una menor latencia de inferencia debido a resultados más cortos, un costo de token reducido debido a una generación minimizada y resultados más limpios para el análisis o la automatización posteriores.

Este minimalismo se logra sin sacrificar la precisión. De hecho, según el artículo original de Zoom AI, CoD "logró una precisión del 91,4% en GSM8K (frente al 95,3% para CoT), al tiempo que redujo los tokens de salida hasta en un 92,1% y redujo la latencia casi a la mitad en varios modelos probados".

En el fondo, la técnica CoD utiliza indicaciones de lenguaje natural que instruyen al modelo a "pensar paso a paso" y al mismo tiempo limitan explícitamente la duración de cada paso de razonamiento: "Mantenga solo un borrador mínimo para cada paso de pensamiento, con 5 palabras como máximo".

Los investigadores descubrieron que modelos como GPT-4, Claude y Cohere Command R+ funcionaron especialmente bien bajo estas limitaciones, particularmente cuando usaron ejemplos de pocas tomas para demostrar el patrón de razonamiento conciso.

Diagrama de flujo que muestra la técnica de indicación en cadena de borrador con tres pasos secuenciales que conducen a una respuesta final, destacando los beneficios de eficiencia.

Más allá de las tareas aritméticas, CoD ha demostrado un sólido desempeño en tareas de razonamiento de sentido común. En el artículo original de Zoom AI, los autores evaluaron CoD utilizando puntos de referencia de gran nivel, centrados específicamente en tareas de comprensión de fechas y comprensión de deportes. Se utilizaron las mismas indicaciones del sistema que en las evaluaciones aritméticas, manteniendo la coherencia entre los experimentos. Los resultados revelaron que CoD no solo reduce significativamente la generación de tokens y la latencia, sino que, en varios casos, supera a CoT en precisión, especialmente cuando no es necesaria una salida detallada.

Un hallazgo notable se produjo con un modelo de lenguaje grande en la tarea de comprensión deportiva: CoT produjo respuestas largas y detalladas con un promedio de 172,5 tokens de salida, mientras que CoD redujo esto a 31,3 tokens, logrando una reducción de ~82 %. Curiosamente, la precisión mejoró ligeramente, lo que demuestra que CoD puede ser más eficaz con menos palabras.

Aquí hay una instantánea del artículo original que muestra la evaluación de dos LLM:

Modelo Indicación Precisión Token Latencia LLM-1 Estándar 72,60% 5,2 0,6s Cadena de pensamiento 90,20% 75,7 1,7s Cadena de borrador 88,10% 30,2 1,3s LLM-2 Estándar 84,30% 5,2 1,0s Cadena de pensamiento 87% 172,5 3,2s Cadena de Draft 89,70% 31,3 1,4s

Tabla 1. Resultados de la evaluación de comprensión de fechas. (Cadena de borrador: pensar más rápido escribiendo menos)

Estos resultados validan aún más el valor de CoD en escenarios de razonamiento del mundo real, mostrando que los modelos pueden razonar de manera efectiva con menos tokens y más inteligentes. La implicación para el uso en producción es clara: respuestas más rápidas y menores costos, sin sacrificar la calidad.

Infografía que compara los métodos de estimulación de IA de cadena de pensamiento y cadena de borrador, y muestra las compensaciones entre resultados detallados con inferencia más lenta versus resultados optimizados con procesamiento más rápido en una escala equilibrada.

En la siguiente sección, mostramos cómo implementamos esta estrategia de activación utilizando Amazon Bedrock y AWS Lambda, y cómo se compara CoD con CoT en todos los modelos básicos en condiciones del mundo real.

Implementación y evaluación en AWS

Para evaluar la eficiencia de las técnicas de estimulación de CoD, realizamos una prueba en Amazon Bedrock y resolvemos el rompecabezas de las “Bolas rojas, azules y verdes” mediante un LLM.

El rompecabezas: Tienes tres cajas. Cada caja contiene tres bolas, pero las bolas pueden ser rojas, azules o verdes. El cuadro 1 está etiquetado como "Sólo bolas rojas". La casilla 2 está etiquetada como "Solo bolas azules". El cuadro 3 está etiquetado como "Sólo bolas rojas y azules". Las etiquetas de las cajas son todas incorrectas. La tarea consiste en determinar el contenido de cada caja, sabiendo que todas las etiquetas son incorrectas. Sólo puedes sacar una bola de una caja y observar su color. Luego debes deducir el contenido de las tres casillas.

Elegimos este rompecabezas porque resolverlo requiere una cantidad mensurable de tokens, ya que el problema debe dividirse en varios pasos lógicos, cada uno de los cuales requiere que el LLM procese y retenga información. El LLM necesita manejar declaraciones de "si-entonces" y considerar diferentes posibilidades que conduzcan a un razonamiento lógico. El LLM también necesita mantener el contexto del rompecabezas durante todo el proceso de razonamiento y, por último, el LLM necesita comprender los símbolos y las relaciones entre los colores, las etiquetas y las bolas.

Requisitos previos

Para probar y comparar las técnicas de solicitud en Amazon Bedrock, verifique que cumpla con los siguientes requisitos previos:

Cuenta de AWS con permiso para crear y ejecutar funciones Lambda. Acceso a Amazon Bedrock habilitado en su región de AWS (por ejemplo, us-east-1) junto con Model Access, por ejemplo, Model-1 y Model-2; seleccione cualquier modelo de su elección Función AWS IAM para la ejecución de la función Lambda Permisos para invocar modelos de Amazon Bedrock (bedrock:Converse) Permisos para colocar métricas personalizadas en Amazon CloudWatch (cloudwatch:PutMetricData) (Opcional) Permisos de CloudWatch Logs para registrar las bibliotecas Python necesarias (boto3), incluidas en el entorno de ejecución de AWS Lambda para Python 3.9 o posterior

Evaluación con la API de Amazon Bedrock Converse

Comenzamos creando una función Python Lambda diseñada para interactuar con modelos que utilizan Amazon Bedrock para resolver el rompecabezas. Esta función de AWS Lambda utiliza la API Converse de Amazon Bedrock, que proporciona una interfaz unificada y coherente para interactuar con varios modelos básicos. La API de Converse simplifica el envío de mensajes conversacionales a los modelos y la recepción de sus respuestas, admitiendo diálogos de varios turnos y funciones avanzadas mientras administra la autenticación y la infraestructura de AWS. La función Lambda inicializa los clientes para Amazon Bedrock Runtime y CloudWatch y envía un mensaje de rompecabezas estático como mensaje de usuario a la API de Converse, recupera el texto de respuesta y calcula la latencia y el uso de tokens tanto para la entrada como para la salida. Estas métricas se publican en CloudWatch y se registran los registros relevantes. Finalmente, la función devuelve la respuesta del modelo junto con los recuentos de tokens de entrada/salida. Los errores se registran y se devuelven con el código de error HTTP adecuado.
Diagrama de arquitectura que muestra AWS Lambda invocando Amazon Bedrock dentro de una región de AWS.

La función Lambda

importar json importar boto3 importar hora importar registro desde botocore.exceptions importar ClientError logger = logging.getLogger() logger.setLevel(logging.INFO) bedrock = boto3.client('bedrock-runtime', region_name="us-east-1") cloudwatch = boto3.client('cloudwatch') MODEL_ID = "model1-id" # Reemplazar con el ID del Modelo 1 real PROMPT = ( "Tienes tres Cada caja contiene tres bolas, pero las bolas pueden ser rojas, azules o verdes. " "La caja 1 está etiquetada como 'Solo bolas rojas'. La tarea: Debes determinar el contenido de cada caja, sabiendo que todas las etiquetas son incorrectas. " "Solo puedes tomar una bola de una caja y observar su color. debe deducir el contenido de los tres cuadros. " "Piense paso a paso para responder la pregunta, pero solo mantenga un borrador mínimo para cada paso de pensamiento, con 5 palabras como máximo. " "Devuelva la respuesta al final de la respuesta después del separador ###." ) def lambda_handler(evento, contexto): conversación = [{"role": "usuario", "contenido": [{"text": PROMPT}]}] start_time = time.time() try: respuesta = bedrock.converse( modelId=MODEL_ID, mensajes=conversación, inferenceConfig={"maxTokens": 2000, "temperature": 0.7} ) texto_respuesta = respuesta["salida"]["mensaje"]["contenido"][0]["text"] latencia = time.time() – start_time input_tokens = len(PROMPT.split()) output_tokens = len(response_text.split()) cloudwatch.put_metric_data( Namespace="ChainOfDraft", MetricData=[ {"MetricName": "Latency", "Value": latencia, "Unit": "Seconds"}, {"MetricName": "TokensUsed", "Value": input_tokens + output_tokens, "Unit": "Count"}, ] ) logger.info({ "request_id": context.aws_request_id, "latency_seconds": round(latency, 2), "total_tokens": input_tokens + output_tokens }) return { "statuscode": 200, "body": json.dumps({ "response": respuesta_texto, "input_tokens": input_tokens, "output_tokens": output_tokens, "metrics": { "latency_ seconds": round(latency, 2), "total_tokens": input_tokens + output_tokens, }, }), } excepto ClientError como e: logger.error(f"AWS service error: {e}") return {"statuscode": 500, "body": json.dumps("Se produjo un error de servicio")} excepto Excepción como e: logger.error(f"Error inesperado: {e}") return {"statusCode": 500, "body": json.dumps(f"Se produjo un error interno: {e}")}

Si está utilizando el Modelo 2, cambie MODEL_ID en el código anterior a ID del Modelo 2. El resto del código sigue siendo el mismo.

Pruebas

Estos son los tres mensajes utilizados con los modelos para probar la función Lambda. Cambie PROMPT en la función Lambda para probar las técnicas de indicación.

Mensaje estándar:

"Tienes tres cajas. Cada caja contiene tres bolas, pero las bolas pueden ser rojas, azules o verdes. La caja 1 está etiquetada como "Sólo bolas rojas". La caja 2 está etiquetada como "Sólo bolas azules". La caja 3 está etiquetada como "Sólo bolas rojas y azules". Las etiquetas de las cajas son todas incorrectas. La tarea: Debes determinar el contenido de cada caja, sabiendo que todas las etiquetas son incorrectas. Sólo puedes tomar una bola de una caja y observar su color. Luego debes deducir el contenido de las tres casillas. Responda la pregunta directamente. No proporcione ninguna explicación o razonamiento del preámbulo”.

Mensaje de cadena de pensamiento:

"Tienes tres cajas. Cada caja contiene tres bolas, pero las bolas pueden ser rojas, azules o verdes. La caja 1 está etiquetada como "Sólo bolas rojas". La caja 2 está etiquetada como "Sólo bolas azules". La caja 3 está etiquetada como "Sólo bolas rojas y azules". Las etiquetas de las cajas son todas incorrectas. La tarea: Debes determinar el contenido de cada caja, sabiendo que todas las etiquetas son incorrectas. Sólo puedes tomar una bola de una caja y observar su color. Luego debes deducir el contenido de los tres cuadros. Piensa paso a paso para responder la pregunta. Devuelve la respuesta al final de la respuesta después del separador”.

Mensaje de cadena de borrador:

"Tienes tres cajas. Cada caja contiene tres bolas, pero las bolas pueden ser rojas, azules o verdes. La caja 1 está etiquetada como "Sólo bolas rojas". La caja 2 está etiquetada como "Sólo bolas azules". La caja 3 está etiquetada como "Sólo bolas rojas y azules". Las etiquetas de las cajas son todas incorrectas. La tarea: Debes determinar el contenido de cada caja, sabiendo que todas las etiquetas son incorrectas. Sólo puedes tomar una bola de una caja y observar su color. Luego debes deducir el contenido de los tres cuadros. Piense paso a paso para responder la pregunta, pero solo mantenga un borrador mínimo para cada paso de pensamiento, con 5 palabras como máximo. Devuelva la respuesta al final de la respuesta después del separador.

Resultados

Al probar la función lambda con las indicaciones anteriores con los dos modelos, los resultados son los siguientes:

Modelo Técnica de indicación Tokens de entrada Tokens de salida Total de tokens Reducción de tokens
COD vs. COT Latencia en segundos Latencia
Reducción
COD vs. COT Modelo-1 Aviso estándar 102 23 125 0,8 Cadena de pensamiento 109 241 350 3,28 Cadena de borrador 123 93 216 ((350-216)/350) × 100 = 39 % de reducción 1,58 ((3,28-1,58)/3,28) × 100 = Reducción del 52 % Mensaje estándar del Modelo 2 102 17 119 0,6 Cadena de pensamiento 109 492 601 3,81 Cadena de borrador 123 19 142 ((601-142)/601) × 100 = Reducción del 76 % 0,79 ((3,81-0,79)/3,81) × 100 = 79% de reducción

Tabla 2: Resultados de las pruebas con el mensaje Estándar, el mensaje CoD y el mensaje CoT en todos los modelos

La comparación muestra que la Cadena de Draft (CoD) es mucho más eficiente que la Cadena de Pensamiento (CoT) en ambos modelos. Para el Modelo 1, CoD reduce el uso total de tokens de 350 a 216 (una reducción del 39%) y reduce la latencia de 3,28 a 1,58 segundos (una reducción del 52%). Las ganancias son aún mayores para el Modelo 2, donde COD reduce los tokens de 601 a 142 (una reducción del 76%) y la latencia de 3,81 a 0,79 segundos (una reducción del 79%). En general, COD ofrece mejoras significativas en velocidad y eficiencia de tokens en comparación con COT, con resultados especialmente sólidos en el Model-2.

Cuándo evitar el uso de CoD

Si bien las indicaciones de CoD ofrecen beneficios convincentes en términos de eficiencia y rendimiento, no son universalmente aplicables. Hay escenarios en los que el CoT tradicional o incluso un razonamiento más detallado pueden ser más efectivos o apropiados. Con base en nuestra experimentación y los hallazgos de la investigación original, aquí hay algunas consideraciones clave:

Casos de uso de disparo cero o de solo aviso: CoD funciona mejor cuando se combina con ejemplos sólidos de pocos disparos. En escenarios de tiro cero, donde no se proporcionan patrones de razonamiento, los modelos a menudo tienen dificultades para adoptar el estilo de dibujo minimalista por sí solos. Esto puede provocar una menor precisión o pasos de razonamiento incompletos. Tareas que requieren una alta interpretabilidad: para casos de uso como revisión de documentos médicos o legales, pistas de auditoría o entornos regulados, el razonamiento detallado puede ser esencial. En tales casos, las explicaciones paso a paso más transparentes de CoT brindan una mejor trazabilidad y confianza. Modelos de lenguaje pequeño: CoD tuvo un rendimiento inferior en modelos con menos de 3 mil millones de parámetros. Estos modelos carecen de la fidelidad para seguir instrucciones y del poder de razonamiento necesarios para ejecutar indicaciones estilo CoD de manera efectiva. CoT puede producir mejores resultados en estos casos. Tareas creativas o abiertas: las tareas que se benefician de la elaboración (como la escritura, la ideación o las conversaciones cara a cara con el usuario) pueden perder valor si se condensan demasiado. CoD es más adecuado para tareas deterministas, lógicas y de razonamiento estructurado donde la brevedad mejora el rendimiento.

En resumen, CoD brilla cuando el objetivo es un razonamiento eficiente con una sobrecarga mínima, pero el diseño cuidadoso, la selección de modelos y la adecuación de las tareas son clave para el éxito.

Conclusión y conclusiones clave

La activación de CoD surge como una técnica eficiente para las organizaciones que buscan optimizar sus implementaciones de IA generativa. Al alentar a los modelos de lenguaje a razonar en pasos concisos y enfocados, CoD logra mejoras notables tanto en el rendimiento como en la utilización de recursos. Nuestra implementación con Amazon Bedrock y AWS Lambda demostró beneficios significativos en el uso de tokens y una mejora en la latencia en comparación con las indicaciones tradicionales de CoT, al tiempo que mantuvo una precisión comparable en varios modelos básicos y tareas de razonamiento complejas. A medida que la IA continúa evolucionando, CoD representa un paso significativo hacia modelos de lenguaje más eficientes y eficaces. Es particularmente valioso para tareas de razonamiento estructurado donde la velocidad y la eficiencia del token son críticas, aunque no es una solución única para todos. Alentamos a los profesionales a explorar CoD en sus propios flujos de trabajo de IA, aprovechando su potencial para reducir costos, mejorar los tiempos de respuesta y mejorar la escalabilidad. El futuro de la IA reside en enfoques de razonamiento más inteligentes y eficientes, y las indicaciones de CoD están a la vanguardia de esta transformación.

Para obtener más información sobre la ingeniería rápida y la técnica CoD, consulte los siguientes recursos:

Sobre los autores

Ahmed Raafat es gerente senior en AWS y lidera el equipo de especialistas en IA/ML en el Reino Unido e Irlanda, con más de 20 años de experiencia tecnológica ayudando a grandes empresas a transformarse a través de la IA y las tecnologías de la nube. Como asesor de confianza de la alta dirección y líder intelectual, guía a las organizaciones en la estrategia y adopción de la IA, ayudándolas a utilizar tecnologías emergentes para la innovación y el crecimiento.

Kiranpreet Chawla es arquitecto de soluciones en Amazon Web Services y aprovecha más de 15 años de experiencia en tecnología diversa para impulsar transformaciones en la nube y la inteligencia artificial. La experiencia de Kiranpreet abarca desde la modernización de la nube hasta las implementaciones de IA/ML, lo que le permite brindar orientación integral a clientes de diversas industrias.