- El modelo Xiaomi-Lens-0, que crea máscaras que marcan regiones de la imagen, pasa a la ruta MultiheadAttention cuando no hay flash-attn instalado. Al recibir una máscara, esa ruta creaba una matriz de tamaño 16 cabezas × el cuadrado del número de parches.
- Según las mediciones del autor, para una imagen de 3 megapíxeles, el pico adicional de VRAM en el paso de la máscara fue de 18.02GB en la ruta original y de 2.28GB en la ruta SDPA. El entorno de prueba fue RTX 5090 32GB, Windows 11, sin flash-attn instalado.
- La documentación de PyTorch indica que se usa una ruta optimizada cuando need_weights=False. Sin embargo, al revisar el código fuente CUDA, el autor vio que con una máscara no se entraba en esa ruta. En el perfilado de CPU, la misma capa en modo de entrenamiento usaba SDPA, por lo que el problema solo se reprodujo en la inferencia eval.
- El autor informó que, en una comparación de 6 muestras, los tokens y las cajas coincidieron, y que el IoU de las máscaras estuvo entre 0.9976 y 0.9998. Es una comparación limitada, no una evaluación completa de calidad.
O: Un ingeniero que se encarga del servidor de inferencia interno podría medir una vez el pico de memoria de la GPU con una máscara de padding, en modo eval e inference_mode, y compararlo con la ruta SDPA.
X: La cifra es el pico adicional que añade el paso de la máscara en el entorno del autor, no la VRAM total. Primero conviene tener en cuenta que los resultados pueden cambiar si la GPU, la resolución o la estructura del modelo son distintas.