Самуэль Акопян
AI для PHP-разработчиков: интуитивно и на практике

Оглавление

1. Дисклеймер

О границах книги, допущениях и ответственности.

2. Введение

Мотивация, реалии и цели книги.

2a. От понимания – к математике и реализации

2b. Зачем PHP-разработчику AI

3. Экосистема ML в PHP

Обзор экосистемы PHP для машинного обучения и научных вычислений.

3a. Настройка среды для PHP

3b. Установка напрямую

1. Дисклеймер

О границах книги, допущениях и ответственности.

О характере этой книги

Эта книга не является академическим учебником уровня Stanford University или Massachusetts Institute of Technology. Это практическое инженерное руководство для разработчиков, прежде всего из PHP-среды.

Здесь приоритет – понимание принципов и их прикладное применение. Строгие математические доказательства сознательно упрощаются, если они мешают интуитивному пониманию. Если вы исследователь или математик, некоторые формулировки могут показаться слишком неформальными – это сделано намеренно.

Об упрощениях и ограничениях

В книге используются упрощённые модели, искусственные датасеты и демонстрационные примеры. Реальные данные всегда сложнее – они шумные, несбалансированные и противоречивые.

Мы не разбираем полностью внутреннее устройство фреймворков вроде TensorFlow или PyTorch, а также не раскрываем архитектурные детали конкретных моделей, например GPT-4. Вместо этого мы концентрируемся на фундаментальных принципах – вероятностях, энтропии, границах решений, attention и next-token prediction.

О безопасности и этике

Темы фишинга, adversarial-атак, prompt injection и LLM-security рассматриваются исключительно в образовательных и defensive-целях.

Любые примеры атак приведены для того, чтобы понимать, как строится защита и awareness-подход в компаниях. Ответственность за применение знаний лежит на читателе.

Об ответственности и применении

Книга не является юридической, финансовой или кибербезопасной консультацией. Перед внедрением ИИ в продукт или бизнес-процессы необходимо учитывать требования законодательства вашей страны, политики обработки персональных данных и отраслевые стандарты.

Код приводится "как есть" – в образовательных целях. Перед использованием в продакшене его необходимо тестировать, оптимизировать и защищать.

Об ограничениях ИИ

ИИ – это вероятностные модели. Они ошибаются. Они галлюцинируют. Они воспроизводят bias из данных.

Ни одна модель – даже созданная такими компаниями, как OpenAI или Google – не гарантирует абсолютной точности.

Всегда добавляйте валидацию, мониторинг и человеческий контроль.

О цели книги

Эта книга не о хайпе. Она о понимании.

Если после её прочтения вы перестанете воспринимать ИИ как магию и начнёте видеть в нём статистику, линейную алгебру, вероятности и инженерные компромиссы – значит, она выполнила свою задачу.

2. Введение

Мотивация, реалии и цели книги.

Эта книга выросла из простого наблюдения: PHP-разработчики почти всегда оказываются по другую сторону баррикад от машинного обучения. С одной стороны – мир веб-приложений, API, баз данных, бизнес-логики и реальных пользователей. С другой – статьи про нейросети, переполненные формулами, Python-кодом и ощущением, что это "не для нас". В результате AI либо воспринимается как черный ящик, либо полностью игнорируется.

Цель этой книги – снять это искусственное разделение.

На самом деле PHP-разработчики уже умеют мыслить моделями, даже если они никогда не называли это машинным обучением. Мы постоянно имеем дело с функциями, параметрами, ограничениями, ошибками, аппроксимациями. Мы пишем код, который принимает входные данные и выдает результат, ожидая, что он будет "достаточно хорош". Машинное обучение – это продолжение этой логики, а не магия и не отдельная дисциплина для избранных.

2a. От понимания – к математике и реализации

Эта книга – в первую очередь о понимании. Мы будем разбирать идеи машинного обучения с интуитивно стороны, формализовывать их математически просто и доводить до практической реализации на PHP. Без скрытых допущений, без "чёрных ящиков", без слепого копирования Python-примеров – только осознанный инженерный подход и воспроизводимый результат.

Интуитивно

В этой книге не будет попытки с первых же страниц погрузить читателя в линейную алгебру и статистику – ради самих формул. Каждая идея сначала объясняется на уровне интуиции: что мы хотим получить, какую проблему решаем, почему этот подход вообще имеет смысл. Если появляется термин – он привязывается к знакомым для программиста концепциям. Модель – это функция. Обучение – это подбор параметров. Предсказание – обычный вызов метода.

Интуиция важна не меньше формул. Без нее математические выкладки превращаются в набор символов, которые сложно применить к реальной задаче.

Математически просто

При этом книга не упрощает машинное обучение до уровня "нажми кнопку и получи AI". Если за чем-то стоит математика, она будет показана. Без излишнего академизма, но и без замалчивания сложных мест.

Мы будем говорить об ошибке модели, о том, что значит "оптимизировать", почему градиент вообще работает, откуда берется переобучение и почему модель может отлично показывать себя на тестах и при этом быть бесполезной в production-среде. Формулы будут ровно там, где без них невозможно сохранить простоту и ясность объяснения. Их цель – не напугать, а прояснить происходящее под капотом. Сложность этих формул не выйдет за рамки школьной алгебры, базового математического анализа и элементарной статистики: суммы, производные, наглядные геометрические интерпретации и т.д.

Практическая реализация

Все примеры и реализации ориентированы на PHP. Не как "обертку" вокруг Python-скрипта, а как полноценную среду для понимания и экспериментов. Мы будем писать простые модели руками: линейную регрессию, классификаторы, элементы нейросетей. Да, не так эффективно, как в специализированных библиотеках, но предельно прозрачно.

Это важно по двум причинам. Во-первых, когда алгоритм реализуется самостоятельно, он перестает быть абстрактным. Во-вторых, это позволяет понять, где проходит граница: что разумно писать на PHP, а где действительно лучше использовать внешние ML-сервисы или специализированные инструменты.

Для кого эта книга

Эта книга для PHP-разработчиков, которые:

хотят понимать, как работает AI, а не просто писать вызовы API

не боятся кода, но устали от псевдонаучных объяснений

хотят разговаривать с дата-саентистами и ML-инженерами на одном языке

хотят применять машинное обучение в реальных продуктах, а не в абстрактных примерах из учебников

Здесь не требуется глубокая математическая подготовка, но потребуется готовность думать и задавать вопросы. Машинное обучение – это не набор рецептов, а способ мышления. И именно этот способ мышления мы будем постепенно выстраивать, шаг за шагом, опираясь на опыт PHP-разработчика.

В следующих главах мы начнем с самого фундамента: что такое модель в математическом смысле и почему без этого понимания невозможно говорить ни об AI, ни о нейросетях, ни о так называемых "умных" приложениях.

2b. Зачем PHP-разработчику AI

PHP долгое время жил в довольно понятном и устойчивом мире. Он отвечал за backend, формы, базы данных, бизнес-логику, интеграции, платежи и админки. Даже когда вокруг появлялись новые языки и фреймворки, PHP оставался рабочей лошадкой интернета. Простым, практичным и ориентированным на результат.

Машинное обучение (ML) и искусственный интеллект (AI) долгое время существовали где-то рядом, но как будто в другой реальности. Они ассоциировались с Python, университетами, исследованиями, сложной математикой и задачами, которые редко встречаются в обычных веб-проектах. Многим PHP-разработчикам казалось (да и до сих пор кажется), что это не их территория.

Сегодня эта граница практически исчезла.

AI стал не абстрактной технологией, а частью повседневных продуктов. Мы сталкиваемся с ним в поиске, рекомендациях, фильтрации контента, автоматизации поддержки, анализе текста и персонализации интерфейсов. И почти во всех этих системах по-прежнему есть backend, написанный на PHP.

Поэтому вопрос уже не в том, может ли PHP работать с AI. Он может и давно это делает. Гораздо важнее понять, зачем PHP-разработчику вообще разбираться в AI и что именно ему нужно знать.

Почему эта книга вообще нужна

Если вы PHP-разработчик и интересуетесь AI, вы, скорее всего, сталкивались с одной из этих ситуаций:

- все примеры машинного обучения написаны на Python

- учебники объясняют математику, но не показывают, как это применить в реальном backend-проекте

- AI кажется либо магией, либо чем-то избыточным для "обычных" задач

- непонятно, где проходит граница между тем, что стоит писать самому, и тем, что лучше отдать готовым моделям

Эта книга написана для того, чтобы закрыть именно этот разрыв. Она не пытается сделать из вас специалиста по анализу данных. И не пытается конкурировать с академическими курсами по ML.

Цель книги – дать PHP-разработчику инженерное понимание AI:

- как он работает внутри

- где он действительно полезен

- какие ограничения у него есть

- как интегрировать его в реальные PHP-проекты

и где не стоит его использовать вообще (что в общем-то тоже очень важно)

Зачем PHP-разработчику понимать AI, а не просто писать вызовы API

Многие начинают знакомство с AI через готовые API. Это удобно. Вы написали несколько строчек кода, добавили HTTP-запрос, и вот модель уже генерирует текст, классифицирует данные или отвечает пользователю. На первых порах кажется, что этого достаточно.

Как всегда - проблемы начинаются позже.

Модель ведет себя нестабильно. Ответы выглядят убедительно, но иногда оказываются неверными или недостаточно точными. Расходы растут быстрее, чем ожидалось. Бизнес задает вопросы, на которые сложно ответить: почему система так решила, можно ли это контролировать, кто несет ответственность за ошибку и прочее.

