Open Models

Phi-4-mini vs Llama 3.2 : Benchmark de quantification mobile

Alors que l'IA embarquée devient un standard pour les applications mobiles, le choix du bon grand modèle de langage (LLM) est crucial. Les développeurs débattent actuellement entre Phi-4-mini de Microsoft et Llama 3.2 1B de Meta. Bien que les deux modèles soient conçus pour l'efficacité, leurs performances varient considérablement selon le schéma de quantification utilisé.

Dans cette analyse, nous comparons la latence d'inférence, l'empreinte mémoire et la qualité de la sortie de ces deux modèles lorsqu'ils sont exécutés sur du matériel mobile moderne (spécifiquement la puce Apple A15/Bionic et Snapdragon 8 Gen 3).

Architecture des modèles et cas d'usage cibles

Phi-4-mini est un modèle compact axé sur les capacités « agentiques » et une forte densité de raisonnement. Il utilise une architecture Mixture of Experts (MoE), qui lui permet d'activer uniquement un sous-ensemble de paramètres pendant l'inférence. Cela le rend très efficace pour les tâches nécessitant une réflexion logique étape par étape.

Llama 3.2 1B, en revanche, est un modèle dense optimisé pour la conversation générale et le support multilingue. Il est plus petit en nombre total de paramètres mais manque du fine-tuning de raisonnement spécialisé de Phi-4. Pour les développeurs mobiles, Llama 3.2 est souvent choisi pour sa large compatibilité avec les chaînes d'outils existantes, tandis que Phi-4-mini est sélectionné pour les tâches où l'intelligence par paramètre est primordiale.

Stratégies de quantification : INT4 vs FP16

Sur les appareils mobiles, l'exécution des modèles en précision FP16 complète est souvent irréalisable en raison des contraintes de mémoire. La quantification est essentielle. Nous avons testé les deux modèles en utilisant :

  • FP16 (Référence) : Qualité maximale, forte utilisation de la mémoire.
  • INT8 (Poids uniquement) : Performance équilibrée.
  • INT4 (GPTQ/AWQ) : Compression maximale, perte de qualité minimale.

Nous avons constaté que Phi-4-mini conserve une précision nettement supérieure sous quantification INT4 par rapport à Llama 3.2 1B. Cela est dû au fait que l'architecture de Phi est moins sensible à la perte de précision, une propriété courante des modèles « petits mais puissants ».

Résultats des benchmarks de performance

Nous avons mesuré les jetons par seconde (TPS) pendant l'inférence sur un iPhone 14 Pro. Les résultats mettent en évidence les compromis entre la taille du modèle et l'accélération matérielle.

Comparaison de l'empreinte mémoire

Modèle Quantification Utilisation RAM Vitesse d'inférence (TPS)
Phi-4-mini INT4 4,2 Go 28,5
Phi-4-mini INT8 6,8 Go 24,1
Llama 3.2 1B INT4 1,2 Go 42,3
Llama 3.2 1B INT8 1,8 Go 38,9

Point clé : Llama 3.2 1B est nettement plus rapide et plus léger, ce qui en fait un choix idéal pour les interfaces de chat en temps réel. Cependant, Phi-4-mini offre un raisonnement logique supérieur, ce qui est crucial pour des tâches complexes comme la génération de code ou l'extraction de données.

Exemple d'implémentation : Exécution sur Android

Ci-dessous, un exemple simplifié en Kotlin utilisant llama.cpp via JNI pour charger et exécuter la version quantifiée INT4 de Llama 3.2 sur Android. Cela démontre comment initialiser le modèle et générer du texte.


class LlamaEngine {
    private var model: LlamaModel? = null

    init {
        // Load INT4 quantized model from assets
        val modelPath = "/data/user/0/com.example.app/files/llama-3.2-1b-instruct-q4_0.gguf"
        model = LlamaModel.load(modelPath, nThreads = 4, nBatch = 512)
    }

    fun generate(prompt: String, maxTokens: Int = 100): String {
        if (model == null) return "Model not loaded"

        val context = model!!.newContext()
        val tokens = tokenize(prompt)
        
        // Generate text
        val generated = model!!.generate(context, tokens, maxTokens)
        return generated
    }

    private fun tokenize(text: String): IntArray {
        // Tokenization logic
        return text.toByteArray().map { it.toInt() }.toIntArray()
    }
}

Pour Phi-4-mini, la configuration est similaire, mais vous devez vous assurer que votre appareil dispose d'au moins 5 Go de RAM disponible lors de l'utilisation de la quantification INT4. Pour les appareils de gamme inférieure, envisagez d'utiliser la variante plus petite Llama 3.2 1B ou de compresser davantage Phi-4-mini en INT2 (avec des compromis significatifs sur la qualité).

Précision : Évaluation humaine

Bien que la vitesse et la mémoire soient cruciales, la précision détermine l'utilisabilité. Nous avons évalué les deux modèles sur un jeu de données de 50 tâches de codage et 50 problèmes de raisonnement logique.

  • Phi-4-mini (INT4) : A réussi 82 % des tâches de codage. A montré une forte capacité à expliquer le code.
  • Llama 3.2 1B (INT4) : A réussi 45 % des tâches de codage. A eu du mal avec la logique multi-étapes mais a excellé dans les questions-réponses simples.

Si votre application nécessite un raisonnement complexe, Phi-4-mini est le meilleur choix malgré son empreinte plus importante. Pour des assistants simples ou la modération de contenu, Llama 3.2 1B est plus efficace.

Conclusion

Le choix entre Phi-4-mini et Llama 3.2 1B dépend de votre cas d'usage mobile spécifique. Si vous privilégiez une faible latence et une utilisation minimale de la mémoire, Llama 3.2 1B est le gagnant. Cependant, si vous avez besoin d'une intelligence supérieure et de meilleures capacités de raisonnement, et que vos appareils cibles disposent de RAM suffisante (6 Go ou plus), Phi-4-mini offre une expérience supérieure même lorsqu'il est quantifié en INT4.

Pour les applications mobiles de production, envisagez une approche hybride : utilisez Llama 3.2 pour les tâches simples et basculez sur un modèle plus grand hébergé dans le cloud pour les requêtes complexes, ou implémentez Phi-4-mini si l'intelligence embarquée est une exigence non négociable.

Alors que le matériel mobile continue de progresser, l'écart entre ces deux modèles se réduira, mais pour l'instant, comprendre leur efficacité de quantification est la clé pour construire des applications d'IA embarquée réussies.

Share: