243.000 textos para un modelo pequeño de 29 millones de parámetros: cómo el autor seleccionó datos de Wikipedia y libros de psicología

En la segunda parte de su serie en Habr, un autor que no es programador cuenta cómo reunió 243.412 textos para entrenar un modelo pequeño de 29 millones de parámetros. Tomó 200.000 párrafos de la Wikipedia rusa y 50.000 párrafos de sus propios libros de psicología. Tras eliminar repetidos quedaron 248.379, y 4.967 de ellos se reservaron para comprobar la calidad. El modelo aprende a reproducir los embeddings (vectores de números en los que se convierte un texto) de un modelo grande, una técnica llamada destilación. El código lo escribió la red neuronal DeepSeek; el autor solo lo depuró. Wikipedia aporta amplitud de temas y la psicología sirve a la tarea objetivo. De un solo fragmento del volcado (archivo) de Wikipedia, de 380 MB, salieron 1,24 millones de párrafos. Tras filtrar por longitud y proporción de letras y eliminar duplicados, el corpus completo sumó 1.359.942 textos. Para el entrenamiento se usaron 5,6 veces menos: así resulta más barato calcular los embeddings con el modelo grande y entrenar el pequeño en una GPU T4 de Colab. • El procesamiento de Wikipedia fue a unos 1185 artículos por segundo: 76.000 artículos en 64 segundos. • Corpus de psicología: 587 archivos, 382.327 párrafos, unos 18,9 millones de palabras. • En el conjunto de entrenamiento la psicología representa cerca del 20 %: 48.477 filas de 243.412.

Procesado por IA desde Habr AI; editado por Hamidun News
243.000 textos para un modelo pequeño de 29 millones de parámetros: cómo el autor seleccionó datos de Wikipedia y libros de psicología
Fuente: Habr AI. Collage: Hamidun News.
Escuchar artículo
Ficha técnica y cifras clave
ParámetroDatos
Fuente originalHabr AI ↗
Editor jefe
Dato clave #1El procesamiento de Wikipedia fue a unos 1185 artículos por segundo: 76.000 artículos en 64 segundos.
Corpus de psicología587 archivos, 382.327 párrafos, unos 18,9 millones de palabras.
Dato clave #3En el conjunto de entrenamiento la psicología representa cerca del 20 %: 48.477 filas de 243.412.

El autor de una serie en Habr, que no se considera programador, prepara los datos para un modelo pequeño de 29 millones de parámetros. La cifra del título, 243.000, es el número de textos que quedan en el conjunto de entrenamiento. El autor toma 200.000 párrafos de la Wikipedia rusa y 50.000 párrafos de libros de psicología; tras eliminar repetidos obtiene 248.379, de los cuales 4.967 se destinan a validar la calidad y 243.412 se quedan para entrenar.

Para qué sirven estos textos. Un embedding es un vector de números en el que se convierte un texto para que una máquina pueda comparar textos por su significado. El modelo pequeño (el alumno) aprende a producir los mismos vectores que el grande (el profesor).

Esta técnica se llama destilación. El objetivo final de la serie, de diez partes, son los embeddings isótropos: vectores que llenan el espacio de forma uniforme en lugar de agruparse en un haz estrecho. En la segunda parte el autor analiza los datos: de dónde sacarlos, cómo limpiarlos y cuántos se necesitan en realidad.

Todo el código lo escribió la red neuronal DeepSeek, mientras que el autor se ocupó de la depuración y la corrección de errores.

Wikipedia desde un archivo de 380 MB: procesamiento en un minuto

Hacen falta dos tipos de texto. El corpus general da al alumno una cobertura amplia de temas: sin él, el modelo se sobreajustaría a un área estrecha y funcionaría mal con textos ajenos. El corpus de dominio, de psicología, enseña las particularidades de la tarea por la que se emprendió todo.

El volcado completo de la Wikipedia rusa pesa unos 5,5 GB comprimido, mucho para Colab con su disco limitado. La versión multistream ayuda: el mismo volcado, pero dividido en cientos de archivos pequeños. El autor descargó uno de ellos, ruwiki-latest-pages-articles-multistream1.xml-p1p224167.bz2, de 380 MB. Para 250.000 textos habrían bastado entre 100 y 200 MB de texto limpio, pero salieron 1,24 millones de párrafos y 835,9 MB.

El texto se extrajo con la utilidad WikiExtractor, con la opción --no-templates para no arrastrar plantillas wiki, y con cuatro procesos. Velocidad: 1185 artículos por segundo, unos 76.000 artículos en 64 segundos.

Tras ello quedan tres tipos de basura:

  • títulos de sección del tipo == История ==;
  • paréntesis vacíos () donde se eliminaron plantillas;
  • la primera línea dentro de <doc>, que duplica el título del artículo.

El script lo limpia todo con expresiones regulares y descarta los párrafos de menos de 40 caracteres. Efecto secundario: en lugar de «Площадь — 65 300 км²» queda «Площадь — км²». El autor lo considera inofensivo: los números se dividen igualmente en subtokens (fragmentos pequeños de palabras) y para el embedding importa más el contexto de la frase.

Psicología: 587 archivos y un umbral de diez palabras

El corpus de dominio sale de una colección personal de libros en formato .md: psicología, psicoterapia, psiquiatría, estadística matemática para psicólogos, anatomía y fisiología. El autor no publica los textos. El script elimina el marcado Markdown y las etiquetas HTML, une las palabras cortadas por guiones al final de línea y conserva solo las líneas de al menos diez palabras. Así desaparecen números de página, encabezados repetidos y títulos sueltos.

Resultado:

  • 587 archivos;
  • 382.327 párrafos;
  • unos 18,9 millones de palabras;
  • 258,4 MB.

Por qué de 1,36 millones de textos se usan 243.000

Primero se aplica un filtro por longitud (60–800 caracteres) y proporción de letras (al menos el 55 %), que descarta restos de tablas y fórmulas. Después quedan 1.056.981 párrafos de Wikipedia y 330.714 de psicología. El autor guarda el corpus completo de 1.359.942 textos únicos como reserva: si faltan datos, no tendrá que procesar Wikipedia de nuevo.

El conjunto de entrenamiento se recorta: 200.000 de Wikipedia y 50.000 de psicología con un seed fijo (valor inicial del generador de números aleatorios). Tras la deduplicación, es decir, la eliminación de repetidos, quedan 248.379 textos, 49.484 de ellos de psicología. Si una línea aparece en ambas fuentes, se asigna a psicología. Después, el 2 % (4.967 textos) pasa a validación, es decir, a comprobar la calidad, y 243.412 se quedan en el entrenamiento. Los índices de las filas de dominio en la parte de entrenamiento están en un array aparte, domain_indices.npy: son 48.477, y el resto acabó en validación. Gracias a ello, más adelante se puede evaluar la calidad por separado en psicología.

La razón del recorte es el coste. Un alumno de tres capas se entrena en una GPU T4 de Colab. Una época (pasada completa por los datos) con batch_size=64 sobre el volumen completo tarda de 15 a 20 minutos, y con 3–10 épocas se llega a horas. El mayor gasto es el profesor: debe calcular los embeddings de cada texto de entrenamiento, y incluso en GPU con 1,33 millones de ejemplos eso lleva decenas de minutos. Una muestra de 243.000 sale de 5 a 6 veces más barata y basta para un primer ciclo.

Qué puede llevarse un ingeniero

  • Las partes pequeñas del volcado multistream de Wikipedia evitan descargar 5,5 GB y encajan en un disco limitado.
  • Conservar el corpus completo en disco sale barato: remuestrearlo con otras cuotas lleva 28 segundos.
  • Una proporción de dominio de alrededor del 20 % en el entrenamiento es una referencia razonable para destilar hacia una tarea concreta.
  • El enfoque tiene defectos. El primer script mantiene unos 800 MB en memoria, y el tamaño de corpus.txt aparece en el texto con dos cifras distintas (753,8 y 718,9 MB). Para un experimento en Colab es tolerable.

La serie continúa con los embeddings del profesor y el entrenamiento del alumno.

Historia

Preguntas frecuentes sobre la noticia

¿Qué se sabe sobre Wikipedia desde un archivo de 380 MB: procesamiento en un minuto?

Hacen falta dos tipos de texto. El corpus general da al alumno una cobertura amplia de temas: sin él, el modelo se sobreajustaría a un área estrecha y funcionaría mal con textos ajenos. El corpus de dominio, de psicología, enseña las particularidades de la tarea por la que se emprendió todo. El volcado completo de la Wikipedia rusa pesa unos 5,5 GB comprimido, mucho para Colab con su disco limitado. La versión multistream ayuda: el mismo volcado, pero dividido en cientos de archivos pequeños. El autor descargó uno de ellos, ruwiki-latest-pages-articles-multistream1.xml-p1p2

¿Qué se sabe sobre Psicología: 587 archivos y un umbral de diez palabras?

El corpus de dominio sale de una colección personal de libros en formato .md: psicología, psicoterapia, psiquiatría, estadística matemática para psicólogos, anatomía y fisiología. El autor no publica los textos. El script elimina el marcado Markdown y las etiquetas HTML, une las palabras cortadas por guiones al final de línea y conserva solo las líneas de al menos diez palabras. Así desaparecen números de página, encabezados repetidos y títulos sueltos. Resultado: 587 archivos; 382.327 párrafos; unos 18,9 millones de palabras; 258,4 MB.

¿Qué se sabe sobre Por qué de 1,36 millones de textos se usan 243.000?

Primero se aplica un filtro por longitud (60–800 caracteres) y proporción de letras (al menos el 55 %), que descarta restos de tablas y fórmulas. Después quedan 1.056.981 párrafos de Wikipedia y 330.714 de psicología. El autor guarda el corpus completo de 1.359.942 textos únicos como reserva: si faltan datos, no tendrá que procesar Wikipedia de nuevo. El conjunto de entrenamiento se recorta: 200.000 de Wikipedia y 50.000 de psicología con un seed fijo (valor inicial del generador de números aleatorios). Tras la deduplicación, es decir, la eliminación de repetidos, quedan 24

ZK
Zhemal Khamidun — CPO de Alpina Digital, product manager de AlpinaGPT. Crea productos de IA desde 2019. Hamidun News es un proyecto personal que creció hasta ser un agregador en producción con más de 6.000 lectores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
¿Qué te parece?
Cargando comentarios…