• Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduitÉtudes de casNouvellesPerspectives
Blog

L'inférence ML en PHP à travers un exemple : exploiter ONNX et Transformers sur Symfony

IAapprentissage automatiquePHPSymfonyopen source
19 novembre 2025
Partager
Cette page a été rédigée en anglais par nos experts, puis traduite par une IA pour vous y donner accès rapidement! Pour la version originale, c’est par ici.

Cet article s'inspire d'une présentation de Guillaume Moigneu lors de la conférence Symfony 2024. 

L'apprentissage automatique et l'IA ne se limitent plus à Python et Node.js. Les développeurs PHP peuvent désormais exécuter des modèles d'IA directement dans leurs applications à l'aide d'outils et de bibliothèques modernes. Ce guide te montre comment implémenter l'inférence d'apprentissage automatique en PHP à l'aide d'ONNX et de Transformers.

Qu'est-ce que les transformers ?

Les Transformers sont un type d'architecture de réseau neuronal qui a révolutionné l'IA vers 2016-2017. Avant les Transformers, l'exécution des modèles d'apprentissage automatique était lente et ne permettait pas de traiter efficacement les données en parallèle.

Principaux avantages des transformers :

  • Traitement plus rapide - Capable de gérer plusieurs tâches simultanément, contrairement aux anciens modèles séquentiels
  • Meilleure compréhension du contexte : analyse les relations entre les mots grâce à des mécanismes d’« auto-attention »
  • Traitement parallèle : ils peuvent traiter plusieurs points de données à la fois, ce qui rend possible le traitement à grande échelle
  • Utilisation plus efficace des ressources - Optimisés pour le traitement du langage et les tâches de TALN
  • A ouvert la voie à l'IA moderne - A rendu possibles des modèles comme GPT et BERT en résolvant des problèmes de performance fondamentaux

Comment fonctionnent les transformateurs

Lorsque tu envoies du texte à un modèle de transformateur, celui-ci passe par plusieurs étapes pour comprendre et traiter ton entrée. Tout d’abord, le modèle effectue une tokenisation, en divisant ton texte en petits morceaux appelés tokens. Ces tokens sont généralement des mots, mais peuvent parfois être des parties plus petites de mots selon le modèle.

Vient ensuite le mécanisme crucial d’auto-attention, où le modèle analyse les relations entre tous les tokens. C’est ce qui rend les transformateurs si spéciaux : ils peuvent comprendre comment différents mots s’articulent les uns par rapport aux autres dans un contexte. Un mot peut avoir des significations complètement différentes selon les situations, le modèle doit donc déterminer les relations entre les mots pour comprendre ce que tu essaies réellement de dire.

Le modèle effectue ensuite une cartographie contextuelle, en utilisant des réseaux neuronaux pour traiter ces relations de manière répétée. Il fait passer les paramètres par de multiples itérations, en essayant de comprendre le sens complet de ton entrée. Enfin, il génère une sortie basée sur toute cette compréhension contextuelle, qu'il s'agisse de compléter une phrase, de classer un texte ou de répondre à une question.

Par exemple, si tu écris « Symfony est un excellent framework pour ___ », le modèle analyse les relations entre « Symfony », « framework » et « excellent » pour prédire ce qui vient ensuite.

Premiers pas avec l'apprentissage automatique en PHP

Pour exécuter des modèles d'apprentissage automatique en PHP, tu as besoin de :

  • Bibliothèque PHP Transformers
  • Extension FFI 
  • Modèles ONNX 

Installation

composer require codeboost/transformers-php

Remarque importante : la bibliothèque télécharge des paquets spécifiques à l'architecture. Assure-toi d'avoir la bonne version pour ton système (ARM64 pour les Mac M1, AMD64 pour les machines Intel).

Cas d'utilisation pratiques

1. Classification de texte

La classification de texte te permet de catégoriser automatiquement du contenu textuel. Idéal pour :

  • Analyser les commentaires des utilisateurs (positifs/négatifs)
  • La détection des spams
  • La modération de contenu
  • L'analyse des avis

Exemple : analyse des avis sur Amazon

Guillaume a illustré ce concept en exécutant une commande Symfony qui analysait les avis sur la Nintendo Switch. Voici un exemple illustratif basé sur l'approche qu'il a décrite :

use Codeboost\TransformersPHP\Pipeline;

// Create a text classification pipeline
$pipeline = Pipeline::create('text-classification');