В этот момент становится ясно, что AI – это не просто внешний сервис. Это вероятностная система со своими ограничениями, особенностями и рисками. Она не понимает бизнес-контекст, не знает ваших правил и не гарантирует корректность результата. И если разработчик этого не осознает, - то проблемы неизбежны.

Понимание основ машинного обучения дает PHP-разработчику важное преимущество. Оно позволяет трезво оценивать возможности моделей, проектировать архитектуру с учетом их слабых мест и объяснять бизнесу, что AI может, а чего от него ждать не стоит. Это уже не вопрос моды или интереса, а вопрос инженерной ответственности.

Где AI реально используется в PHP-проектах

Рассмотрим практические кейсы, где AI уже сегодня приносит пользу именно в PHP-экосистеме.

1. Работа с текстом

На практике AI чаще всего появляется там, где традиционный код начинает упираться в неопределенность. Особенно это заметно в задачах, связанных с текстом. Классификация обращений в поддержку, поиск похожих документов, анализ тональности комментариев, автоматическая модерация – все это сложно описать жесткими правилами, но хорошо решается статистическими моделями.

- Вот пример самых частых сценариев:

- классификация текстов (тематика, тональность, приоритет)

- поиск и семантическое сравнение

- автоответы и подсказки

- модерация контента

Конкретные примеры:

- определение категории обращения в support-системе

- поиск похожих статей в базе знаний

- фильтрация токсичных комментариев

- нормализация пользовательского ввода

- и т.д.

2. Поиск и рекомендации

Еще одна важная область – поиск и рекомендации. Классический SQL запросы отлично работают, когда пользователь знает, что именно он ищет. Но как только появляется желание найти "что-то похожее" или "что могло бы заинтересовать", без AI становится трудно. В таких системах PHP обычно отвечает за бизнес-логику и данные, а модели – за семантическое сравнение и рекомендации.

AI отлично дополняет классический SQL-поиск:

- семантический поиск вместо LIKE

- рекомендации товаров или контента

- поиск "похожего", а не "точного"

В PHP-проектах это часто выглядит так:

- PHP управляет логикой и хранением

- AI-модель отвечает за векторизацию и сравнение

3. Anti Fraud и аномалии

Отдельно стоит упомянуть Anti Fraud (борьбу с мошенничеством) и анализ аномалий. Здесь часто не нужны сложные нейросети. Простые модели, которые выявляют отклонения от нормального поведения, уже дают заметный эффект и могут быть реализованы даже без внешних ML-фреймворков.

Машинное обучение хорошо подходит для:

- обнаружения подозрительных действий

- анализа поведения пользователей

- выявления нетипичных паттернов

То есть, часто все эти результаты можно получить не с использованием нейросетей, а через простые статистические модели, которые можно реализовать и в PHP.

4. Генерация и автоматизация

И, конечно, генерация - во всех её проявлениях. Тексты писем, описания товаров, черновики отчетов, подсказки операторам поддержки. Во всех этих сценариях PHP выступает не как "мозг", а как контролирующий слой, который решает, что именно можно генерировать, где это допустимо и как проверять результат.

А именно:

- генерация текстов (описания товаров, письма, отчеты)

- автозаполнение форм

- помощь операторам поддержки

- подготовка черновиков документов

Таким образом PHP здесь выступает как "оркестратор" – контролирует, что, когда и в каком виде генерируется.

Что AI не умеет (и не будет уметь в вашем проекте)

Одна из главных задач этой книги, помимо прочего, – развенчать иллюзии.

Очень распространённая ошибка – ожидать от AI того, чего он принципиально дать не может. Модель не понимает смысла так, как человек. Она не знает, что "правильно" с точки зрения бизнеса. Она не берет на себя ответственность и не гарантирует корректность ответов.

При этом AI может выглядеть уверенно даже тогда, когда ошибается. Он может генерировать логичные, связные, но при этом полностью неверные ответы. Поэтому использование моделей без валидации и ограничений – это прямой путь к проблемам в production-среде.

Важно сразу принять простую мысль: AI – это помощник, а не источник истины. Он хорошо дополняет классический код, но не заменяет его.

Всё это значит, что AI:

- не понимает бизнес-логику

- не гарантирует корректность ответа

- не заменяет архитектурные решения

- не думает как человек

- не берет ответственность за результат

Поэтому AI нельзя использовать:

- как источник истины

- как единственный механизм принятия решений

- без валидации и ограничений

Где проходит граница: алгоритмы vs AI

Для PHP-разработчика особенно важно уметь вовремя остановиться и не тянуть AI туда, где он не нужен. Если задачу можно четко описать правилами, условиями и проверками, то обычный код почти всегда будет лучше. Он предсказуем, прозрачен и легко отлаживается.

