- Fonctionnalités
- Pricing

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.
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.
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.
Pour exécuter des modèles d'apprentissage automatique en PHP, tu as besoin de :
composer require codeboost/transformers-phpRemarque 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).
La classification de texte te permet de catégoriser automatiquement du contenu textuel. Idéal pour :
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 :
Catégorise et balise automatiquement les images téléchargées. Exemples d'utilisation :
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).
Génère automatiquement du texte pour :
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.
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.
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.
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.
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.
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.
Tu as ici trois options :
Surveille toujours le contenu généré par l'IA en production. Les modèles peuvent produire des résultats inattendus ou nuisibles. Pense à :
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 :
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.