La construcción de grandes modelos de IA tiene una curva de aprendizaje y requiere mucho tiempo y recursos. Hasta hace poco, pensábamos que los pesos del modelo de IA previamente entrenado eran matrices 2D ambiguas de números decimales, pero ¿y si hubiera algo más?
Hoy queremos compartir cómo estamos explorando los pesos de los modelos de IA, pero primero veamos cómo llegamos hasta aquí.
Leemos estos artículos clave
Clasificación de ImageNet con redes neuronales convolucionales profundas
Atención es todo lo que necesitas
Conclusiones / Destacados
Preguntas clave
¿Qué más funciona con matrices y datos flotantes 32 de alta resolución? (imágenes TIFF)?
¿Por qué no podemos reutilizar técnicas similares de estos sistemas que tienen conjuntos de datos grandes y de alta resolución para navegar "los pesos" con un tipo diferente de iterador? Con el rendimiento actual de Rust y mmap al cargar un archivo de 100 GB en el disco, quién sabe, tal vez este enfoque podría funcionar sin una GPU para modelos más pequeños limitados a solo CPU.
¿Qué piezas técnicas faltan o son necesarias para empezar?
Qué
Hemos construido un prototipo para extraer y, con suerte, identificar cómo pesa:
relacionarse con los datos de entrenamiento de la fuente original
cambio a lo largo de muchas generaciones de formación
parecen representar un denso campo tridimensional de conocimiento de entrenamiento guardado como "pesos" integrados (no probado, pero esta es nuestra hipótesis basada en las técnicas que parecen estar funcionando)
Por qué
Queríamos entender por qué los LLM son especiales y cómo encajan los pesos en esta tecnología innovadora.
Al optar por dedicar nuestro tiempo a intentar ver cuáles son los pesos LLM, creemos que podemos aplicar técnicas de visualización bien conocidas para analizar escáneres del cerebro humano para extraer, identificar, reutilizar y auditar cuáles son los pesos.
Antes de que los grandes pesos generativos de transformadores de IA estuvieran ampliamente disponibles, estos tipos de conjuntos de datos de entrenamiento densos y de alta resolución eran muy costosos y no se compartían con frecuencia.
Cómo
Construimos este prototipo utilizando algoritmos de procesamiento de señales digitales (DSP) para análisis volumétrico de datos de alta resolución y combinamos el motor de análisis con Blender (una herramienta de visualización de código abierto).
Abriremos el código fuente y realizaremos un seguimiento de cómo una IA aprende desde cero y usaremos Blender para exportar y compartir cómo se ven los pesos a medida que avanzamos.
Al elegir usar Blender para analizar los pesos del modelo en un volumen 3D, incorporamos capacidades de animación que nos permitieron diseñar nuestra API v1 inicial para capturar un conjunto de datos de entrenamiento de series temporales. Este conjunto de datos de entrenamiento se centra en capturar cómo un modelo fundamental de IA aprende en cada fase de entrenamiento utilizando un análisis de peso de alto rendimiento en datos volumétricos.
Creemos que debemos compartir cómo se ven estos modelos para poder comprenderlos y capacitar a las IA para que se construyan y auditen por sí mismas.
También queremos ver cómo se ven las mezclas de expertos (descargue las versiones de malla más recientes de Dolphin 2.5 Mixtral 8x7B STL/glTF a continuación).
Este repositorio sirve para crear perfiles, extraer, visualizar y reutilizar ponderaciones de IA generativa para, con suerte, construir modelos de IA más precisos y auditar/escanear ponderaciones en reposo para identificar dominios de conocimiento en busca de riesgos.
Nota: la versión actual solo incluye cómo generar perfiles, extraer y visualizar pesos de modelos existentes. Ahora que podemos visualizar cómo aprenden los modelos de IA, lo siguiente es el entrenamiento fundamental del modelo. La visualización del entrenamiento comenzará enseñando un nuevo modelo de IA sobre "cómo el repositorio bampe-weights integró numpy, pandas y Blender". Tenemos ~190 archivos Python/(tarea, mensaje, respuesta) para organizar antes de compartirlos.
Este repositorio explora visualizaciones del aprendizaje del modelo a lo largo del tiempo y crea conjuntos de datos de entrenamiento a partir de "formas de peso" extraídas para construir y predecir nuevos pesos de modelos de IA (con suerte, también más rápidos que los métodos de entrenamiento tradicionales).
Así es como se ve Llama 2 7B Chat GPTQ dentro de Blender y exportado como gif usando este repositorio:
Las siguientes carpetas de Google Drive contienen el índice emergente de visualizaciones glTF y STL de modelos de lenguaje grandes. Los archivos oscilan entre ~1 MB y +2 GB.
¡Comuníquese si desea ver un nuevo modelo/densidad!
Si un archivo STL es lo suficientemente pequeño, GitHub puede renderizar automáticamente las mallas 3D. Nota: ver GitHub STL en dispositivos móviles no es ideal en este momento, pero en una computadora de escritorio puedes hacer zoom en las capas usando la rueda del mouse en reversa y girar con los botones izquierdo/derecho del mouse:
Intentamos mantenernos por debajo del límite de 50 MB y almacenar activos en nuestro repositorio en GitHub: https://github.com/matlok-ai/gen-ai-datasets-for-bampe-weights/docs/images/blender
Autohospede Blender en un contenedor para ayudar a ver cómo se ven los pesos generativos de IA a nivel local:
Imagen del contenedor de demostración de Blender con archivos STL/GLB exportados ya incluidos
La imagen matlok/blender-ai-demos se creó a partir de la imagen de LinuxServer Blender e incluye archivos 3D STL y GLB que puede ver en un navegador. La imagen del contenedor extraída de blender-ai-demos tiene >4,0 GB en el disco y utiliza aproximadamente 3 GB de RAM para procesar archivos STL o glTF >40 MB:
Las visualizaciones de demostración se encuentran en este directorio dentro del contenedor:
/config/bampe-visualizaciones
Estibador
docker rm blender; docker-compose -f compose/blender-demos.yaml up -d
Podman
podman rm -t 0 -f blender; podman-compose -f compose/blender-demos.yaml up -d
Imagen base del servidor Linux
Ejecute la imagen LinuxServer/docker-blender (lscr.io/linuxserver/blender:latest) y genere nuevos archivos STL/GLB que estén listos para ver utilizando un volumen ya montado entre el host y el contenedor de Blender (directorio .blender ). La imagen del contenedor extraída de Docker Blender tiene aproximadamente 3 GB en el disco.
Estibador
docker rm blender; docker-compose -f compose/blender-demos.yaml up -d
Podman
podman rm -t 0 -f blender; podman-compose -f compose/base.yaml up -d
Nota: los artefactos visuales recién creados (archivos STL y glTF glb) solo aparecen una vez que se reinicia el contenedor en este directorio dentro del contenedor de Blender:
/config/bampe
Abre Blender en un navegador
Blender está escuchando en esta URL:
http://localhost:3000
Cargue una visualización AI de 3D Blender manualmente
Una vez que Blender se esté ejecutando en el navegador, puede importar archivos STL o glTF haciendo clic en estos menús:
Archivo
Importar
STL o glTF
Los archivos están en /config/bampe o /config/bampe-visualizations dependiendo de la versión del contenedor en ejecución.
Utilice Shift + ` para habilitar el modo de navegación con el mouse y W, A, S, D para movimiento en primera persona.
Al mantener presionado el botón Shift , también se moverá a velocidad turbo.
Abra Editar -> Preferencias -> Navegación -> Volar y caminar -> Caminar Alternar flecha
Ajustar la sensibilidad del ratón -> 0,1
Ajustar la velocidad de marcha -> 20 m/s
Este repositorio está destinado a investigar enfoques alternativos para crear IA utilizando pesos de IA previamente entrenados. Es un trabajo en progreso, así que consulte Configuración de un entorno de desarrollo para obtener más detalles sobre cómo ejecutarlo desde la línea de comandos.
Podemos compartir y ver estas formas utilizando herramientas en línea.
Este repositorio fue probado en las siguientes plataformas: