1 puntos por GN⁺ 2025-05-01 | 1 comentarios | Compartir por WhatsApp
  • MiMo-7B de Xiaomi es una serie de modelos de lenguaje de 7B entrenados desde cero para tareas de razonamiento, y publica como open source checkpoints de modelos base, SFT y RL
  • En la actualización del 30 de mayo de 2025, el dataset SFT se amplió de unas 500 mil a 6 millones de muestras, y el tamaño de la ventana de entrenamiento RL se extendió de 32K a 48K, con lo que el rendimiento de MiMo-7B-RL-0530 en AIME 2024 llegó a 80.1
  • El preentrenamiento usa unos 25 billones de tokens y una estrategia de mezcla de datos en 3 etapas, e incluye filtrado de datos, datos sintéticos de razonamiento y Multiple-Token Prediction para aumentar la densidad de patrones de razonamiento
  • El postentrenamiento usa 130 mil problemas de matemáticas y código, un verificador basado en reglas, recompensa de exactitud basada en reglas, recompensa basada en dificultad de tests para problemas de código y una estrategia de remuestreo de problemas fáciles
  • Para el despliegue se ofrecen ejemplos con SGLang, el fork de vLLM de Xiaomi y HuggingFace; la validación de MiMo en otros motores de inferencia aún no se ha completado y se aceptan contribuciones

Objetivos y alcance de publicación de la serie MiMo-7B

  • MiMo-7B es una serie de modelos cuyo objetivo es extraer el potencial de razonamiento de los modelos de lenguaje desde el preentrenamiento hasta el postentrenamiento
  • Los checkpoints publicados son los siguientes 4 tipos
    • MiMo-7B-Base: modelo base con potencial de razonamiento
    • MiMo-7B-RL-Zero: modelo entrenado con RL a partir del modelo base
    • MiMo-7B-SFT: modelo entrenado con SFT a partir del modelo base
    • MiMo-7B-RL: modelo entrenado con RL a partir del modelo SFT
  • Los modelos están disponibles en HuggingFace y ModelScope
  • El reporte técnico está publicado en arXiv

Actualización del 30 de mayo de 2025

  • MiMo-7B-RL-0530 refleja los resultados de ampliar el dataset SFT de unas 500 mil a 6 millones de muestras y de seguir extendiendo el tamaño de la ventana de entrenamiento RL de 32K a 48K
  • En AIME 2024, MiMo-7B-RL-0530 registró 80.1, superando el 79.8 de DeepSeek R1
  • Los principales cambios en benchmarks son los siguientes
    • MATH500 Pass@1: 95.8 → 97.2
    • AIME 2024 Pass@1: 68.2 → 80.1
    • AIME 2025 Pass@1: 55.4 → 70.2
    • LiveCodeBench v5 Pass@1: 57.8 → 60.9
    • LiveCodeBench v6 Pass@1: 49.3 → 52.2
    • GPQA-Diamond Pass@1: 54.4 → 60.6
    • Alignbench1.1, evaluación con GPT-4.1: 6.9 → 7.4

Preentrenamiento: modelo base para razonamiento

  • MiMo-7B-Base es un modelo base entrenado desde cero para tareas de razonamiento
  • El preentrenamiento usa unos 25 billones de tokens
  • En el procesamiento de datos, se mejoran las herramientas de extracción de texto y se aplica filtrado multidimensional de datos para aumentar la densidad de patrones de razonamiento de los datos de preentrenamiento
  • Se usan varias estrategias para generar diversos datos sintéticos de razonamiento a gran escala
  • En el preentrenamiento se aplica una estrategia de mezcla de datos en 3 etapas
  • Se incorpora Multiple-Token Prediction como objetivo adicional de entrenamiento para mejorar el rendimiento del modelo y la velocidad de inferencia

Postentrenamiento y método de entrenamiento RL

  • Para el postentrenamiento se usan como datos de entrenamiento RL 130 mil problemas de matemáticas y código verificables con un verificador basado en reglas
  • Cada problema pasa por depuración y evaluación de dificultad para asegurar la calidad
  • Para evitar posibles hacks de recompensa, solo se usa recompensa de exactitud basada en reglas
  • Para aliviar el problema de recompensas escasas en problemas de código difíciles, se introduce una recompensa de código basada en la dificultad de los tests
    • Se asignan puntajes detallados a casos de prueba de distinta dificultad
    • La política puede optimizarse con señales de recompensa más densas
  • En problemas fáciles se aplica una estrategia de remuestreo de datos para aumentar la eficiencia del muestreo de rollouts y, en particular, estabilizar las actualizaciones de política en la parte final del entrenamiento RL

Infraestructura RL y arquitectura del modelo

  • Seamless Rollout Engine fue desarrollado para acelerar el entrenamiento RL y la validación
  • El diseño combina rollouts continuos, cálculo asíncrono de recompensas y terminación anticipada para reducir el tiempo ocioso de las GPU
  • Las mejoras de rendimiento son las siguientes
    • Velocidad de entrenamiento 2.29 veces mayor
    • Velocidad de validación 1.96 veces mayor
  • La capa MTP de MiMo-7B se ajusta durante el preentrenamiento y SFT, y queda fija durante RL
  • Cuando se usa 1 capa MTP para decodificación especulativa, la tasa de aceptación es de aproximadamente 90%
  • vLLM soporta MTP y refuerza la robustez del motor de inferencia del sistema RL

Resultados de evaluación

  • Se presenta que MiMo-7B-RL muestra un rendimiento comparable a OpenAI o1-mini en tareas de razonamiento matemático y de código
  • En la comparación con modelos principales, los resultados de matemáticas y código de MiMo-7B-RL son los siguientes
    • MATH-500 Pass@1: 95.8
    • AIME 2024 Pass@1: 68.2
    • AIME 2025 Pass@1: 55.4
    • LiveCodeBench v5 Pass@1: 57.8
    • LiveCodeBench v6 Pass@1: 49.3
  • En la comparación interna de la serie MiMo-7B, el rendimiento aumenta considerablemente tras aplicar RL
    • MATH500: Base 37.4 → RL-Zero 93.6 → SFT 93.0 → RL 95.8
    • AIME 2024: Base 32.9 → RL-Zero 56.4 → SFT 58.7 → RL 68.2
    • LiveCodeBench v5: Base 32.9 → RL-Zero 49.1 → SFT 52.3 → RL 57.8
  • La configuración de evaluación es temperature=0.6
  • Las condiciones de evaluación repetida son las siguientes
    • AIME24 y AIME25 son el promedio de 32 repeticiones
    • LiveCodeBench v5, LiveCodeBench v6, GPQA-Diamond e IF-Eval son el promedio de 8 repeticiones
    • MATH500 y SuperGPQA son una ejecución única

Despliegue y uso para inferencia

  • SGLang soporta MiMo de forma mainstream mediante soporte para modelos MiMo y soporte MTP
  • Para la inferencia con vLLM se recomienda usar el fork de vLLM de Xiaomi
    • Fork recomendado: XiaomiMiMo/vllm
    • Ese fork fue desarrollado con base en vLLM 0.7.3
  • También se puede registrar el loader de vLLM de forma que no cargue los parámetros MTP
  • El ejemplo de inferencia de HuggingFace usa AutoModelForCausalLM.from_pretrained y AutoTokenizer.from_pretrained
  • La configuración de prompt recomendada es system prompt vacío
  • La validación de MiMo en otros motores de inferencia aún no se ha completado, y se aceptan contribuciones basadas en la definición del modelo del repositorio de HuggingFace

