Introduction
L'architecture Apple Silicon permet de partager directement la mémoire linéaire d'un module WebAssembly avec le GPU, sans copie, sans sérialisation et sans tampon intermédiaire. Le CPU et le GPU lisent et écrivent les mêmes octets physiques.
Contexte Technique
Normalement, WebAssembly et les GPU sont séparés par une frontière de sérialisation coûteuse. Sur la plupart du matériel, transférer des données d'une machine virtuelle sandbox à un accélérateur nécessite de copier les données à travers un bus. L'architecture à mémoire unifiée d'Apple Silicon efface cette frontière, permettant ainsi un fonctionnement sans copie.
Le projet Driftwood exploite cette fonctionnalité pour l'inférence d'IA étatique. Le processus se compose de trois liens : la mémoire partagée via mmap, l'acceptation du pointeur par Metal sans copie et l'utilisation de Wasmtime pour allouer la mémoire linéaire.
Analyse et Implications
Les mesures montrent que le chemin sans copie présente une identité de pointeur, une faible surcharge de mémoire et une latence de calcul équivalente au chemin avec copie. Cela signifie que le processus sans copie peut être utilisé pour des applications d'inférence d'IA à grande échelle.
Les tests ont été effectués avec une matrice de multiplication 128×128, et les résultats montrent zéro erreur sur 16 384 éléments. Les mesures de latence et de surcharge de mémoire confirment l'efficacité du processus sans copie.
Perspective
Cette fonctionnalité ouvre des perspectives pour les applications d'inférence d'IA, en particulier pour les caches de clés-valeurs des transformateurs. La possibilité de sérialiser le cache et de le restaurer plus tard sur la même machine ou sur une autre machine offre une grande flexibilité pour les applications d'inférence locale.
Les prochaines étapes consisteront à évaluer les performances sur du matériel plus récent et à explorer les possibilités d'utilisation de cette fonctionnalité pour d'autres applications d'IA.