Rondo prueba errores del compilador que dependen de llamadas anteriores
En palabras sencillas
El software de aprendizaje profundo puede compilar un modelo una vez y reutilizar el código compilado en llamadas posteriores. Esa reutilización puede fallar después de que cambien las entradas o el estado del modelo.
Rondo es un método de prueba que ejecuta llamadas en un orden determinado y comprueba si cambia una respuesta posterior al borrar la información que el compilador había conservado. Los autores lo probaron en cuatro frameworks y 24 arquitecturas de modelos.
Rondo detectó 117 errores, 35 de ellos dependientes de llamadas anteriores; los desarrolladores confirmaron 16 de los 18 informes enviados sobre esos errores con estado. Estos resultados muestran que el método encontró errores de ese tipo en los sistemas evaluados, pero no cuántos quedan.
La investigación
¿Puede una prueba de compilador distinguir un error causado por información conservada de llamadas anteriores al modelo de uno causado por las entradas o el estado actual del modelo?
Las pruebas de una sola llamada no representan ese historial, y comparar únicamente los resultados compilados y no compilados no permite identificar la causa.
Rondo explora secuencias ordenadas de llamadas al modelo y comprueba la misma llamada posterior con el estado del compilador conservado o restablecido para identificar errores que dependen de ese estado.
Para separar la memoria del compilador de los cambios en el propio modelo, Rondo repite la misma llamada posterior con sus entradas y el estado pertinente del programa fijos. Compara ejecuciones compiladas que conservan o restablecen el estado del compilador, junto con una ejecución sin compilar.
Primero, los autores analizaron 26 casos notificados públicamente; reprodujeron todos en las versiones afectadas, y en cada caso hubo llamadas anteriores seguidas de un resultado incorrecto posterior.
En cuatro frameworks y 24 arquitecturas, Rondo detectó 117 errores, incluidos 35 con estado. Los desarrolladores confirmaron 35 de los 39 informes enviados, incluidos 16 de los 18 informes sobre errores con estado.
Esto muestra que el método encontró errores que los desarrolladores aceptaron en esos sistemas, aunque no indica cuántos errores existen en total.
La evaluación abarca programas seleccionados, cuatro frameworks y el hardware y la configuración indicados. El recuento de errores y los resultados de cobertura no establecen cuántos errores existen en total ni cómo se comportaría Rondo con otros programas y sistemas.
Análisis
Detalles
- Autores del paper original
- Jiatao Ge, Ruixiang Qian, Yibo Hu, Yanzhou Mu, Yinglong Zou
- Enviado a arXiv
- Licencia
- arXiv non-exclusive