// Analyze reviews from your database
$reviews = $database->getReviews();
$results = [];

foreach ($reviews as $review) {
    $score = $pipeline($review->text);
    $results[] = [
        'review_id' => $review->id,
        'sentiment' => $score['label'], // 'POSITIVE' or 'NEGATIVE'
        'confidence' => $score['score']
    ];
}

Résultats réels : lors d'un test portant sur 108 avis sur la Nintendo Switch :

  • 79 avis positifs (73 %)
  • 29 avis négatifs (27 %)
  • Temps de traitement : environ 14 avis par seconde sur un processeur standard

2. Classification d'images

Catégorise et balise automatiquement les images téléchargées. Exemples d'utilisation :

  • Ajouter du texte alternatif aux images
  • Filtrage de contenu
  • Étiquetage automatique
  • Détection d'objets

Exemple : détection de hot-dogs

L'intervenant a fait une démonstration à l'aide d'une application de détection de hot-dogs en direct. Voici un exemple illustratif basé sur sa description :

use Codeboost\TransformersPHP\Pipeline;

// Create image classification pipeline
$pipeline = Pipeline::create('image-classification');

// Load image using GD or ImageMagick
$image = imagecreatefromjpeg('uploaded_image.jpg');

// Classify the image
$result = $pipeline($image);

// Results: ['label' => 'hot dog', 'score' => 0.95]

