PHP 中的机器学习生态系统
Source: Dev.to
当人们说 “PHP 没有机器学习” 时,通常把两件完全不同的事混在一起了。
的确,PHP 很少用于 从头训练大型神经网络,但它多年来一直在 模型应用、向量运算、统计、分类、嵌入 和 数值计算 领域中安然自得。
PHP‑ML 生态系统并不喧闹——但它 成熟。它由四层组成:
- 经典机器学习库
- 数学基础
- 与现代机器学习系统的集成工具
- 与外部机器学习服务的集成
让我们一步一步地来了解它们。
Source: …
PHP 中的经典机器学习
我们将从直接在 PHP 中实现机器学习算法的库开始,而不调用外部服务。
PHP‑ML
仓库: (未提供链接)
状态: 大多已不再维护
PHP‑ML 是进入 PHP 机器学习的传统入口。它包含完整的经典机器学习工具箱:
- k‑最近邻
- 线性回归和逻辑回归
- 朴素贝叶斯
- 支持向量机
- 决策树
- k‑均值聚类
理解 PHP‑ML 的理念很重要。它 不 试图在性能上与 PyTorch 或 scikit‑learn 竞争;它的目标是清晰。代码易于阅读、调试和解释——这在学习和教学方面是巨大的优势。
典型的使用场景如下:
- 从数据库中提取特征
- 训练一个简单的分类或回归模型
- 序列化模型
- 在运行时使用模型,而无需任何外部机器学习服务
use Phpml\Classification\KNearestNeighbors;
$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);
$result = $classifier->predict([3, 7]);
生成的代码几乎像教科书一样——这是一种特性,而不是缺陷。你可以推理模型并解释其背后的数学原理,而不需要隐藏的魔法。
Rubix ML
网站 & 仓库: (未提供链接)
状态: 积极维护
Rubix ML 是一个功能完整的 PHP 机器学习框架,侧重于 生产级流水线,而非演示。
关键特性
- 分类、回归、聚类
- 一流的
Dataset对象 - 转换器和特征缩放
- 模型序列化
- 可复现的流水线
示例:二分类
use Rubix\ML\Datasets\Labeled;
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);
$prediction = $model->predict([[172, 68]]);
一个重要的设计决策凸显出来:你不向模型传递原始数组——而是使用 结构化数据集。这迫使人们从 “脚本式黑客” 转向 “机器学习工程”。Rubix 常在模型不是实验而是 生产系统中长期使用的组件 时被选用,此时版本管理、可重复性和稳定性尤为重要。
Source: …
线性代数与数值基础
所有机器学习最终都归结为 向量、矩阵和张量。PHP 在这方面有几种可靠的选择。
RubixML/Tensor
仓库: (未提供链接)
状态: 活跃
RubixML/Tensor 是一个针对机器学习工作负载专门优化的底层线性代数库。它提供:
- 张量和矩阵
- 元素级操作
- 分解与变换
如果 Rubix ML 是大脑,Tensor 就是肌肉。当你关注 可预测的内存使用和性能 而不仅仅是正确性时,这个库至关重要。
MathPHP
仓库: (未提供链接)
状态: 活跃
MathPHP 是一个用纯 PHP 编写的通用数学库。它包括:
- 线性代数
- 统计学
- 概率分布
- 数值方法
在机器学习项目中,MathPHP 常被用作 支撑基础:距离度量、归一化、统计估计、假设检验。它尤其有价值,因为它 诚实 实现数学——没有隐藏的优化或抽象。
NumPower
仓库: (未提供链接)
状态: 活跃
NumPower 是一个用于 高性能数值计算 的 PHP 扩展,灵感来源于 NumPy。它在 x86‑64 CPU 上使用 AVX2 指令,并支持 CUDA 进行 GPU 计算。
“PHP 能做真正的科学计算吗?”
可以 —— 前提是你愿意使用扩展和专门的基础设施。
当 PHP 不仅仅是 Web 层,而是 计算引擎 时,NumPower 就显得相关。
NumPHP 与 SciPhp
- NumPHP: (未提供链接)
- SciPhp: (未提供链接)
状态: 不再维护
这些受 NumPy 启发的库如今大多属于历史兴趣,但它们表明,早在当前 AI 热潮之前,PHP 已经有了科学计算的概念。
Source: …
现代机器学习集成:Token、嵌入、数据管道
现代机器学习很少单独存在。每个模型周围都有相应的基础设施。
tiktoken‑php
仓库: (未提供链接)
tiktoken-php 是 OpenAI 的 tiktoken 分词器的 PHP 移植版。它可以帮助你:
- 统计 token 数量
- 正确拆分文本
- 估算请求费用
- 控制上下文长度
如果你在 PHP 中使用 GPT、Claude 或 Gemini,这个库几乎是必备的。
Rindow Math Matrix
仓库: (未提供链接)
状态: 活跃
一个面向机器学习和数值方法的线性代数库,常在 Rindow 生态系统中使用。它提供严格的数学 API 和对数值行为的精确控制。
Flow PHP
仓库: (未提供链接)
状态: 活跃
Flow PHP 是一个 数据处理框架(而非机器学习库)。它处理:
- ETL 流水线
- 数据转换
- 校验
- 流式工作流
在真实的机器学习系统中,数据准备往往比建模更困难。Flow PHP 填补了 “原始数据已存在” 与 “模型可以消费它” 之间的空白。
与外部机器学习服务的集成
目前在 PHP 中使用机器学习最常见的方式是 通过 API 进行推理。
大语言模型 API:OpenAI、Anthropic、Gemini
PHP SDK 和 HTTP 客户端让 PHP 应用能够使用:
- 嵌入向量
- 分类
- 文本生成
- 摘要
- 结构化数据抽取
架构影响
- 模型运行在别处。
- PHP 控制 何时、为何 调用模型。
这正好契合了 PHP 的优势:队列、数据库、缓存、计费、UI 与编排。
ONNX Runtime 与模型推理
- 模型可以在 Python 中训练,导出为 ONNX,然后通过扩展或外部运行时在 PHP 中执行。
- 这实现了 生产环境中不使用 Python,同时在 PHP 应用内部完全掌控推理过程。
计算机视觉与信号处理
PHP 并非该领域的主导者,但也有基本工具可用。
- 可以通过绑定或 CLI 调用使用 OpenCV,由 PHP 充当编排层。
- 典型模式:PHP 协调重算任务,而不是直接执行这些高强度计算。
如何整体阅读 PHP ML 生态系统
PHP 不是用于 ML 基准测试或 Kaggle 竞赛的语言。
它是一种用于 将机器学习与真实产品连接 的语言。
生态系统的优先级:
- 代码清晰度
- 集成
- 数据控制
- 可预测行为
如果你理解模型背后的数学,PHP 提供了足够的工具让你在生产环境中使用它。
PHP 在 ML 系统中的核心角色
- 应用模型
- 处理嵌入和向量
- 分类与排序
- 编排 ML 服务
- 将数学与业务逻辑相连接
因此,PHP 的 ML 生态系统并非单一整体——它是一个精准的工具箱,这正是许多真实世界系统所需要的。
更多资源
探索 Awesome PHP ML,这是一个精心策划的库、工具和项目集合,专注于 PHP 中的机器学习。这是了解当前可用且活跃开发的资源的绝佳起点。