Récemment, vous pouvez souvent voir quelqu 'un utiliser NVIDIA DGX Spark pour déployer des modèles à grande échelle de 10 milliards et 100 milliards de dollars, ce qui a vu beaucoup de gens démangeiller.
Cependant, le DGX Spark est vraiment performant et le prix n'est pas facile pour les gens. Pour la plupart des développeurs, ce qui peut vraiment se débarrasser est l'ordinateur sous la main qui a été en service pendant plusieurs années.
Récemment, certains internautes ont partagé un ensemble de Mac Studio de première génération 2022 (M1 Max / 32 Go) Déploiement Ling - 3.0-tiny INT4 programme complet.
À l'origine, l'internaute pensait que la machine avait du mal à assumer les tâches de raisonnement de grands modèles d'aujourd 'hui.
Mais les résultats des tests réels sont un peu inattendus.
Le modèle prend en charge non seulement le chat, le mode de pensée et les appels d'outils, mais peut également être utilisé sur Apple Silicon. 64 Tokens / s La vitesse de génération stable de, pour le chat local, l'assistance de code, la traduction et les scènes d'agent personnel, etc., est assez fluide.
Plus important encore, il n'est pas un « petit modèle 1B » au sens traditionnel.
Pourquoi Ling-3.0-tiny mérite-t - il d'être suivi ?
L'échelle des paramètres totaux de Ling - 3.0 - tiny est d'environ 7.9B。
Cependant, il utilise MoE (Mixage d'experts)。
En bref :
- Le modèle compte environ 128 experts.
- Chaque Token n'active que 8 experts.
- et coopérer avec des experts partagés pour participer au calcul
- En effet, il y a environ seulement 1.3 Paramètres B
Cette conception équilibre la capacité du modèle avec le coût de l'inférence, ce qui lui permet d'obtenir une bonne vitesse d'inférence sur Apple Silicon.
Environnement de test
La configuration de l'équipement utilisé par cet internaute est la suivante :
- Apple Mac Studio (2022) est disponible
- Apple M1 Max
- 24 cœurs GPU
- 32GB de mémoire unifiée
- MacOS 15.7.4
- Armée 64
Bien que Ling-3.0-tiny prenne en charge des contextes plus longs, pour équilibrer l'utilisation de la mémoire et la stabilité, Context a été défini pour ce test. 8k。
Cela est suffisant pour les applications de chat, de complétion de code et d'agent quotidien, tout en évitant l'utilisation continue de la mémoire unifiée par KV Cache.
L'architecture de déploiement globale est la suivante :
Ling-3.0-tiny INT4
│
支持 Ling 的 Ollama 实验分支
│
MLX Runner
│
Metal / Apple Silicon GPU
│
Ollama API(11434)
La raison pour laquelle la version stable d'Ollama n'est pas utilisée directement est que le support actuel de Ling avec Bailing MoE V3 dépend toujours de la branche expérimentale d'Ollama.
Les frameworks d'inférence tels que vLLM et SGLang sont plus adaptés aux environnements CUDA de NVIDIA, ce qui n'est pas le meilleur choix sur Apple Silicon.
Planifier l'espace disque avant de déployer
Tout au long du processus de déploiement, ce n'est pas le modèle lui-même qui est le plus facilement sous-estimé, mais l'occupation du disque.
L'occupation du répertoire final est approximativement la suivante :
| Contenu | taille |
|---|---|
| Hugging Face INT4 poids d'origine | Environ 5,4 GB |
| Modèle d'importation Ollama | Environ 5,8 Go |
| Source Ollama, MLX et résultats de compilation | Environ 1,3 Go |
| Cache et configuration | Des dizaines de MB |
L'ensemble du projet est finalement 13 GB。
Envisagez de télécharger des fichiers temporaires, des caches de compilation et macOS Swap, et il est recommandé de réserver au moins 20GB Espace disponible, plus recommandé de préparer 30 GB ci-dessus.
Un pit facile à négliger : Git
La plus grande expérience que cet internaute a partagée n'est pas le modèle, mais Git.
Étant donné que l'ensemble du processus de déploiement est effectué dans le répertoire du projet Codex, le projet a activé les instantanés de version par défaut.
Une fois le modèle téléchargé, Git a sauvegardé l'ensemble du catalogue du modèle.
Résultats Un modèle d'environ 5 Go a rapidement augmenté à plus d'une douzaine de Go, et l'espace disque du système a rapidement diminué.
L'enquête finale a révélé que le catalogue du modèle n'avait pas été ajouté à l'avance. .gitignore。
Il est recommandé d'ajouter à l'avance :
.cache/
models/
ollama-models/
ollama-ling/
Après avoir nettoyé les objets Git, l'ensemble .git Le catalogue ne reste qu ' environ 132Kb。
Si vous êtes prêt à déployer un grand modèle, il est préférable de faire cette étape à l'avance.
Télécharger Ling - 3.0 - tiny INT4
Le poids Hugging Face INT4 est officiellement disponible.
L'ensemble de l'entrepôt comprend :
- 44 Documents
- 32 safetensors poids tranchées
Dans le processus de téléchargement, cet internaute a rencontré principalement deux problèmes :
Tout d'abord, la vitesse de téléchargement Xet stagne pendant une longue période.
Plus tard, Xet a été désactivé et un téléchargement HTTP ordinaire a été utilisé.
Deuxièmement, il y a des temps limite fréquents dans le processus de téléchargement.
Puisque Hugging Face CLI prend en charge la reprise des points d'arrêt, il suffit d'augmenter le délai d'expiration de manière appropriée pour continuer le téléchargement.
Après le téléchargement, le modèle n'est pas considéré comme complet.
Au lieu de cela, nous avons effectué trois vérifications :
- Vérifiez que les 32 tranches de poids sont présentes
- Vérifiez que l'index du modèle est complet
- Calcul de SHA - 256 pour les tranches complètes
Résultats finaux :
- Fichier exceptionnel : 0
- Exception de hachage : 0
- Slice manquante : 0
Pour les modèles de plusieurs Go, il est recommandé d'effectuer au moins la vérification du nombre de tranches ou du hachage, plutôt que de juger que le modèle est complet uniquement en fonction de l'invite de fin de téléchargement.
Compilation support pour Ollama de Ling
À l'heure actuelle, la version stable officielle d'Ollama ne peut pas exécuter directement Ling, il faut donc passer à la branche expérimentale pour la compilation elle-même.
Tout au long du processus, ce qui a vraiment coincé cet internaute est Chaîne d'outils métalliques。
La machine est déjà installée :
- Le Xcode
- Outils de ligne de commande
Mais la compilation MLX rapporte toujours des erreurs.
Il a été découvert plus tard que Metal Toolchain devait être installé séparément.
Encore plus gênant, même si l'installation est terminée, le système peut ne pas trouver le compilateur Metal.
Une fois que vous avez finalement vu l'identifiant de la chaîne d'outils, vous devez le configurer manuellement :
export TOOLCHAINS=...
Il est important de noter que cette valeur varie selon les versions de macOS et Xcode, et il est déconseillé de copier directement les configurations des autres.
Une fois la compilation terminée, vous générez :
- Programme principal Ollama
- Le MLX Runner
- noyau métallique
- Bibliothèque dynamique
nécessite une attention particulière et ne pas seulement garder ollama fichier exécutable.
Exécute réellement le modèle et s'appuie également sur le runner et la bibliothèque dynamique dans le répertoire de construction.
Importation du modèle INT4
Pour éviter de se mélanger avec la version stable d'Ollama dans le système, l'internaute a placé le catalogue des modèles séparément à l'intérieur du projet.
Une fois l'importation terminée, la sortie Ollama :
26947 tensors
479 layers
preserving source quantization
Les poids int4 restent dans le format de quantification d'origine et n'ont pas besoin d'être convertis à nouveau.
Le nom final du modèle est :
ling-tiny-int4:latest
Comment vérifier que le GPU fonctionne vraiment ?
C'est très important.
Parce que le modèle peut être rétroactivé silencieusement au CPU.
Une fois le déploiement terminé, vous pouvez vérifier la confirmation du journal si des informations similaires apparaissent :
library=Metal
Apple M1 Max
MLX engine initialized device=gpu
Ce n'est qu ' en voyant ces journaux que nous pouvons confirmer que l'ensemble du processus d'inférence s'exécute réellement sur le GPU Apple.
Vitesse maximale mesurée M1
Afin d'éviter que le premier jeton ne soit retardé pour affecter les résultats, cet internaute a d'abord réchauffé le modèle.
Trois cycles consécutifs de tests de génération complète ont ensuite été effectués.
Les conditions de test sont les suivantes :
- Context : 8192
- température : 0
- Réfléchir : Close
- Longueur de sortie : 384 Tokens
Les résultats finaux sont les suivants :
| testé | Token / s |
|---|---|
| 1er tour | 64.26 |
| Deuxième tour | 65.18 |
| Troisième round | 63.67 |
Moyenne finale :
64.37 Token / s
Temps approximatif pour charger le modèle pour la première fois :
6.93 secondes
Après la résidence du modèle, l'occupation de la mémoire unifiée est apparente :
6.48GB
Pour un M1 Max qui est sorti depuis plusieurs années, cette performance est déjà assez bonne.
Comment était-ce l'expérience réelle ?
Une fois le déploiement terminé, l'internaute a connecté le modèle à un outil de traduction de capture d'écran couramment utilisé sur Mac. Bob。
Étant donné que Bob peut appeler directement l'API Ollama, aucune configuration supplémentaire de l'interface cloud n'est nécessaire.
D'après l'expérience réelle, la traduction locale est très rapide.
Surtout dans le scénario de traduction de capture d'écran, les résultats peuvent être retournés en un clic.
Par rapport aux services de traduction en ligne, le modèle local présente deux avantages évidents, bien que la qualité de la traduction soit particulièrement importante :
Premièrement, la vitesse de réponse est plus rapide ;
Deuxièmement, toutes les données sont conservées localement, ce qui convient mieux au traitement du contenu privé.
En plus de cela, il a également bien fonctionné dans les scènes suivantes :
- Chat quotidien
- Résumé du document
- Traduire AI
- Code d'aide
- Base de connaissances locale
- Agents personnels
L'expérience globale est déjà en mesure de répondre aux besoins d'utilisation quotidienne.
écrit à la fin
De l'ensemble du processus de déploiement, la plus grande récolte de cet internaute n'est pas "Mac peut exécuter un grand modèle".
Au lieu de cela, l'écosystème local d'IA d'Apple Silicon est de plus en plus mature.
Avec le développement de MLX, Metal, MoE et des solutions de quantification plus efficaces, un M1 Max il y a quelques années a également été en mesure de fournir une bonne expérience de raisonnement local.
Bien sûr, il ne peut toujours pas remplacer les GPU haut de gamme NVIDIA, et il ne convient pas aux environnements de production à forte concurrency.
Mais pour les développeurs individuels, il est suffisant pour :
- Le chat local
- Traduire AI
- Assistant de programmation
- Base de connaissances privée
- Agents personnels
- Processus de texte privé
Si vous avez un budget limité et que vous souhaitez faire l'expérience d'un véritable grand modèle local, alors Ling - 3.0 - petite INT4 + Apple Silicon + MLX + OllamaC'est une combinaison qui vaut la peine d'essayer.
Du moins, cela prouve que Mac Studio, publié il y a quelques années, a toujours de bonnes capacités de raisonnement IA natives.