Performances : résultats quasi instantanés sur de petits serveurs (moins d'une seconde pour des images web classiques).

3. Génération de texte

Génère automatiquement du texte pour :

  • Texte alternatif pour les images
  • Descriptions de produits
  • Suggestions de contenu
  • Génération de métadonnées

Exemple : Complétion de texte

Guillaume a fait une démonstration en posant la question suivante : « Peut-on considérer un taco comme un sandwich ? » Voici un exemple illustratif basé sur l'approche qu'il a présentée :

use Codeboost\TransformersPHP\Pipeline;

// Create text generation pipeline
$pipeline = Pipeline::create('text-generation', [
    'model' => 'flan-t5-small',
    'temperature' => 0.7 // Controls creativity (0-1)
]);

$prompt = "Can a taco be considered a sandwich?";
$response = $pipeline($prompt);

// Result: "Yes, a taco is a sandwich made of bread"

Configuration requise : fonctionne sur 2 cœurs de processeur avec 2 Go de RAM. Temps de réponse : 1 à 2 secondes.

Comment ça marche en coulisses

1. Extension FFI

L'extension Foreign Function Interface (FFI) pour PHP n'est pas vraiment une nouvelle extension, mais elle n'était pas beaucoup utilisée jusqu'à récemment. FFI te permet d'appeler directement des bibliothèques C et d'exécuter du code sans aucune conversion. C'est génial, car au lieu d'utiliser CGI et ce genre de vieilles méthodes, tu peux exécuter ces bibliothèques de manière indépendante et bien plus rapidement.

La FFI a beaucoup amélioré les performances, et tu peux l'utiliser pour plein de choses différentes, comme appeler des binaires et d'autres tâches similaires. Guillaume a mentionné que les transformateurs dépendent de l'architecture, ce qui s'explique essentiellement par le fait qu'ils utilisent la FFI pour exécuter du code C en arrière-plan.

2. ONNX (Open Neural Network Exchange)

ONNX résout un problème majeur dans le domaine du machine learning. Lorsque tu crées et entraînes un modèle, tu utilises généralement un framework spécifique comme TensorFlow de Google ou PyTorch. Cependant, cela crée une limitation importante : si un modèle a été créé avec TensorFlow, tu ne peux pas l’utiliser dans un environnement de production PyTorch, et vice versa. Tu es obligé d’utiliser le même framework à la fois pour l’entraînement et l’inférence.

ONNX apporte une solution en créant un format standard compatible avec tous les frameworks. Cette norme ouverte a été développée grâce à la collaboration entre les principaux leaders du secteur, notamment Samsung, Apple et d’autres. Avec ONNX, tu peux entraîner un modèle dans n’importe quel framework, le convertir au format ONNX, puis l’exécuter n’importe où, quel que soit l’environnement d’entraînement d’origine. 

3. Sources de modèles

Hugging Face

Si tu veux essayer plein de choses différentes, rends-toi sur Hugging Face. Ils proposent près d’un million de modèles disponibles dès maintenant, et tu peux également tester la plupart de ces modèles en ligne. Tu y trouveras toutes sortes de catégories, comme la classification de vidéos, les questions-réponses, les questions sur des tableaux, la classification de tokens, et tout ce dont tu pourrais avoir besoin. 

Tu trouveras aussi quelque chose qui correspond à ton cas d'utilisation. Tu auras peut-être besoin de faire des essais et des tests, mais tu trouveras certainement un modèle qui répond à tes besoins et que tu pourras utiliser avec la bibliothèque par la suite. Il y a aussi une catégorie où tu peux trouver tous les modèles ONNX, ce qui te garantit qu’ils sont bien compatibles avec ce que tu veux faire.

Initiative SmallML

Une nouveauté apparue il y a environ six mois est une nouvelle catégorie de modèles créée par Hugging Face, également appelée SmallML. L'objectif est de produire des modèles capables de générer des textes volumineux, à l'instar de ChatGPT ou Claude, mais dans un format de 500 mégaoctets ou moins. C'est formidable, car 500 mégaoctets, ça passe encore sur la plupart des machines, même si tu as un GPU sur ta propre machine. Tu peux en fait l'exécuter via Ollama ou tout autre outil de ton choix, ou encore via la bibliothèque PHP Transformer.

Options de déploiement en production

  • Pour les petits modèles (classification de texte/image)

Pour les tâches de classification de texte et d'images, tu peux exécuter ces modèles directement sur tes serveurs PHP sans aucun problème. L'intervenant a fait une démonstration sur une machine vraiment petite équipée de deux processeurs et de deux gigaoctets de RAM, et ça a très bien fonctionné. Les modèles eux-mêmes ne sont pas vraiment volumineux ; par exemple, le modèle de classification de texte qu'il a utilisé faisait environ deux mégaoctets, donc il s'exécute rapidement et tu peux le déployer n'importe où. C'est super facile à implémenter dans tes applications de production actuelles.

  • Pour les grands modèles linguistiques

Tu as ici trois options :

  1. API externes
    • OpenAI, Claude, etc.
    • Facile à mettre en œuvre
    • Pas de contrôle sur la disponibilité ou les réponses
  2. Points de terminaison de modèles hébergés
    • Déploie ton propre modèle sur une infrastructure GPU
    • Points de terminaison d'inférence Hugging Face
    • Plus cher, mais tu contrôles le modèle
  3. Auto-hébergé
    • Contrôle total
    • Nécessite une infrastructure GPU
    • Tu gères toutes les opérations et la maintenance

Meilleures pratiques et tests

Sélection de modèles

  • Commence par les modèles populaires sur Hugging Face
  • Teste plusieurs modèles pour ton cas d'utilisation spécifique
  • Les modèles populaires offrent généralement une meilleure précision
  • Recherche des modèles en développement actif et régulièrement mis à jour

Teste tes modèles

  1. Crée des ensembles de données de test - Étiquette manuellement plus de 200 exemples
  2. Effectue des comparaisons - Teste les résultats du modèle par rapport à des résultats connus
  3. Surveille les incohérences : une même entrée doit donner un résultat cohérent
  4. Vérifie les cas limites - Teste avec des changements de ponctuation, des fautes de frappe

Avertissement important

Surveille toujours le contenu généré par l'IA en production. Les modèles peuvent produire des résultats inattendus ou nuisibles. Pense à :

  • Filtrage du contenu
  • Vérification humaine pour les applications sensibles
  • Mécanismes de secours
  • Surveillance régulière et alertes

Conclusion

Les développeurs PHP peuvent désormais exploiter l'apprentissage automatique directement dans leurs applications sans dépendances externes. Bien qu'il y ait des limites (pas encore de prise en charge des GPU), les capacités actuelles sont suffisantes pour de nombreux cas d'utilisation concrets.

La combinaison de FFI, ONNX et de la bibliothèque PHP Transformers permet de :

  • Analyser le contenu généré par les utilisateurs en temps réel
  • De classer et de baliser automatiquement les images
  • Générer du contenu textuel utile
  • Créer des applications web plus intelligentes

Commence modestement, teste minutieusement et étends progressivement ton utilisation de l'IA dans les applications PHP. L'avenir du PHP et de l'apprentissage automatique ne fait que commencer.

Restez informé

Abonnez-vous à notre newsletter mensuelle pour les dernières mises à jour et nouvelles.

Votre meilleur travail
est à l'horizon

Essai gratuit