AI имеет смысл там, где есть вариативность, нечеткость и субъективность. Там, где мы говорим не "равно или не равно", а "похоже", "вероятно" или "скорее всего". Именно в этих зонах машинное обучение показывает свою силу.

В общем, старайтесь придерживаться простого правила:

- если задачу можно четко описать правилами – используйте код

- если есть неопределенность, вариативность и "похожесть" – возможно, нужен AI

Например:

- проверка формата email – это обычный код

- определение смысла текста письма – это уже AI

AI дополняет классическое программирование, а не заменяет его.

3. Экосистема ML в PHP

Обзор экосистемы PHP для машинного обучения и научных вычислений.

Когда говорят, что "в PHP нет машинного обучения", обычно путают две разные вещи.

В PHP действительно редко обучают большие нейросети с нуля (во всяком случае на данный момент), но PHP давно и уверенно живет в мире применения моделей, работы с векторами, статистикой, классификацией, эмбеддингами и численной математикой.

Экосистема здесь не шумная, но зрелая. Она состоит из четырёх слоев:

* библиотеки классического ML

* математический фундамент

* инструменты интеграции с современными ML-системами

* интеграция с внешними ML-сервисами

Разберем их последовательно.

Классическое машинное обучение на PHP

Начнем с библиотек, которые реализуют сами алгоритмы машинного обучения прямо на PHP, без вызовов внешних сервисов.

PHP-ML

Репозиторий: https://github.com/jorgecasas/php-ml

Статус: давно не обновлялась

PHP-ML – это отправная точка для понимания ML в PHP. Здесь есть все основные алгоритмы из классического курса: k-NN, линейная и логистическая регрессия, наивный Байес, SVM, деревья решений, k-means.

Важно понимать философию PHP-ML. Она не пытается конкурировать с PyTorch или scikit-learn по производительности. Ее цель – дать программисту понятный и честный ML-инструмент прямо внутри PHP-кода. Её код легко читать, легко отлаживать, легко объяснять. Для книги и обучения это почти идеальный вариант.

Типичный сценарий: у вас есть признаки из базы данных, вы хотите быстро обучить модель для классификации или регрессии, сохранить ее и использовать в runtime без внешних сервисов.

Рассмотрим простой и показательный пример. В нём мы обучаем классификатор k-ближайших соседей [k-NN] на небольшом наборе точек, каждая из которых принадлежит одному из двух классов – a или b. После обучения модель должна определить, к какому классу относится новая точка.

Мы задаём обучающую выборку в виде координат на плоскости и соответствующие им метки классов:

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];

$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$classifier = new KNearestNeighbors();

$classifier->train($samples, $labels);

$prediction = $classifier->predict([3, 2]);

echo $prediction;

// Результат: 'b'

👉 Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией] для его запуска.

Для точки [3, 2] алгоритм возвращает класс "b", потому что её ближайшие соседи в обучающей выборке относятся именно к этому классу. Никакой "магии" здесь нет: k-NN просто смотрит, какие точки находятся ближе всего, и "голосует" по их меткам.

Именно эта наглядность и является большим плюсом алгоритма. Код легко читается, модель просто отлаживать, а математический смысл происходящего можно объяснить буквально на пальцах – через расстояния между точками и ближайшее окружение.

Но если PHP-ML – это "учебник", то следующая библиотека – уже "инженерный инструмент".

Rubix ML

Сайт и репозиторий: https://github.com/RubixML

Статус: активный

Rubix ML – это полноценный ML-фреймворк для PHP. Он ориентирован не на демонстрацию алгоритмов, а на построение воспроизводимых ML-пайплайнов: с трансформациями данных, сериализацией моделей, строгими интерфейсами и продакшен-подходом.

Rubix поддерживает классификацию, регрессию, кластеризацию и работу с датасетами как с first-class объектами.

Посмотрим, как это выглядит на практике.

Допустим, у нас есть данные для бинарной классификации. Код ниже также обучает классификатор k-ближайших соседей (k-NN), но уже на данных роста и веса с метками пола, а затем предсказывает метку для нового человека. Для параметров [172, 68] модель возвращает "M", так как среди 3 ближайших соседей большинство с этой меткой.

use Rubix\ML\Datasets\Labeled;

use Rubix\ML\Datasets\Unlabeled;

use Rubix\ML\Classifiers\KNearestNeighbors;

$samples = [

[170, 65],

[160, 50],

[180, 80],

[175, 70],

];

$labels = ['M', 'F', 'M', 'M'];

$dataset = new Labeled($samples, $labels);

$model = new KNearestNeighbors(3);

$model->train($dataset);

$testSamples = new Unlabeled([[172, 68]]);

$prediction = $model->predict($testSamples);

echo $prediction[0];

// Результат: 'M'

👉 Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией] для его запуска.

