1 puntos por GN⁺ 2 시간 전 | 1 comentarios | Compartir por WhatsApp
  • DwarfStar 4 reduce llama.cpp para ejecutarlo solo con DeepSeek-V4-Flash, lo que facilita experimentar con steering de LLM en modelos locales
  • El steering extrae como vector la diferencia de activación de un concepto como “responder brevemente” y la suma en la misma capa durante la inferencia para cambiar el comportamiento
  • El steering requiere acceso a pesos o activaciones, así que parte de la base de una ejecución local; para usuarios de API, esto queda en manos de proveedores como OpenAI
  • Para muchos ajustes básicos, el prompt es más simple, pero sigue existiendo la posibilidad de modificar comportamientos aprendidos que son difíciles de pedir por prompt, como eliminar rechazos
  • DeepSeek-V4-Flash y DwarfStar 4 podrían aumentar los experimentos open source, y sus aplicaciones reales podrían hacerse visibles dentro de 6 meses

DeepSeek-V4-Flash y DwarfStar 4

  • DwarfStar 4 es un proyecto que recorta llama.cpp para ejecutar únicamente DeepSeek-V4-Flash, y facilita experimentar con steering de LLM en modelos locales
  • Es posible que DeepSeek-V4-Flash sea un modelo local lo bastante bueno como para competir con el código tipo agente de bajo nivel de los frontier models
  • Como el steering necesita acceso a los pesos o activaciones del modelo, requiere ejecución local; con la aparición de modelos como DeepSeek-V4-Flash, más ingenieros pueden tener condiciones para experimentar directamente
  • antirez incorporó el steering como una función de primera clase en DwarfStar 4, pero por ahora los ejemplos se parecen más a un ajuste de “verbosity” de juguete que también puede reproducirse con prompts
  • La versión inicial de DwarfStar 4 salió hace 8 días, y será interesante ver cómo evoluciona la función de steering

Cómo funciona el steering

  • La idea básica del steering es extraer de los estados internos del modelo un concepto como “responder brevemente” y luego aumentar, durante la inferencia, las activaciones numéricas que componen ese concepto
  • Extracción simple de vectores de steering

    • Se puede pasar al modelo el mismo conjunto de 100 prompts dos veces: una vez con prompts normales y otra agregando “respond tersely”
    • En cada par de prompts se mide la diferencia de activación del modelo, y al restar una matriz de activaciones de la otra se obtiene el vector de steering
    • Si se suma ese vector a la misma capa de activación para cualquier prompt, puede esperarse que el modelo responda de forma más concisa
    • Las activaciones medibles existen en varios puntos, como después de attention o entre capas, así que se puede elegir uno o probar varios para encontrar dónde funciona mejor
  • Extracción de características más sofisticada

    • También se puede entrenar un modelo aparte para extraer características (features), es decir, patrones de comportamiento que aparecen juntos dentro de las activaciones del modelo original
    • Después de volver a mapear las características extraídas a conceptos individuales, es posible aumentar las activaciones de la misma manera
    • Los sparse autoencoders de Anthropic se presentan como un enfoque cercano a este principio
    • Este método puede captar patrones más profundos que un simple vector diferencial, pero su costo en tiempo, cómputo y especialización es mucho mayor
    • Hay un análisis en profundidad que trata este enfoque con modelos LLaMA abiertos, y los resultados de intentarlo directamente fueron más bien mixtos

Por qué el steering es interesante

  • El steering parece la posibilidad de encontrar un dial interno de “smart” en el modelo y girarlo hasta el máximo, en lugar de empujarlo laboriosamente hacia una distribución más “inteligente” mediante la construcción del dataset
  • Incluso para ajustar el tono, en vez de agregar o quitar modificadores como “you MUST” en el prompt, uno podría imaginar un panel de control que mueva directamente deslizadores como concisión/verborrea o esmero/velocidad
  • Golden Gate Claude, que arrastra todas las oraciones hacia el Golden Gate Bridge, es un ejemplo interesante e inquietante de cuán fuerte puede cambiar el steering el comportamiento de un modelo

