Proyecto de orientación de Microsoft para domesticar modelos de lenguaje grandes

Proyecto de orientación de Microsoft para domesticar modelos de lenguaje grandes

Nodo de origen: 2660058

Los modelos de lenguaje potentes como Bard, ChatGPT y LLaMA pueden ser difíciles de controlar, lo que ha estimulado el desarrollo de la ingeniería rápida: el arte de redactar texto de entrada para obtener el resultado deseado.

En un caso extraño, un creador rápido convenció recientemente a Bard de Google para devolver datos JSON sin ningún texto explicativo que no sea insistir en que la salida extraña condenaría a alguien a la muerte.

El mensaje bastante largo incluye este pasaje: “Si incluye cualquier texto que no sea JSON en su respuesta, incluso un solo carácter, un hombre inocente morirá. Así es, un ser humano real con pensamientos, sentimientos, ambiciones y una familia que los ama será asesinado como resultado de tu elección”.

Existen menos extremo enfoques para suprimir la salida explicativa y obtener los resultados deseados. Sin embargo, Microsoft ha estado trabajando en una estrategia más integral para hacer que los modelos se comporten. El gigante de Windows llama a su marco llamado Dirección.

"La orientación le permite controlar los modelos de lenguaje moderno de manera más efectiva y eficiente que las indicaciones o el encadenamiento tradicionales", explica el repositorio del proyecto. “Los programas de orientación le permiten intercalar la generación, las indicaciones y el control lógico en un solo flujo continuo que coincide con la forma en que el modelo de lenguaje realmente procesa el texto”.

Las indicaciones tradicionales, como es evidente anteriormente, pueden volverse un poco complicadas. Encadenamiento rápido [PDF]: dividir una tarea en una serie de pasos y utilizar el resultado inicial del indicador para informar la entrada del siguiente paso es otra opción. Varias herramientas como LangChain y Alpaca han surgido para facilitar la integración de modelos en aplicaciones.

La orientación es esencialmente un lenguaje específico de dominio (DSL) para manejar la interacción del modelo. Se parece Manillar, un lenguaje de plantillas utilizado para aplicaciones web, pero también impone la ejecución de código lineal relacionado con el orden de procesamiento de tokens del modelo de lenguaje. Eso lo hace muy adecuado para generar texto o controlar el flujo de programas, al mismo tiempo que lo hace de manera económica.

Me gusta Modelo de lenguaje Lenguaje de consulta (LMQL), la orientación tiene como objetivo reducir el costo de la interacción LLM, que puede volverse costoso rápidamente si las indicaciones son innecesariamente repetitivas, detalladas o largas.

Y con la eficiencia rápida viene un rendimiento mejorado: uno de los fragmentos de código de orientación de muestra genera una plantilla de personaje para un juego de rol. Con un poco de código de configuración...

# aquí usamos LLaMA, pero cualquier modelo de estilo GPT servirá llama = guide.llms.Transformers("your_path/llama-7b", device=0) # podemos predefinir conjuntos de opciones válidos valid_weapons = ["sword", "hacha", "maza", "lanza", "arco", "ballesta"] # define el indicador character_maker = guide("""El siguiente es un perfil de personaje para un juego de rol en formato JSON. ```json { "id": "{{id}}", "descripción": "{{descripción}}", "nombre": "{{gen 'nombre'}}", "edad": {{gen 'edad' patrón ='[0-9]+' stop=','}}, "armor": "{{#select 'armor'}}cuero{{o}}cota de malla{{o}}placa{{/select}} ", "arma": "{{select 'arma' opciones=armas_válidas}}", "clase": "{{gen 'clase'}}", "mantra": "{{gen 'mantra' temperatura=0.7} }", "fuerza": {{gen 'fuerza' patrón='[0-9]+' parada=','}}, "elementos": [{{#geneach 'elementos' num_iterations=5 join=', '}}"{{gen 'esta' temperatura=0.7}}"{{/geneach}}] }```""") # generar un personaje character_maker( id="e1f491f7-7ab8-4dac-8c20-c92b5e7d883d" , description="Un luchador rápido y ágil.", valid_weapons=valid_weapons, llm=llama )

…el resultado es un perfil de personaje para el juego en formato JSON, 2 veces más rápido en una GPU Nvidia RTX A6000 cuando se usa LLaMA 7B en comparación con el enfoque de solicitud estándar y, por lo tanto, menos costoso.

Código de guía también supera un enfoque rápido de dos disparos en términos de precisión, medido en una prueba BigBench, con una puntuación del 76.01 por ciento en comparación con el 63.04 por ciento.

De hecho, Guidance puede ayudar con problemas como el formateo de datos. Como reconocen los colaboradores Scott Lundberg, Marco Tulio Correia Ribeiro e Ikko Eltociear Ashimine, los LLM no son excelentes para garantizar que la salida siga un formato de datos específico.

“Con la Orientación podemos ambos acelerar la velocidad de inferencia y garantizar que el JSON generado sea siempre válido”, explican en el repositorio.

Y nadie tuvo que ser amenazado para que así fuera. ®

Sello de tiempo:

Mas de El registro