nouvelles

cool! Les anciens appareils tels que Phone, iPad et MacBook forment un cluster hétérogène et peuvent exécuter Llama 3

2024-07-16

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Rapport sur le cœur de la machine

Département éditorial de Machine Heart

Si vous avez du matériel de rechange, vous voudrez peut-être l'essayer.

Cette fois, l’équipement matériel que vous avez en main peut également faire travailler ses muscles dans le domaine de l’IA.

En combinant iPhone, iPad et Macbook, vous pouvez assembler une « solution d'inférence de cluster hétérogène », puis exécuter le modèle Llama3 en douceur.



Il convient de mentionner que ce cluster hétérogène peut être un système Windows, Linux ou iOS, et que la prise en charge d'Android sera bientôt disponible.

Le cluster hétérogène est en cours d'exécution.



Selon l'auteur du projet @evilsocket, ce cluster hétérogène comprend l'iPhone 15 Pro Max, l'iPad Pro, le MacBook Pro (M1 Max), NVIDIA GeForce 3080 et 2x NVIDIA Titan X Pascal. Tout le code a été téléchargé sur GitHub.

Voyant cela, les internautes ont exprimé que ce vieil homme n'était effectivement pas simple.



Cependant, certains internautes commencent à s'inquiéter de la consommation d'énergie, quelle que soit la vitesse, ils ne peuvent pas payer la facture d'électricité. Le déplacement de données dans les deux sens entraîne trop de pertes.





Présentation du projet

L’implémentation des fonctions ci-dessus est indissociable d’un framework Rust appelé Cake. Cake peut réaliser l'inférence distribuée de grands modèles (tels que Llama3) et est conçu pour combiner du matériel grand public dans des clusters hétérogènes. Le matériel grand public utilise une variété de systèmes d'exploitation, notamment : iOS, Android, macOS, Linux et Windows. pour que l’IA soit plus accessible.



Adresse du projet : https://github.com/evilsocket/cake

L'idée principale de Cake est de partager des morceaux de transformateur sur plusieurs appareils pour pouvoir exécuter des inférences sur des modèles qui ne rentrent généralement pas dans la mémoire GPU d'un seul appareil. L'inférence sur des blocs de transformateur consécutifs sur le même thread de travail est effectuée par lots pour minimiser les retards causés par le transfert de données.

Les systèmes et appareils actuellement pris en charge par Cake sont les suivants :



compiler

Après avoir installé Rust, exécutez le code suivant :

construction de la cargaison --version

Si l'utilisateur souhaite générer des liaisons iOS dans l'application, il peut procéder comme suit :

faire ios

utiliser

Exécutez le nœud de travail :

cake-cli --model /path/to/Meta-Llama-3-8B # chemin du modèle, lisez ci-dessous comment optimiser la taille du modèle pour les travailleurs

--mode worker # exécuter en tant que travailleur

--name worker0 # nom du travailleur dans le fichier de topologie

--topologie topologie.yml # topologie

--adresse 0.0.0.0:10128 # adresse de liaison

Exécutez le nœud maître :

cake-cli --model /chemin/vers/Meta-Llama-3-8B

--topologie topologie.yml

Parmi eux, topology.yml détermine quelles couches sont desservies par quels Workers :

linux_server_1:

hôte : « linux_server.host:10128 »

description : 'NVIDIA Titan X Pascal (12 Go)'

couches:

- 'model.layers.0-5'

linux_server_2:

hôte : « linux_server2.host:10128 »

description : « NVIDIA GeForce 3080 (10 Go) »

couches:

- 'model.layers.6-16'

iPhone:

hôte : « iphone.host:10128 »

description : « iPhone 15 Pro Max »

couches:

- 'model.layers.17'

iPad:

hôte : « ipad.host:10128 »

description: 'iPad'

couches:

- 'model.layers.18-19'

MacBook:

hôte : « macbook.host:10128 »

description: 'M1 Max'

couches:

- 'model.layers.20-31'

Concernant les problèmes d'optimisation de la mémoire et de l'espace disque, les utilisateurs peuvent souhaiter fournir aux travailleurs uniquement les données réellement nécessaires dans le modèle, plutôt que le dossier entier, auquel cas le modèle cake-split-model peut être utilisé. Par exemple, pour générer une version plus petite de llama3 safetensors, vous pouvez utiliser le code suivant :

cake-split-model --model-path path/to/Meta-Llama-3-8B # modèle source à diviser

--topology path/to/topology.yml # fichier de topologie

--output nom-du-dossier-de-sortie

Lien de référence : https://x.com/tuturetom/status/1812654489972973643