Por qué el steering no se ha usado ampliamente

  • Dentro de la investigación en IA, el steering ocupa una especie de lugar de “clase media”, así que no termina de encajar bien ni para los grandes laboratorios de IA ni para los usuarios comunes
  • Los grandes laboratorios lo necesitan menos

    • Los grandes laboratorios de IA pueden manipular directamente sus modelos sin recurrir a una incómoda “cirugía cerebral” durante la inferencia
    • Anthropic sí trabaja esta área, pero sobre todo desde la perspectiva de la interpretabilidad y la seguridad
    • Cuando los grandes laboratorios quieren un comportamiento específico, normalmente eligen entrenar el modelo en lugar de usar steering
  • Los usuarios comunes no tienen acceso

    • Los usuarios comunes que usan LLM vía API no pueden acceder a los pesos ni a las activaciones del modelo, así que es difícil conseguir la información necesaria para hacer steering
    • Por ejemplo, si se tratara de identificar o exponer el vector de steering de GPT-5.5, la única parte que podría hacerlo sería OpenAI
    • Con modelos de pesos abiertos sí es posible, pero hasta hace poco se consideraba que no había modelos abiertos lo bastante potentes como para intentar steering
  • Para muchos usos básicos, el prompt es más eficiente

    • La idea de manipular directamente el “cerebro” del modelo suena impactante, pero los tokens del prompt también cambian directamente su estado interno
    • El steering permite controlar las activaciones con bastante detalle, pero cambiar el wording del prompt también puede dar un control muy fino
    • En vez de usar steering para volver al modelo más verboso, es mucho más simple simplemente pedírselo

¿Se puede usar steering para algo difícil de pedir por prompt?

  • Una posibilidad en la que el steering sí podría volverse realmente útil es encontrar y ajustar conceptos que no pueden pedirse por prompt
  • La “inteligencia” parece candidata, pero los modelos de la generación actual ya tienen esa clase de rasgo incorporado, así que prompts de la era 4o como “you are an expert” ya no logran efectos significativos con facilidad
  • Que exista un vector de steering para la “inteligencia” es una cuestión empírica, pero hay escepticismo sobre su existencia
  • Un vector de steering que componga un concepto difícil como la “inteligencia” podría abarcar casi el mismo alcance que el conjunto completo de pesos del modelo; en ese caso, encontrar el vector se reduce al problema de entrenar un modelo más inteligente
  • Si se reemplazaran las activaciones de cada capa de GPT-2 por activaciones de un modelo mucho más fuerte con la misma estructura, el resultado sería mejor, pero en ese caso no se estaría volviendo más inteligente a GPT-2, sino que en la práctica sería más parecido a hablar con un modelo más potente
  • Un steering lo bastante sofisticado terminaría sustituyendo al modelo real, y la inteligencia pasaría a estar en el steering mismo, no en el modelo original

El steering como compresión de datos

  • Otra posibilidad del steering es encapsular en un solo vector de steering un concepto que normalmente requeriría muchos tokens, para ahorrar ventana de contexto
  • Esto puede verse como una forma de mover un concepto desde la memoria de trabajo del modelo hacia una memoria implícita
  • Por ejemplo, si parte del conocimiento que GPT-5.5 obtiene al leer rápidamente un codebase específico quedara enterrado en sus activaciones, se puede pensar en si eso podría extraerse como un vector de steering muy grande
  • El concepto de “estar en un estado en el que conoce mi codebase” también podría ser, al igual que la “inteligencia”, lo bastante complejo como para requerir un fine-tuning completo
  • Los resultados en la industria de hacer fine-tuning del modelo con un codebase tampoco han sido, en general, muy exitosos
  • Aun así, no se puede descartar por completo la posibilidad de una forma de steering de este tipo

Perspectivas y experimentos de la comunidad

  • El steering tiene atractivo, pero existe escepticismo de que la mayoría de sus beneficios puedan reproducirse con más eficiencia mediante prompts, y de que los objetivos más ambiciosos puedan reproducirse mejor con entrenamiento o fine-tuning
  • La comunidad open source todavía no ha trabajado mucho el steering, pero eso podría empezar a cambiar con avances como DeepSeek-V4-Flash y DwarfStar 4
  • Si el steering tiene aplicaciones prácticas reales, es posible que empiecen a mostrarse dentro de 6 meses
  • También será interesante ver si herramientas específicas por modelo, como DwarfStar 4, llegan a incluir una biblioteca de características que se puedan potenciar
  • Así como cuando aparece un modelo popular de pesos abiertos la comunidad saca rápido wrappers y versiones cuantizadas, también podría surgir un movimiento para extraer características potenciables desde el modelo

Discusión adicional: eliminación de rechazos y steering en runtime

  • Después, en los comentarios de Hacker News, varios comentaristas y antirez plantearon que el steering puede cambiar comportamientos aprendidos que son difíciles de modificar con prompts
  • Un ejemplo representativo es la eliminación del rechazo (refusal) del modelo
  • Según un comentarista, en modelos abiertos la descensura o abliteration ya se realiza de esta manera
  • Según antirez, modificar los pesos puede dañar más la capacidad del modelo, mientras que un steering en runtime más ligero puede aplicarse solo cuando se necesita

