Modifier la quantité de mémoire vidéo sur les Mac Apple Silicon, pour augmenter les performances des LLM
Depuis l'arrivée des Mac Apple Silicon, Apple met en avant la mémoire unifiée, qui permet au processeur et au GPU de partager la mémoire vidéo sans effectuer des transferts incessants entre deux zones séparées, comme dans les puces Intel. Cette solution permet au GPU d'accéder à une grande quantité de mémoire vidéo, mais elle n'est pas infinie ni même équivalente à la quantité de RAM présente dans le Mac : une partie de la mémoire vive est réservée au système. Dans la majorité des cas, la quantité de mémoire vidéo maximale est de 66 % de la quantité de mémoire (par exemple 5,3 Go avec 8 Go de RAM) et le reste est réservé au système. Sur les Mac avec beaucoup de mémoire vive (a priori plus de 32 Go), la limite est un peu plus haute : 75 %. Mais il est possible de modifier la valeur en question.

Avant de se poser la question du comment, il y a d'abord le pourquoi. Si vous avez beaucoup de mémoire vive, il y a un domaine précis qui peut demander énormément de mémoire vive : les IA au sens large. Pour ceux qui travaillent avec des LLM en local, il est en effet intéressant de réduire la part réservée au système pour augmenter celle allouée au GPU. La limite de 75 % imposée par défaut est conservatrice : sur un Mac avec 48 Go de RAM, le système n'a pas réellement besoin de 12 Go de RAM. Il est donc possible d'allouer plus de mémoire vidéo pour les tâches qui sont gourmandes sur ce point.
En ligne de commande ou avec un logiciel
Commençons par la méthode compliquée, en ligne de commande. Il faut lancer le Terminal et taper la commande suivante. La valeur à indiquer est en Mio, il faut donc multiplier par 1 024 le nombre de gigaoctets souhaités. Ici, nous avons choisi 12 Go de RAM pour un Mac avec 16 Go.
sudo sysctl iogpu.wired_limit_mb=12288
Vous pouvez mettre n'importe quelle valeur, mais vous aurez évidemment des soucis si elle est trop faible (certaines applications risquent de mal fonctionner avec 1 ou 2 Go par exemple) ou trop élevée. Si vous choisissez de mettre 16 Go sur un Mac avec 16 Go de RAM, vous pouvez littéralement planter le Mac. Il faut aussi bien comprendre que la valeur est la quantité de mémoire vidéo maximale qui peut être allouée et que la seconde valeur est celle réservée au système. Dans la pratique, la majorité des applications s'accommode parfaitement des valeurs par défaut et nécessite beaucoup moins que la valeur maximale : le système peut donc utiliser plus que la valeur réservée. Enfin, attention à un point : le changement n'est pas permanent. La commande doit être lancée après chaque démarrage.
Si vous voulez éviter de passer par la ligne de commande, un logiciel open source simplifie les choses : Siliv. Il se place dans la barre de menus et affiche l'allocation actuelle et permet de modifier les valeurs. Il a quelques paliers prédéfinis, qui dépendent de la quantité de mémoire vive du Mac. Il a la bonne idée de vous prévenir si vous sélectionnez une valeur trop élevée, et peut garder la valeur allouée si vous décidez de lancer le programme automatiquement au démarrage.

Une solution pour les cas (très) particuliers
Dans les faits, c'est une solution pour des cas particuliers, essentiellement les grands modèles de langage. Si la tentation peut être grande d'allouer plus de mémoire vive pour les jeux vidéo — Cyberpunk 2077 au hasard —, c'est en réalité totalement inutile. Dans la majorité des cas, la quantité de mémoire vidéo allouée par défaut est déjà élevée (un Mac avec 16 Go de RAM a déjà plus de mémoire vidéo qu'une bonne partie des cartes graphiques de PC d'entrée et de milieu de gamme) et la mémoire vidéo n'est pas le facteur limitant. De façon très concrète, dans les rares cas où un jeu peut avoir besoin de plus de mémoire vidéo que celle allouée par défaut, les performances sont tellement faibles qu'il est inutile d'en allouer plus. Sur un MacBook Air M3 avec 16 Go de RAM, les performances (faibles) ne bougent d'ailleurs pas, quelle que soit l'allocation.