- Funktionen
- Pricing

Dieser Blog basiert auf einer Präsentation von Guillaume Moigneu auf der Symfony 2024-Konferenz.
Maschinelles Lernen und KI sind nicht mehr auf Python und Node.js beschränkt. PHP-Entwickler können nun KI-Modelle mithilfe moderner Tools und Bibliotheken direkt in ihren Anwendungen ausführen. Dieser Leitfaden zeigt Ihnen, wie Sie maschinelles Lernen in PHP mit ONNX und Transformers implementieren können.
Transformatoren sind eine Art neuronaler Netzwerkarchitektur, die die KI um 2016–2017 revolutioniert hat. Vor den Transformatoren war die Ausführung von Modellen für maschinelles Lernen langsam und konnte Daten nicht effektiv parallel verarbeiten.
Wenn Sie Text an ein Transformer-Modell senden, durchläuft es mehrere Schritte, um Ihre Eingabe zu verstehen und zu verarbeiten. Zunächst führt das Modell eine Tokenisierung durch und teilt Ihren Text in kleinere Einheiten, sogenannte Token, auf. Diese Token sind in der Regel Wörter, können aber je nach Modell auch kleinere Teile von Wörtern sein.
Als Nächstes folgt der entscheidende Selbstaufmerksamkeitsmechanismus, bei dem das Modell die Beziehungen zwischen allen Tokens analysiert. Das ist das Besondere an Transformatoren – sie können verstehen, wie verschiedene Wörter im Kontext miteinander in Beziehung stehen. Ein Wort kann in verschiedenen Situationen völlig unterschiedliche Bedeutungen haben, daher muss das Modell die Beziehungen zwischen den Wörtern herausfinden, um zu verstehen, was Sie tatsächlich sagen wollen.
Anschließend führt das Modell eine Kontextzuordnung durch und verarbeitet diese Beziehungen mithilfe neuronaler Netze wiederholt. Es speist die Parameter durch mehrere Iterationen und versucht, die vollständige Bedeutung Ihrer Eingabe zu verstehen. Schließlich generiert es auf der Grundlage all dieser Kontextinformationen eine Ausgabe, sei es das Vervollständigen eines Satzes, das Klassifizieren von Text oder das Beantworten einer Frage.
Wenn Sie beispielsweise „Symfony ist ein großartiges Framework für ___” schreiben, analysiert das Modell die Beziehungen zwischen „Symfony”, „Framework” und „großartig”, um vorherzusagen, was als Nächstes kommt.
Um Machine-Learning-Modelle in PHP auszuführen, benötigen Sie:
composer require codeboost/transformers-phpWichtiger Hinweis: Die Bibliothek lädt architekturspezifische Pakete herunter. Stellen Sie sicher, dass Sie die richtige Version für Ihr System haben (ARM64 für M1-Macs, AMD64 für Intel-Rechner).
Die Textklassifizierung hilft Ihnen dabei, Textinhalte automatisch zu kategorisieren. Ideal für:
Guillaume demonstrierte dieses Konzept, indem er einen Symfony-Befehl ausführte, der Nintendo Switch-Bewertungen analysierte. Hier ist ein anschauliches Beispiel, das auf dem von ihm beschriebenen Ansatz basiert:
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']
];
}Reale Ergebnisse: In einem Test mit 108 Bewertungen der Nintendo Switch:
Automatische Kategorisierung und Kennzeichnung hochgeladener Bilder. Anwendungsfälle sind unter anderem:
Der Referent demonstrierte dies anhand einer Live-App zur Hotdog-Erkennung. Hier ein anschauliches Beispiel basierend auf seiner Beschreibung:
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]Performance: Nahezu sofortige Ergebnisse auf kleinen Servern (unter 1 Sekunde für typische Webbilder).
Automatische Textgenerierung für:
Guillaume demonstrierte dies mit der Frage: „Kann ein Taco als Sandwich betrachtet werden?“ Hier ist ein anschauliches Beispiel, das auf dem von ihm vorgestellten Ansatz basiert:
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"Systemanforderungen: Läuft auf 2 CPU-Kernen mit 2 GB RAM. Reaktionszeit: 1–2 Sekunden.
Die Foreign Function Interface (FFI)-Erweiterung für PHP ist keine wirklich neue Erweiterung, wurde aber bis vor kurzem nicht häufig verwendet. Mit FFI können Sie C-Bibliotheken direkt aufrufen und Code ohne Übersetzung direkt ausführen. Das ist großartig, denn anstatt CGI und ähnliche alte Methoden zu verwenden, können Sie diese Bibliotheken tatsächlich unabhängig und viel schneller ausführen.
FFI hat viel zur Performance beigetragen und kann für viele verschiedene Zwecke verwendet werden, z. B. zum Aufrufen von Binärdateien und ähnlichen Aufgaben. Guillaume erwähnte, dass Transformatoren architekturabhängig sind, was im Wesentlichen daran liegt, dass sie FFI verwenden, um C-Code im Hintergrund auszuführen.
ONNX löst ein großes Problem im maschinellen Lernen. Wenn Sie ein Modell erstellen und trainieren, verwenden Sie in der Regel ein bestimmtes Framework wie TensorFlow von Google oder PyTorch. Dies führt jedoch zu einer erheblichen Einschränkung: Wenn ein Modell mit TensorFlow erstellt wurde, können Sie es nicht in einer PyTorch-Produktivumgebung verwenden und umgekehrt. Sie sind gezwungen, für das Training und die Inferenz dasselbe Framework zu verwenden.
ONNX bietet eine Lösung, indem es ein Standardformat schafft, das für alle Frameworks funktioniert. Dieser offene Standard wurde in Zusammenarbeit zwischen führenden Branchenunternehmen wie Samsung, Apple und anderen entwickelt. Mit ONNX können Sie ein Modell in jedem Framework trainieren, es in das ONNX-Format konvertieren und dann unabhängig von der ursprünglichen Trainingsumgebung überall ausführen.
Wenn Sie viele verschiedene Dinge ausprobieren möchten, besuchen Sie Hugging Face. Dort stehen derzeit fast eine Million Modelle zur Verfügung, von denen Sie die meisten auch online testen können. Sie finden dort alle möglichen Kategorien wie Videoklassifizierung, Beantwortung von Fragen, Tabellenfragen, Token-Klassifizierung und alles andere, was Sie benötigen könnten.
Sie werden auch etwas finden, das zu Ihrem Anwendungsfall passt. Vielleicht müssen Sie ein wenig ausprobieren und testen, aber Sie werden etwas finden, das Ihren Anforderungen entspricht und das Sie anschließend mit der Bibliothek verwenden können. Es gibt auch eine Kategorie, in der Sie alle ONNX-Modelle finden, sodass Sie sicher sein können, dass sie tatsächlich mit Ihren Anforderungen kompatibel sind.
Etwas Neues, das vor etwa sechs Monaten aufkam, ist eine neue Modellkategorie von Hugging Face, die auch SmallML genannt wird. Das Ziel ist es, Modelle zu entwickeln, die fast so große Texte ausgeben können wie ChatGPT oder Claude, aber in einer Größe von 500 Megabyte oder weniger gebündelt sind. Das ist großartig, denn 500 Megabyte können Sie immer noch auf die meisten Rechner laden, selbst wenn Sie eine GPU auf Ihrem eigenen Rechner haben. Man kann es tatsächlich über Ollama oder was auch immer man möchte ausführen, oder auch über die PHP Transformer-Bibliothek.
Für Text- und Bildklassifizierungsaufgaben können Sie diese Modelle ohne Probleme direkt auf Ihren PHP-Servern ausführen. Der Referent demonstrierte dies auf einem wirklich kleinen Rechner mit zwei CPUs und zwei Gigabyte RAM, und es funktionierte recht gut. Die Modelle selbst sind nicht wirklich groß; das von ihm verwendete Textklassifizierungsmodell war beispielsweise nur etwa zwei Megabyte groß, sodass es schnell läuft und Sie es überall einsetzen können. Die Implementierung in Ihrer realen Produktivumgebung ist heute kinderleicht.
Hier haben Sie drei Optionen:
Überwachen Sie KI-generierte Inhalte in der Produktivumgebung stets. Modelle können unerwartete oder schädliche Ergebnisse liefern. Beachten Sie Folgendes:
PHP-Entwickler können nun maschinelles Lernen direkt in ihren Anwendungen nutzen, ohne auf externe Abhängigkeiten angewiesen zu sein. Zwar gibt es Einschränkungen (noch keine GPU-Unterstützung), doch reichen die aktuellen Funktionen für viele Anwendungsfälle in der Praxis aus.
Die Kombination aus FFI, ONNX und der PHP-Bibliothek „Transformers“ ermöglicht Folgendes:
Fangen Sie klein an, testen Sie gründlich und erweitern Sie nach und nach den Einsatz von KI in PHP-Anwendungen. Die Zukunft von PHP und maschinellem Lernen steht erst am Anfang.