1 comentarios

 
GN⁺ 2 시간 전
Opiniones de Hacker News
  • Gracias por compartirlo, y para aclarar una cosa: con la función de steering de DwarfStar sí se pudo eliminar por completo el rechazo de DS4
    Lo de juguete es el dataset de ejemplo, o sea, solo los pares de prompts que yo proporcioné, no la función en sí
    Me pareció que cualquiera que pueda crear un dataset adecuado y entienda cómo usar una función de steering bien documentada puede acceder al steering
    No tengo claro si sea bueno que también tenga acceso a un modelo sin rechazos la gente que solo va a copiar y pegar sin entender nada, por eso no publiqué el archivo de steering, pero sigo bastante confundido al respecto
    Últimamente el soporte se amplió y ahora se puede aplicar el vector de steering a valores de activación en distintos momentos, como siempre, solo después de pensar, o solo fuera de las llamadas a herramientas
    Un punto importante que mucha gente no conoce es que hacer steering por dirección de vectores dentro del motor de inferencia es mucho mejor que usar un GGUF modificado de la misma forma
    Cuanto más steering haces, más se deteriora la capacidad del modelo, así que aplicarlo en tiempo de ejecución permite usar solo el mínimo necesario para el objetivo deseado, y también hace posible aplicarlo solo en los momentos elegidos
    Aún no lo implementé, pero también parece posible aplicar steering solo cuando la energía de la dirección de rechazo supera cierto umbral, y hay mucho espacio para experimentar

    • Según entendí, DeepSeek V4 casi no tiene, o no tiene, el comportamiento de rechazo que suele verse en modelos de IA occidentales ante entradas inofensivas
      ¿Esto se refiere principalmente a casos de evaluación de seguridad de software?
  • Me sorprende que esta publicación no mencionara el mayor caso de uso de los vectores de steering, o sea, la posibilidad de eliminar el rechazo del modelo (abliteration o uncensoring)
    Hace tiempo hubo un paper que decía que “la mayoría de los rechazos están sobre un solo vector”, y que si encontrabas ese vector y lo debilitabas, podías hacer que el modelo se saltara los rechazos y respondiera normalmente a “cualquier” solicitud
    En los primeros modelos, donde el rechazo se aprendía con ajuste fino supervisado (SFT), era bastante viable; en los modelos más recientes parece un poco más complejo, pero hasta cierto punto sigue siendo posible
    Ya existen librerías que automatizan este proceso para reducir los rechazos, y normalmente se enfocan en identificar y modificar el modelo antes de distribuirlo como un modelo descensurado
    El enfoque de steering permite activar dinámicamente este cambio del vector, así que aunque el proceso de abliteration perjudique la precisión en tareas no relacionadas, no hace falta modificar el modelo en sí

    • p-e-w habló de esto en Discord hace unos días
      El método de una sola neurona parece ser bastante malo para KLD, así que por eso da la impresión de que se impusieron las técnicas más recientes
    • No entiendo por qué están tan obsesionados con la censura
      Si le das la vuelta a la perspectiva, no decir falsedades como “las vacunas son dañinas” también entra dentro de la censura
      La ciencia y la lógica suelen tratar estos temas como censura, pero un modelo muestreado de manera uniforme de internet podría pensar que las vacunas son dañinas
      Un ajuste menos ingenuo censuraría estos contextos problemáticos
      Por eso me confunde por qué pensarían que cierto sesgo está siendo censurado y que quitarlo mejoraría la usabilidad general
  • Lo realmente interesante del repositorio de DS4, en mi opinión, es la parte de explorar las perillas de ajuste que los laboratorios frontier han mantenido ocultas a los usuarios, y pensar cómo podrían integrarse en flujos reales de desarrollo e interacción
    Explorar distintas formas de interacción y pensar, por ejemplo, cómo incorporar de manera útil el steering en la interfaz de usuario está buenísimo
    Una vez que se revele el secreto y los usuarios entiendan el nivel de control y utilidad que pueden obtener de modelos cuyo interior queda expuesto de esta manera, el steering va a convertirse en una pieza central de la caja de herramientas
    Probablemente se volverá natural esperar este nivel de control de un modelo o de su proveedor

  • La explicación de que “DwarfStar 4 es una versión reducida de llama.cpp hecha para ejecutar solo DeepSeek-V4-Flash” no es correcta
    DwarfStar 4 es un proyecto propio
    Sí le debe mucho a llama.cpp, pero no es una versión recortada

    • Sí. La superposición de código es mínima, apenas algunos kernels
      Hay algo de código de cuantización para el cuantizador que implementé, y DwarfStar 4 no es un fork de llama.cpp
      Dicho eso, sin llama.cpp no habría podido verificar rápidamente detalles importantes, así que el proyecto habría sido mucho más pobre
      Pero no es un llama.cpp reducido
      Esto no le quita importancia a cuánto ha significado llama.cpp para este proyecto y para todos los que vinieron después
      Lo importante no es el código, sino el camino a seguir, los formatos de cuantización, las lecciones, y los kernels optimizados que uno puede revisar para aprender patrones
    • La verdad parece estar en algún punto intermedio
      DwarfStar 4 parece existir principalmente gracias a llama.cpp, sus autores claramente se inspiraron mucho en el código de llama.cpp, y algunas partes incluso se tomaron de ahí directamente con la atribución correspondiente
      No lo digo como algo malo, me parece bien
      ds4.c no enlaza con GGML, pero existe gracias al camino que abrió el proyecto llama.cpp, a los kernels desarrollados allí, a los formatos de cuantización, al ecosistema GGUF y al conocimiento de ingeniería ganado con mucho esfuerzo
      Al crear una ruta de inferencia dedicada para DeepSeek V4 Flash, la implementación, los kernels, las pruebas y las decisiones de diseño fueron referencias clave, y también se conservaron o adaptaron piezas a nivel de código fuente bajo licencia MIT, como layouts y tablas de cuantización de GGUF, lógica de cuantización y producto punto en CPU, y algunos kernels
      Por eso, como muestra de agradecimiento sincero, en el archivo LICENSE se mantiene el aviso de copyright de los autores de GGML - https://github.com/antirez/ds4#acknowledgements-to-llamacpp-...
      https://news.ycombinator.com/item?id=48142885 fue bastante divertido para jugar durante unos dos días desde entonces, y hasta ahora subí la velocidad de generación de 47.85 t/s a 57.07 t/s
  • He intentado volver a la IA más radical con steering
    Artículo: https://www.outcryai.com/research/shift-a-models-political-i...
    App: https://apps.apple.com/us/app/outcry-activist-ai/id676208676...
    Esta técnica tiene mucho potencial

  • Buen artículo, pero hay algo que me confunde
    En el texto dice que el steering solo funciona en modelos locales, pero GitHub Copilot tiene la función “steer with message”, que permite corregir el rumbo a mitad de ejecución, y la uso seguido
    Supongo que debe ser otro tipo de steering
    Lo más probable es que el steering de agentes inserte otro mensaje de usuario en medio del flujo de ida y vuelta entre el arnés y el LLM

  • ¿Cómo se puede decir que el modelo es local? Si necesita unos 192GB de RAM, eso ya parece demasiado como para considerarlo local

    • También corre en una MacBook de 96GB
      Con 128GB mejor, revisa el README de DwarfStar
    • ¿Si tienes el hardware, puedes descargarlo y ejecutarlo? Si la respuesta es sí, entonces es local, tengas o no realmente ese hardware
      Es parecido a preguntarle a alguien que no tiene los dispositivos inalámbricos o la antena necesarios si Zigbee puede considerarse local/LAN
  • Al ver esta línea en el repositorio enlazado de DwarfStar, me acordé de los vectores de control
    y = y - scale * direction[layer] * dot(direction[layer], y)
    https://vgel.me/posts/representation-engineering/ explica los vectores de control como “vectores que se pueden aplicar a las activaciones del modelo durante la inferencia para controlar su comportamiento sin prompts adicionales; estrictamente hablando, una lista de vectores, uno por capa”

  • Esto parece más para investigación en deep learning que para algo que realmente querría usar

    • No. Si cargas un vector anti-rechazo, por ejemplo puedes hacer muchas preguntas relacionadas con seguridad informática
      Es mucho mejor que un modelo que te repite todo el tiempo “no puedo ayudarte con esta solicitud problemática” cuando lo que quieres es aprender
  • No estoy muy de acuerdo con la parte de que “solo ajustando la redacción del prompt ya se puede tener un control muy fino”
    Puede que yo no sepa escribir prompts, pero superar los sesgos que vienen de los datos de entrenamiento o del entrenamiento posterior me parece imposible
    Con prompts apenas se pueden sacar patrones de los datos de entrenamiento, y en realidad no siento que haya mucho control fino