Обратите внимание на важный момент.

Мы не передаем "сырые массивы" в модель – мы работаем с объектом `Unlabeled` который является подтипом `Dataset`. Это принципиально другой уровень абстракции, который сразу приучает думать как ML-инженер, а не как автор скрипта для своего pet-проекта.

Rubix умеет сохранять модели, применять трансформеры, масштабировать признаки и работать с пайплайнами. В реальных PHP-системах это часто оказывает решающим, поэтому Rubix часто выбирают, когда модель – это не эксперимент, а часть долгоживущего сервиса, где важны версионирование, повторяемость и стабильность.

Линейная алгебра и тензоры как основа ML

Любой ML-код, даже самый прикладной, в итоге сводится к операциям над векторами и матрицами. В PHP для этого существует несколько сильных решений.

RubixML/Tensor

Репозиторий: https://github.com/RubixML/Tensor

Статус: активный

RubixML/Tensor – это низкоуровневая библиотека линейной алгебры, оптимизированная именно под задачи машинного обучения. Здесь есть тензоры, матрицы, элементные (поэлементные) операции, преобразования и разложения.

Если Rubix ML – это "мозг", то Tensor – это "мышцы".

Эта библиотека особенно важна, если вы хотите писать ML-код, который не просто работает, а делает это стабильно и предсказуемо – с контролируемым потреблением памяти и производительностью.

MathPHP

Репозиторий: https://github.com/markrogoyski/math-php

Статус: активный

MathPHP – универсальная математическая библиотека на чистом PHP. Линейная алгебра, статистика, вероятности, распределения, численные методы и прочее.

В контексте машинного обучения MathPHP часто используется не напрямую для моделей, а как фундамент для расчетов: расстояния, нормализация, статистические оценки, проверка гипотез.

Это библиотека, которая идеально подходит для объяснения математики "просто", без лишней сложности и скрытых оптимизаций.

NumPower

Репозиторий: https://github.com/RubixML/numpower

Статус: активный

NumPower – особый случай. Это PHP-расширение для высокопроизводительных численных вычислений, вдохновленное NumPy. Оно использует AVX2-инструкции на x86-64 и поддерживает CUDA для вычислений на GPU.

Фактически, это ответ на вопрос: "А можно ли делать в PHP настоящие численные вычисления на уровне scientific computing"?

И ответ – да, если вы готовы работать с расширениями и специфичной инфраструктурой.

NumPower актуален там, где PHP используется не как веб-слой, а как вычислительный движок.

NumPHP и SciPhp

NumPHP: https://numphp.org

Статус: давно не обновлялась

SciPhp: https://sciphp.org

Статус: давно не обновлялась

Это библиотеки, вдохновлённые NumPy и экосистемой научного Python, однако уже давно не обновлявшиеся. Сегодня они представляют скорее исторический интерес, чем практическую основу для новых проектов.

Тем не менее, их значение трудно переоценить: они показывают, что идеи научных вычислений в PHP начали развиваться задолго до появления LLM и нынешнего ажиотажа вокруг AI.

Современные ML-интеграции: токены, эмбеддинги, пайплайны данных

Современное машинное обучение редко ограничивается "алгоритмом". Вокруг него всегда есть инфраструктура: токенизация, подготовка данных, потоковая обработка.

Tiktoken PHP

Репозиторий: https://github.com/yethee/tiktoken-php

Статус:активный

tiktoken-php – это PHP-порт токенизатора OpenAI. Он используется для подсчета токенов, разбиения текста и подготовки данных для LLM.

Если вы работаете с GPT, Claude или Gemini из PHP, эта библиотека становится практически обязательной. Она позволяет понимать реальную стоимость запросов, длину контекста и поведение модели еще до вызова API.

TransformersPHP

Репозиторий: https://github.com/CodeWithKyrian/transformers-php

Статус: активный

Transformers PHP – один из самых интересных и показательных проектов в современной PHP ML-экосистеме. Это библиотека, которая позволяет использовать трансформер-модели (BERT, RoBERTa, DistilBERT и др.) напрямую из PHP, без Python и без внешних API.

По сути, это PHP-ориентированная обертка над идеями [Hugging Face Transformers], адаптированная под PHP-экосистему и реальные прикладные сценарии.

Ключевая особенность библиотеки – локальный [инференс]. Модели загружаются и выполняются на стороне PHP-приложения (через [ONNX Runtime]), что открывает важные архитектурные возможности:

* отсутствие сетевых вызовов к LLM API

* полный контроль над данными (важно для конфиденциальности)

* предсказуемая задержка

* возможность оффлайн-работы

Transformers PHP поддерживает типовые задачи NLP:

* получение эмбеддингов

* классификацию текста

* семантическое сравнение

* извлечение признаков для последующих задач

