La création de grands modèles d’IA nécessite une courbe d’apprentissage et nécessite à la fois du temps et des ressources. Jusqu'à récemment, nous considérions les pondérations du modèle d'IA pré-entraînée comme des tableaux 2D ambigus de nombres décimaux, mais que se passerait-il s'il y avait quelque chose de plus ?
Aujourd'hui, nous souhaitons partager la manière dont nous explorons les pondérations des modèles d'IA, mais voyons d'abord comment nous en sommes arrivés là.
Nous lisons ces articles clés
Classification ImageNet avec des réseaux de neurones convolutifs profonds
L'attention est tout ce dont vous avez besoin
Points à retenir / faits saillants
Questions clés
Qu'est-ce qui fonctionne d'autre avec les matrices et les données float 32 haute résolution ? (images TIFF) ?
Pourquoi ne pouvons-nous pas réutiliser des techniques similaires de ces systèmes qui disposent de grands ensembles de données à haute résolution pour parcourir « les pondérations » avec un type d'itérateur différent ? Avec les performances actuelles de Rust et mmap en chargeant un fichier de 100 Go sur le disque, qui sait, peut-être que cette approche pourrait fonctionner sans GPU pour les modèles plus petits limités au processeur uniquement.
Quelles pièces techniques manquent/nécessaires pour commencer ?
Quoi
Nous avons construit un prototype pour extraire et, espérons-le, identifier comment les poids :
faire le lien avec les données de formation source d'origine
changement au fil de nombreuses générations de formation
semblent représenter un champ 3D dense de connaissances de formation enregistrées sous forme de « poids » intégrés (non prouvé mais c'est notre hypothèse basée sur les techniques qui semblent fonctionner)
Pourquoi
Nous voulions comprendre pourquoi les LLM sont spéciaux et comment les poids s'intègrent dans cette technologie innovante.
En choisissant de passer notre temps à essayer de voir quels sont les poids LLM, nous pensons pouvoir appliquer des techniques de visualisation bien connues pour analyser les scanners du cerveau humain afin d'extraire, d'identifier, de réutiliser et de vérifier quels sont les poids.
Avant que les grands poids génératifs AI Transformer ne soient largement disponibles, ces types d'ensembles de données d'entraînement denses et haute résolution étaient très coûteux et peu fréquemment partagés.
Comment
Nous avons construit ce prototype à l'aide d'algorithmes de traitement du signal numérique (DSP) pour l'analyse volumétrique de données haute résolution et avons combiné le moteur d'analyse avec Blender (un outil de visualisation open source).
Nous ouvrirons la source et suivrons comment une IA apprend à partir de zéro et utiliserons Blender pour exporter et partager à quoi ressemblent les poids au fur et à mesure.
En choisissant d'utiliser Blender pour analyser les poids des modèles dans un volume 3D, nous avons intégré des capacités d'animation qui nous permettent de concevoir notre API v1 initiale pour capturer un ensemble de données d'entraînement de séries chronologiques. Cet ensemble de données de formation vise à capturer la manière dont un modèle fondamental d'IA apprend à travers chaque phase de formation à l'aide d'une analyse de poids haute performance sur des données volumétriques.
Nous pensons que nous devons partager l'apparence de ces modèles afin de pouvoir les comprendre et former les IA à se construire et à s'auditer elles-mêmes.
Nous voulons également voir à quoi ressemblent les mélanges d'experts (téléchargez ci-dessous les dernières versions de maillage Dolphin 2.5 Mixtral 8x7B STL/glTF).
Ce référentiel est destiné au profilage, à l'extraction, à la visualisation et à la réutilisation des pondérations d'IA génératives afin, espérons-le, de créer des modèles d'IA plus précis et d'auditer/analyser les pondérations au repos afin d'identifier les domaines de connaissances pour les risques.
Remarque : la version d'aujourd'hui inclut uniquement comment profiler, extraire et visualiser les poids des modèles existants. Maintenant que nous pouvons visualiser comment les modèles d’IA apprennent, la formation fondamentale des modèles vient ensuite. La visualisation de la formation commencera par enseigner un nouveau modèle d'IA sur « comment le référentiel bampe-weights a intégré numpy, pandas et Blender ». Nous avons environ 190 fichiers python/(tâche, invite, réponse) à organiser avant de les partager.
Ce référentiel explore les visualisations de l'apprentissage du modèle au fil du temps et crée des ensembles de données de formation à partir de « formes de poids » extraites pour créer et prédire de nouveaux poids de modèles d'IA (espérons-le également plus rapides que les méthodes de formation traditionnelles).
Voici à quoi ressemble Llama 2 7B Chat GPTQ dans Blender et exporté sous forme de gif à l'aide de ce référentiel :
Les dossiers Google Drive suivants contiennent l'index émergent des visualisations glTF et STL de grands modèles de langage. Les fichiers vont de ~1 Mo à +2 Go.
Contactez-nous si vous souhaitez voir un nouveau modèle/densité !
Si un fichier STL est suffisamment petit, GitHub peut automatiquement restituer les maillages 3D. Remarque : visualiser GitHub STL sur mobile n'est pas idéal pour le moment, mais sur un ordinateur de bureau, vous pouvez zoomer sur les calques à l'aide d'une molette de souris en sens inverse et faire pivoter avec les boutons gauche/droit de la souris :
Nous essayons de rester sous la limite de 50 Mo et de stocker les actifs sur notre dépôt sur GitHub - https://github.com/matlok-ai/gen-ai-datasets-for-bampe-weights/docs/images/blender
Auto-hébergez Blender dans un conteneur pour vous aider à voir à quoi ressemblent les pondérations génératives de l'IA localement :
Image du conteneur de démonstration Blender avec fichiers STL/GLB exportés déjà inclus
L'image matlok/blender-ai-demos a été créée à partir de l'image LinuxServer Blender et comprend des fichiers 3D STL et GLB que vous pouvez visualiser dans un navigateur. L'image du conteneur extraite de blender-ai-demos fait >4,0 Go sur le disque et utilise environ 3 Go de RAM pour traiter les fichiers STL ou glTF >40 Mo :
Les visualisations de démonstration se trouvent dans ce répertoire à l'intérieur du conteneur :
/config/bampe-visualisations
Docker
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
Image du serveur Linux de base
Exécutez l'image LinuxServer/docker-blender (lscr.io/linuxserver/blender:latest) et générez de nouveaux fichiers STL/GLB prêts à être visualisés en utilisant un volume déjà monté entre l'hôte et le conteneur Blender (répertoire .blender ). L’image du conteneur extraite de Docker-Blender fait environ 3 Go sur le disque.
Docker
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
Remarque : les artefacts visuels nouvellement créés (fichiers STL et glTF glb) n'apparaissent qu'une fois le conteneur redémarré dans ce répertoire à l'intérieur du conteneur Blender :
/config/bampé
Ouvrez Blender dans un navigateur
Blender écoute à cette URL :
http://localhost:3000
Charger manuellement une visualisation 3D Blender AI
Une fois Blender exécuté dans le navigateur, vous pouvez importer des fichiers STL ou glTF en cliquant sur ces menus :
Déposer
Importer
STL ou glTF
Les fichiers se trouvent soit dans /config/bampe , soit /config/bampe-visualizations selon la version du conteneur en cours d'exécution.
Utilisez Shift + ` pour activer le mode de navigation avec la souris et W, A, S, D pour le mouvement à la première personne.
Maintenir le bouton Shift se déplacera également à la vitesse turbo.
Ouvrez Édition -> Préférences -> Navigation -> Voler et marcher -> Flèche de bascule de marche
Ajuster la sensibilité de la souris -> 0,1
Ajuster la vitesse de marche -> 20 m/s
Ce référentiel est destiné à rechercher des approches alternatives pour créer une IA à l'aide de poids d'IA pré-entraînés. Il s'agit d'un travail en cours, veuillez donc vous référer à Configuration d'un environnement de développement pour plus de détails sur son exécution à partir de la ligne de commande.
Nous pouvons partager et visualiser ces formes à l’aide d’outils en ligne.
Ce référentiel a été testé sur les plateformes suivantes :