Saltar al contenido principal
← Blog Lector de pruebas de velocidad

Lector de pruebas de velocidad v3 experimental: más aciertos, nuevos fallos

Continuamos la LoRA de v2 durante 80 pasos: 288/300 en prueba y 93/95 en oro. La mejora es pequeña y añade errores de detección e IP. Resultados, revisión de etiquetas y razones para conservar v2 como referencia.

Experimento 02 · Lector de pruebas de velocidad · v3 experimental

Continuamos la LoRA de la v2 para corregir etiquetas y enseñar al modelo a distinguir resultados completos de pruebas en curso. El candidato elegido mejora ligeramente el acierto completo: de 286 a 288 imágenes de prueba y de 92 a 93 en la revisión visual. También introduce errores: rechaza resultados válidos y aumenta las IP no sustentadas en la prueba histórica.

Por eso conservamos v2 como referencia recomendada. La v3 queda como candidato de investigación, sin sustitución automática. Las diferencias son pequeñas, sus intervalos incluyen cero y todavía falta una evaluación con capturas recientes e independientes.

Qué intentamos mejorar

La v2 ya devuelve bajada, subida y ping con sus unidades, más la IP cuando aparece. Quedaban pantallas de carga tomadas por resultados, confusiones entre latencia en reposo y con carga, y números de identificación copiados como IP. Probamos una continuación corta del mismo modelo, con el mismo prompt y procesamiento posterior, para aislar el efecto de los datos y los pesos.

El contrato se mantiene. Ejemplo ficticio con una IP reservada para documentación:

{"es_prueba_velocidad": true, "descarga": {"valor": 280, "unidad": "Kbps"}, "subida": {"valor": 31, "unidad": "Mbps"}, "ping": {"valor": 44, "unidad": "ms"}, "ip": "203.0.113.25"}

El modelo copia valor y unidad; el código convierte después a Mbps y valida el formato IPv4. Una IP con formato válido puede seguir siendo inventada. La salida debe pasar por el extractor del objeto JSON y su normalización: el texto bruto incluye prefijos de control y no cumple por sí solo JSON estricto.

Primero revisamos las etiquetas

Revisamos visualmente las 289 imágenes originales de validación y corregimos tres etiquetas: dos subidas omitidas y lecturas de ping equivocadas. Excluimos antes de generar predicciones una captura en MB/s, porque el esquema actual solo representa Kbps, Mbps y Gbps. Quedaron 288 imágenes originales revisadas; añadimos seis pantallas incompletas de otro origen para formar una validación de 294 imágenes: 123 positivas y 171 negativas.

En entrenamiento revisamos 20 positivos, corregimos dos pings y añadimos diez negativos de pruebas incompletas o pantallas de error. No revisamos manualmente todo el entrenamiento. Los ejemplos corregidos y los nuevos negativos se repitieron ocho veces cada uno, manteniendo la repetición previa de unidades raras. El conjunto suma 2.652 imágenes distintas y 2.772 filas; durante los 80 pasos se procesaron 1.280 ejemplos, menos de una época.

Corregir etiquetas cambia la evaluación, no los pesos. En las mismas 288 imágenes originales, v2 obtiene 279 aciertos con las etiquetas antiguas y 281 con las revisadas; el candidato obtiene 281 y 283, respectivamente. No atribuimos esa diferencia entre etiquetas al entrenamiento.

Cómo elegimos el candidato

Antes de entrenar fijamos los datos, sus hashes, la semilla y el criterio: al menos dos aciertos completos netos más que v2 en validación, sin aumentar falsos positivos ni IP inventadas y sin perder aciertos en las 288 imágenes originales. Comparamos los pasos 40 y 80 de una única continuación. Prueba, oro y archivo reservado no intervinieron en la elección.

ModeloValidación completa288 originales revisadas6 incompletasFalsos positivosIP inventadas
v2281/294281/2880/674
Paso 40282/294282/2880/684
Paso 80, seleccionado284/294283/2881/654

El paso 80 cumple el criterio: cuatro ganancias y una pérdida frente a v2. El paso 40 no lo cumple. Esta selección identifica el mejor candidato bajo el criterio fijado; no demuestra una mejora general. Tras elegirlo congelamos los pesos y no reabrimos la búsqueda al conocer los resultados finales.

Resultados sobre las mismas imágenes

Generamos de nuevo las respuestas del modelo base, v2 y el candidato con el mismo orden, etiquetas, prompt y procesamiento. Las respuestas brutas de base y v2 reprodujeron exactamente las 300 imágenes de prueba y las 95 de oro de sus evaluaciones anteriores. Cada acierto completo exige detección y todos los campos correctos, con valor y unidad e IP exacta.

ConjuntoBase sin ajustarv2v3 experimental
Prueba histórica: 147 positivas y 153 negativas144/300 (48,0%)286/300 (95,3%)288/300 (96,0%)
Oro visual: 57 positivas y 38 negativas34/95 (35,8%)92/95 (96,8%)93/95 (97,9%)
Archivo reservado: 2 positivas y 10 negativas8/12 (66,7%)10/12 (83,3%)10/12 (83,3%)

Frente a v2, el candidato gana cuatro imágenes y pierde dos en prueba; gana dos y pierde una en oro. Los intervalos pareados del cambio, calculados con 5.000 remuestreos por componentes de origen, son de −0,9 a +2,4 puntos porcentuales en prueba y de −2,1 a +4,2 en oro. Ambos incluyen cero. No sumamos los conjuntos para anunciar una única mejora.