Пример использования выглядит концептуально просто: вы загружаете предобученную модель и применяете ее к тексту так же, как это делали бы в Python – но уже внутри PHP-кода. TransformersPHP предлагает простой pipeline API для задач вроде анализа настроений, классификации текста, семантического сравнения и т.д. В примере ниже модель определяет тональность двух фраз и показывает метку и score.

use function Codewithkyrian\Transformers\Pipelines\pipeline;

// Выделить конвейер для анализа настроений

$classifier = pipeline('sentiment-analysis');

$out = $classifier(['I love transformers!']);

echo print_r($out, true);

// Array (

// [label] => POSITIVE

// [score] => 0.99978870153427

// )

$out = $classifier(['I hate transformers!']);

echo print_r($out, true);

// Array (

// [label] => NEGATIVE

// [score] => 0.99863630533218

// )

👉 Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией] для его запуска.

Важно понимать архитектурную роль Transformers PHP.

Эта библиотека не конкурирует с большими LLM-сервисами вроде GPT или Claude. Она закрывает другой, очень важный слой:

* быстрые эмбеддинги

* локальная классификация

* семантический поиск

* lightweight NLP без внешних зависимостей

В связке с PHP это выглядит особенно логично. PHP остается центральным слоем бизнес-логики, а трансформеры становятся встроенным инструментом, а не удаленным сервисом.

Transformers PHP – это хороший пример того, как современный ML постепенно перестает быть "чужим" для PHP и становится частью его нативной экосистемы, пусть и через аккуратные инженерные мосты вроде ONNX.

Rindow Math Matrix

Репозиторий: https://github.com/rindow/rindow-math-matrix

Статус: активный

Rindow Math Matrix – это библиотека линейной алгебры и матричных вычислений, ориентированная на ML и численные методы. Она часто используется в связке с другими компонентами экосистемы Rindow.

Ключевые возможности:

* N-мерные массивы (тензоры) с поддержкой broadcasting

* Высокопроизводительные BLAS-операции

* Инструменты для машинного обучения

* Линейная алгебра и генерация случайных чисел

* Интеграция C/C++ через FFI (OpenBLAS, Rindow-Matlib, CLBlast и др.)

* Поддержка GPU через OpenCL (Intel, AMD – без необходимости NVIDIA)

Подходит для проектов, где важны производительность, строгий математический API и контроль над численными вычислениями.

Flow PHP

Репозиторий: https://github.com/flow-php/flow

Статус: активный

Flow PHP – это не ML-библиотека в чистом виде, а настоящий фреймворк для обработки данных. Это ETL (Extract, Transform, Load), пайплайны, трансформации, валидация, потоки данных.

В реальных ML-системах именно этот слой часто оказывается самым сложным. Данные нужно собрать, очистить, нормализовать и только потом подать в модель.

Flow PHP закрывает этот разрыв между "данные где-то лежат" и "модель уже работает".

Интеграция с внешними ML-сервисами

На практике, в большинстве production-сценариев, использование ML в PHP – это не обучение моделей, а инференс через API.

#### **LLPhant**

Репозиторий: <https://github.com/LLPhant/LLPhant>\

Статус: <mark style="color:green;">**активный**</mark>

LLPhant – это современный Generative AI-фреймворк для PHP, который решает уже не задачу "реализовать алгоритм", а задачу "построить AI-приложение".

Если PHP-ML и Rubix работают на уровне моделей и математики, а TransformersPHP – на уровне локального инференса, то LLPhant закрывает уровень архитектуры вокруг LLM.

Он вдохновлен LangChain и LlamaIndex, но адаптирован под PHP-экосистему.

LLPhant предоставляет:

* единый интерфейс к различным LLM (OpenAI, Anthropic, Mistral, Ollama и др.)

* работу с embeddings

* поддержку vector stores (Redis, Doctrine, Qdrant, in-memory и др.)

* построение RAG-сценариев (retrieval + generation)

* чат-память и управление диалогами

* инструменты для агентов и tool calling

Архитектурно LLPhant важен тем, что он позволяет рассматривать LLM не как "HTTP-вызов", а как компонент системы. Вы работаете не просто с API, а с абстракциями:

* Chat

* Embeddings

* VectorStore

* Document

* Memory

* Pipeline

Это переводит использование LLM из разряда "скрипт с запросом к OpenAI" в разряд воспроизводимой архитектуры.

Простейший пример:

```php

use LLPhant\Chat\OpenAIChat;

use LLPhant\Chat\Message;

use LLPhant\Chat\Enums\ChatRole;

$chat = new OpenAIChat();

$message = new Message();

$message->role = ChatRole::User;

$message->content = 'What is the capital of France?';

$response = $chat->generateText($message);

echo $response;

// Результат:

// The capital of France is Paris.

```