1 comentarios

 
GN⁺ 2025-05-01
Opiniones de Hacker News
  • Me pareció interesante cómo el paper manejó la etapa de aprendizaje por refuerzo para datos de código. Entrenaron ejecutando con pruebas unitarias tareas de generación de código difíciles pero resolubles, y me pregunto si otros modelos también pasan por una etapa de entrenamiento así.
    En el paper dicen que eliminaron los problemas sin casos de prueba; que, aunque hubiera código de respuesta, los excluyeron si no pasaban todas las pruebas; y que, para los problemas sin código de respuesta, los descartaban si ninguna de las 16 muestras de un modelo avanzado de razonamiento resolvía alguna prueba. También dicen que filtraron los problemas fáciles con la versión SFT de MiMo-7B, y que al final armaron 30 mil problemas de código.
    Además, como en cada iteración de aprendizaje por refuerzo tenían que evaluar miles de problemas y cientos de casos de prueba por problema, dicen que crearon un entorno de juez en línea que ejecuta pruebas unitarias en paralelo a escala masiva para eliminar el tiempo ocioso de las GPU.

    • ¿Hay casos en los que se haga aprendizaje por refuerzo sin pruebas unitarias? Si no, sería sorprendente, porque implicaría que otros creadores de modelos ignoran la precisión.
      Para problemas pequeños y modulares quizá sea posible, pero en problemas con entradas de 200 mil tokens este enfoque podría ser difícil.
  • Me pregunto por qué hay tantos modelos de IA salidos de China que son modelos con prioridad en inglés. No sé si es que no tienen intención de enfocarse en usuarios locales, o si publicar un modelo con prioridad en chino hace que sea difícil atraer atención en Occidente.

    • CommonCrawl es el dataset de crawling legal más grande y accesible, que recopila datos desde 2008. Casi todo el mundo lo usa como dataset base para entrenar grandes modelos de lenguaje fundacionales, y como la mayoría está en inglés, los modelos terminan siendo buenos en inglés.
      https://commoncrawl.org/
    • En la investigación científica, sobre todo en los benchmarks de IA, creo que el inglés se volvió de facto el idioma estándar.
      Probar algo directamente en chino es claramente imposible, así que hace falta traducción.
    • Algo que me pareció interesante en este paper que intenta entender los LLM es la parte en la que los modelos conectan palabras y conceptos de distintos idiomas mediante circuitos multilingües (Multilingual Circuits).
      Los ejemplos son cosas como que el antónimo de “small” en inglés lleva a big, el antónimo de “petit” en francés lleva a grand, y el antónimo de “小” en chino lleva a “大”. La figura relacionada también está bastante buena.
      Aunque el inglés es la lengua franca de internet y ocupa el corpus más grande, los modelos principales pueden usar datasets en inglés para construir asociaciones entre idiomas. Por eso, también pueden surgir capacidades de IA y razonamiento mucho más fuertes en comunidades lingüísticas donde, por falta de datos, tecnología y recursos, es difícil crear modelos regionales propios.
      https://www.anthropic.com/research/tracing-thoughts-language...
      https://www.anthropic.com/_next/image?url=https%3A%2F%2Fwww-...
    • Creo que una parte considerable del material de entrenamiento de alta calidad está en inglés.
    • El internet chino está compuesto casi por completo por unos cuantos jardines cerrados fuertemente controlados por grandes empresas. Si cada compañía despliega ejércitos de ingenieros para proteger sus datos, los crawlers no funcionan bien.
      Además, muchos sitios web populares son solo para apps, así que es imposible conseguir el corpus necesario para entrenar buenos LLM.
  • Para ser un modelo 7B, su rendimiento en coding es increíblemente fuerte. Gemini Pro 2.5, que uso, tiene 67.8, este modelo tiene 57.8, y está muy cerca de Gemini 2.5 Flash, que tiene 60.6.
    Después de ver lo de llama4 me volví bastante escéptico con los resultados de evaluación, así que habrá que ver dónde queda en evaluaciones privadas, pero las cifras actuales son muy impresionantes.

  • Versión GGUF que se puede usar en LM Studio, Ollama, etc.: https://huggingface.co/jedisct1/MiMo-7B-RL-GGUF

  • Me da curiosidad saber si, al usar archivos gguf en Ollama, normalmente crean y usan directamente el Modelfile que suele ir junto con ellos, o si esperan que los valores predeterminados de Ollama también se adapten bien a modelos nuevos
    https://github.com/ollama/ollama/blob/main/docs%2Fmodelfile....

    • Uno de los objetivos clave de Georgi Gerganov al diseñar GGUF era que no hicieran falta otros archivos. Desde el primer punto de la especificación, literalmente se trata de una distribución en un solo archivo
      Dice que toda la información necesaria para cargar el modelo está dentro del archivo del modelo y que el usuario no necesita aportar información adicional
      https://github.com/ggml-org/ggml/blob/master/docs/gguf.md
      Apenas se había eliminado la confusión de múltiples archivos, y es una lástima que Ollama la haya vuelto a agregar
    • Al hacer ollama pull, el Modelfile también se descarga junto con el blob. Si quieres modificar un modelo de forma permanente, puedes copiar el Modelfile a un editor de texto y, con los cambios necesarios, crear un modelo nuevo a partir del Modelfile existente
      Mi flujo de trabajo en Open WebUI es revisar con ollama show qwen3:30b-a3b-q8_0 --modelfile, pegar el contenido del Modelfile en admin -> models -> OpenwebUI, cambiarle el nombre a algo como qwen3:30b-a3b-q8_0-monkversion-1, ajustar el número de capas con parámetros como num_gpu 90 y luego conservar o eliminar el archivo anterior
      Dentro del Modelfile aparece una indicación de cambiar FROM a algo como # FROM qwen3:30b-a3b-q8_0 para crear un nuevo Modelfile, y también hay que verificar que la ruta sea correcta. En mi caso guardo los modelos en una unidad NVMe grande, no en la ubicación predeterminada de Ollama, así que esto es importante
      Dicho sea de paso, odio el flujo de trabajo con Modelfile porque es un patrón realmente engorroso y pésimo. Algunos modelos pesan 30–60 GB, y copiar todo solo para cambiar un parámetro es una forma tonta de hacerlo
      Aun así, Ollama hace muchas cosas bien y facilita empezar. vLLM, SGLang, Mistral.rs y llama.cpp requieren mucho más trabajo de configuración
    • Normalmente al principio uso los valores predeterminados y, si es un modelo que voy a seguir usando, uso un Modelfile. Supongo que también se puede volcar el Modelfile que usa Ollama y tomarlo como plantilla
  • Me parece un poco gracioso que en los benchmarks dejen fuera a modelos de punta como O3, Gemini Pro o Claude 3.7, que actualmente tienen el mejor rendimiento en varias evaluaciones

    • Esos modelos son muchísimo más grandes y son modelos cerrados. Tampoco es que sus proveedores hayan identificado y publicado versiones destiladas
      Hay que tener en cuenta que la mayoría de los comparados son modelos 7B. La excepción también es un modelo de pesos abiertos, Qwen-2.5-32B-RL-Zero, y MiMo-7B rinde incluso mejor que un modelo de 32B parámetros
    • Creo que el objetivo aquí es compararlo con modelos similares optimizados para ejecutarse offline o en hardware móvil
  • MiMo-7B afirma haber entrenado un modelo 7B desde cero y superar a modelos más grandes como Qwen-32B, además de igualar a OpenAI o1-mini en benchmarks de matemáticas y código. Me pregunto si esto es una señal de que la preentrenamiento + optimización con RLHF por fin está empezando a superar la fuerza de la escala, o si solo se volvió mejor el arte de hacer benchmarks de capacidades estrechas

    • Me pregunto si se refieren a Qwen 3 o 2.5
  • En el README no aclaran qué tipo de aprendizaje por refuerzo es; solo dicen RL. Sé que los investigadores están ocupados y que escribir bien lleva tiempo, pero ojalá no omitieran detalles como ese

    • En el informe técnico tratan con bastante profundidad cómo usan el aprendizaje por refuerzo, como una función objetivo GRPO modificada. En cuanto al README, creo que la mayoría de las personas activas en este campo entienden qué significa “RL” en modelos de razonamiento
    • Entendí que “RL” significa aprendizaje por refuerzo, y aunque hace unos 10 años que estudié IA en la universidad, me parece que escribir simplemente RL es suficientemente válido. Me pregunto si lo que quieren es más especificidad, como si usaron Q-Learning u otro algoritmo
  • Me pregunto si usarán este modelo en el asistente de IA de los teléfonos de la serie Xiaomi 15. Probablemente sea bastante posible, pero no sé bien qué resultados dará

  • Es difícil creer que salgan estos números de benchmark de un modelo 7B

    • El rendimiento de los modelos pequeños sigue subiendo poco a poco. No superan de golpe a los modelos principales de las grandes empresas, así que no llegan a los titulares, pero todos se han vuelto bastante capaces
      Hace poco probé un modelo 12B cualquiera en Ollama y, considerando la máquina que estaba usando, me sorprendió lo bien y rápido que se sentía. Hace más o menos un año no habría sido así
    • Si estos números parecen poco realistas, hay que ver los números de benchmark de qwen3-4B
      https://qwenlm.github.io/blog/qwen3/
    • Mi conjetura es que parece haber sobreajuste a las pruebas
    • En la práctica, todos los LLM se entrenan con benchmarks, así que la palabra “benchmark” aplicada a los LLM se está volviendo bastante carente de significado
    • El mejor modelo de hoy seguirá convirtiéndose en un peor modelo durante el resto de su vida