Qué mejora y qué empeora

Métricav2v3 experimental
Prueba: subida con valor y unidad correctos138/147142/147
Prueba: IP visible exacta61/6262/62
Prueba: resultados válidos detectados147/147146/147
Oro: resultados válidos detectados57/5756/57
Oro: negativos tomados por resultados1/380/38
Oro: casos normales completos78/7877/78
Oro: casos difíciles completos14/1716/17
Prueba: IP no sustentada tras el filtro, donde no se esperaba IP1/2382/238

El candidato corrige la pantalla de carga conocida del oro, pero rechaza una prueba de consola terminada. En otra tarjeta nPerf cruza subida y latencia y lee la pérdida de paquetes como ping. La revisión posterior confirmó estos errores sin cambiar etiquetas, puntuaciones ni pesos. Una IP parcialmente recortada mantiene incertidumbre de lectura: conservamos su etiqueta histórica y no presentamos ese caso como una corrección visual concluyente.

Los dos incompletos del archivo reservado siguen fallando en v2 y en el candidato. Tampoco mejora la cantidad de IP inventadas de validación: permanece en cuatro. El avance global no resuelve todavía los problemas que motivaron toda la ronda.

Qué tan independientes son los datos

Comprobamos las huellas de las 9.580 imágenes del archivo y agrupamos por conversación, contenido idéntico y un filtro de similitud visual. Bajo esos filtros no aparecen componentes compartidos entre entrenamiento y evaluación, ni entre validación y los conjuntos finales. Los filtros pueden perder recortes o fotografías y no garantizan detectar cualquier duplicado.

Prueba y oro comparten un componente de origen: no son imágenes evaluadas idénticas, pero sus resultados no son evidencia independiente. Sus etiquetas históricas permanecen intactas, incluidos errores conocidos de las etiquetas automáticas; ambos conjuntos ya se habían inspeccionado y no son una nueva prueba a ciegas.

Las 12 imágenes reservadas recibieron etiquetas visuales antes de consultar las respuestas de los modelos para ese lote. Proceden del archivo histórico y contienen solo dos positivos: son etiquetas nuevas, no capturas recién recogidas. No tenemos en esta ronda una prueba externa reciente.

Entrenamiento y consumo medido

Configuración o mediciónResultado
Modelo baseGLM-OCR ~0,9B; continuación de v2
Parámetros ajustados2.359.296; visión congelada
LoRARango 8, alpha 16, dropout 0,05
Optimizador y tasa de aprendizajeAdamW; 0,00002
Lote efectivo y semilla16; semilla 42
Pasos y checkpoint seleccionado80; paso 80
Hardware y precisiónNVIDIA GB10; BF16
Tiempo de entrenamiento590 s, unos 9 min 50 s
Pico GPU de entrenamiento, asignado / reservado4,29 / 5,27 GiB
Inferencia, media / mediana / máximo1,10 / 1,11 / 1,71 s por imagen
GPU en inferencia, asignada / reservada2,33 / 2,61 GiB
Carga del modelo desde archivos locales9,84 s

La inferencia se midió sobre 12 imágenes de desarrollo después de una de calentamiento, una captura cada vez. El RSS durante esa medición fue de 2,10 GiB; el máximo de 4,13 GiB pertenece al proceso completo, que también cargó otros modelos. En memoria unificada no se suman GPU y RSS como consumos físicos independientes. No medimos concurrencia ni repetimos una prueba de CPU o de otra GPU para este adaptador.

La siguiente mejora necesita datos nuevos

La v3 experimental muestra un avance pequeño en acierto completo, acompañado de regresiones en detección y lecturas no sustentadas. Conservamos los pesos v2 y el candidato para comparar, y mantenemos v2 como referencia recomendada. La siguiente ronda debe aportar capturas recientes revisadas, más variedad de pantallas incompletas y diseños poco frecuentes, con criterios explícitos para evitar rechazar resultados válidos.

Seguimos sin garantizar IPv6, MB/s, IP parcialmente ocultas o tarjetas diminutas. Publicamos el balance completo porque un porcentaje algo mayor no basta para justificar un reemplazo.

← Volver al blog Okanet Solutions · Caracas, VE

El blog de Okanet

Notas de ingeniería.

Experiencias y notas del equipo sobre desarrollo de software, automatización, investigación y tecnología.

Lector de pruebas de velocidad

Lector de pruebas de velocidad v2: valor, unidad e IP

La v2 del lector de pruebas de velocidad devuelve cada medida con su número y su unidad tal como aparecen, más la IP del cliente cuando la prueba la muestra. En la prueba automática pasó de 48,0% a 95,3% de casos completos; en la revisión visual, de 35,8% a 96,8%, con 78 de 78 casos normales correctos.

Leer artículo
Lector de pruebas de velocidad

Un modelo pequeño que lee pruebas de velocidad (v1)

Especializamos GLM-OCR (~0,9B) con LoRA para leer capturas de pruebas de velocidad: si la imagen es o no una prueba y, si lo es, la bajada, la subida y el ping. En la prueba automática pasó de 49,3% a 97,0% de casos completos; en la revisión visual independiente, de 42,1% a 95,8%.

Leer artículo

Valoramos tu privacidad

Usamos cookies para mantener el sitio en funcionamiento, entender cómo se utiliza y apoyar nuestro marketing. Puedes aceptar todas las cookies, rechazar las no esenciales o elegir cuáles permitir. Política de Cookies