{% hint style="info" %}

Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией](https://aiwithphp.org/books/ai-for-php-developers/examples/ml-ecosystem-in-php) для его запуска.

{% endhint %}

Но реальная сила LLPhant раскрывается в RAG-сценариях:

1. Вы создаете embeddings для документов.

2. Сохраняете их в vector store.

3. При запросе пользователя находите релевантный контекст.

4. Передаете его в модель.

5. Получаете ответ, основанный на ваших данных.

Именно поэтому LLPhant занимает особое место в экосистеме PHP ML. Это не библиотека линейной алгебры и не инструмент классического машинного обучения, и не просто обёртка для локального инференса. Это фреймворк, который позволяет строить полноценные AI-системы поверх LLM – с управлением контекстом, хранением данных и архитектурной структурой.

Если говорить образно:

* PHP-ML – это учебник,

* Rubix – инженерный инструмент,

* TransformersPHP – локальный инференс,

* LLPhant – инфраструктура для LLM-приложений.

Именно такие проекты показывают, что современная ML-экосистема в PHP – это уже не просто "подключить API", а полноценный архитектурный слой вокруг моделей.

#### **OpenAI, Anthropic, Gemini и другие LLM**

Под крупные LLM существуют PHP SDK или качественные HTTP-обертки. Через них PHP получает:

* эмбеддинги для текста

* классификацию

* генерацию

* суммаризацию

* извлечение структурированных данных

С точки зрения архитектуры это выглядит так: модель живет вне PHP, а PHP становится "мозгом бизнес-логики", который знает, когда и зачем вызвать ML.

Именно здесь PHP особенно силен: он отлично интегрируется с очередями, базами, кэшем, платежами и UI.

#### **ONNX Runtime и инференс моделей**

Отдельного упоминания заслуживает [ONNX](https://apphp.gitbook.io/ai-for-php-developers/glossarii#one-hot-encoding). Через расширения или внешние сервисы PHP может выполнять инференс моделей, обученных в Python и экспортированных в ONNX-формат.

Это редкий, но важный кейс: модель обучается где угодно, а используется в PHP-приложении без Python в продакшене (через ONNX Runtime, расширения или внешний inference-сервис).

#### Компьютерное зрение и обработка сигналов

В задачах компьютерного зрения и обработки сигналов PHP не является лидирующим языком, однако базовые инструменты для интеграции таких решений всё же существуют. OpenCV может использоваться через биндинги, CLI-вызовы или внешние сервисы, при этом PHP выступает в роли управляющего и координирующего слоя.

В подобных сценариях PHP редко занимается численными вычислениями напрямую. Его роль – оркестрация: запуск и контроль CV-пайплайнов, передача данных между компонентами, интеграция с очередями, хранилищами и бизнес-логикой приложения. Это типичный пример того, как PHP эффективно работает с ML-компонентами, оставаясь центральной точкой управления, а не вычислительным ядром.

### Как читать эту экосистему целиком

Важно сделать один вывод, прежде чем двигаться дальше.

PHP – это не язык для соревнований по распознаванию изображений. Это язык, который соединяет машинное обучение с реальным продуктом. Его библиотеки заточены не под рекорды точности, а под: ясность кода, интеграцию, контроль данных и предсказуемость поведения.

Если вы понимаете, как работает модель математически, PHP даст вам достаточно инструментов, чтобы использовать ее в бою.

В этом смысле экосистема PHP и ML не является бедной – она прагматична и сфокусирована на прикладных задачах. PHP и машинное обучение – это про архитектурную роль PHP как слоя интеграции, оркестрации и бизнес-логики вокруг моделей:

* в применении моделей,

* в работе с эмбеддингами и векторами,

* в классификации и ранжировании,

* в оркестрации ML-сервисов,

* в соединении математики и бизнес-логики.

Именно поэтому экосистема PHP выглядит не как один монолит, а как набор разнообразных и точных инструментов.

{% hint style="info" %}

Для более широкого обзора экосистемы и актуальных экспериментов можно также обратиться к курируемой подборке Awesome PHP ML, где собраны библиотеки, инструменты и проекты, связанные с машинным обучением в PHP:

[Awesome PHP ML](https://github.com/apphp/awesome-php-ml)

{% endhint %}

3a. Настройка среды для PHP

PHP – это язык программирования, который чаще всего используют для веб-разработки. Но сегодня его всё чаще применяют и для задач машинного обучения и анализа данных. С выходом PHP 8 язык стал быстрее и получил новые возможности, которые позволяют создавать более мощные и эффективные приложения.

Это руководство поможет вам настроить рабочую среду на PHP 8 для работы с машинным обучением. Оно подойдёт как PHP-разработчикам, которые хотят попробовать себя в ML, так и специалистам по данным, которым интересно использовать PHP в своих проектах.

Вы узнаете, как установить PHP 8, подготовить удобную среду разработки и подключить нужные инструменты и библиотеки для задач машинного обучения. В результате у вас будет готовая база для создания ML-приложений на PHP.

Начнём с установки последней версии PHP и её настройки для лучшей производительности при работе с машинным обучением.

3b. Установка напрямую

Введение

Ниже вы найдете подробные инструкции по подготовке и настройке среды для PHP непосредственно на вашем компьютере.

1. Установка PHP 8.5

(последняя стабильная версия по состоянию на январь 2026 г.)

Для Windows:

1. Загрузите последнюю версию PHP 8.5 с официального сайта PHP (https://windows.php.net/download)

2. Распакуйте ZIP-файл в каталог (например, C:\php)

3. Добавьте каталог PHP в переменную среды PATH вашей системы

4. Переименуйте `php.ini-development` в php.ini в каталоге PHP

Для macOS:

brew install php@8.5

echo 'export PATH="/usr/local/opt/php@8.5/bin:$PATH"' >> ~/.zshrc

source ~/.zshrc

Для Linux (Ubuntu/Debian):

sudo apt update

sudo apt install software-properties-common

sudo add-apt-repository ppa:ondrej/php

sudo apt update

sudo apt install php8.5 php8.5-cli php8.5-common

2. Настройка PHP для оптимальной производительности

Отредактируйте файл php.ini:

memory_limit = 512M

max_execution_time = 300

error_reporting = E_ALL

display_errors = On

opcache.enable = 1

opcache.memory_consumption = 128

3. Настройка веб-сервера

Apache (с mod_php):

# Для Ubuntu/Debian

sudo apt install apache2 libapache2-mod-php8.5

sudo a2enmod php8.5

sudo systemctl restart apache2

Nginx (с PHP-FPM):

# Для Ubuntu/Debian

sudo apt install nginx php8.5-fpm

sudo systemctl start php8.5-fpm

sudo systemctl enable php8.5-fpm

Настройте Nginx для работы с PHP-FPM (отредактируйте /etc/nginx/sites-available/default):

location ~ \.php$ {

fastcgi_pass unix:/var/run/php/php8.5-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

}

4. Установка необходимых расширений PHP для машинного обучения

sudo apt install php8.5-xml php8.5-mbstring php8.5-curl php8.5-gd php8.5-zip php8.5-mysql php8.5-bcmath

5. Настройка Composer (менеджера пакетов)

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php composer-setup.php

php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

6. Установка популярных библиотек машинного обучения для PHP

composer require php-ai/php-ml

composer require rubix/ml

7. Настройка IDE

1. Установите PHPStorm или VS Code

2. Установите расширения PHP (для VS Code):

* PHP IntelliSense

* PHP Debug

* PHP Intellephense

8. Настройка системы контроля версий (Git)

sudo apt install git

git config --global user.name "Ваше имя"

git config --global user.email "your.email@example.com"

9. Настройка системы баз данных (MySQL)

Это опциональная настройка.

sudo apt install mysql-server

sudo mysql_secure_installation

Настройте PHP для работы с MySQL:

sudo apt install php8.5-mysql

10. Настройка виртуальной среды

Установите и используйте встроенный сервер разработки PHP для изолированных проектов:

mkdir my_ml_project

cd my_ml_project

php -S localhost:8000

11. Проверка настройки

Создайте файл phpinfo.php в корневом каталоге вашего веб-сервера со следующим содержимым:

phpinfo();

Откройте этот файл в веб-браузере, чтобы проверить конфигурацию PHP.

12. Создание простого тестового скрипта для машинного обучения

Мы создадим два тестовых скрипта, по одному для каждой библиотеки, чтобы убедиться в корректной работе PHP-ML и Rubix ML.

Тестовый скрипт для PHP-ML

Создайте файл с именем php_ml_test.php в каталоге public:

require_once __DIR__ . '/../vendor/autoload.php';

use Phpml\Classification\KNearestNeighbors;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];

$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$classifier = new KNearestNeighbors();

$classifier->train($samples, $labels);

$prediction = $classifier->predict([3, 2]);

echo "Предсказание: " . $prediction;

Тестовый скрипт Rubix ML

Создайте еще один файл с именем rubix_ml_test.php в вашей директории public:

require_once __DIR__ . '/../vendor/autoload.php';

use Rubix\ML\Classifiers\KNearestNeighbors;

use Rubix\ML\Datasets\Labeled;

use Rubix\ML\Datasets\Unlabeled;

$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];

$labels = ['a', 'a', 'a', 'b', 'b', 'b'];

$dataset = new Labeled($samples, $labels);

$estimator = new KNearestNeighbors(3);

$estimator->train($dataset);

$testSamples = new Unlabeled([[3, 2]]);

$prediction = $estimator->predict($testSamples);

echo "Rubix ML Prediction: " . $prediction[0] . "\n";

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.