PHP 中的机器学习生态系统

发布: (2025年12月25日 GMT+8 23:02)
10 分钟阅读
原文: Dev.to

Source: Dev.to

当人们说 “PHP 没有机器学习” 时,通常把两件完全不同的事混在一起了。

的确,PHP 很少用于 从头训练大型神经网络,但它多年来一直在 模型应用向量运算统计分类嵌入数值计算 领域中安然自得。

PHP‑ML 生态系统并不喧闹——但它 成熟。它由四层组成:

  1. 经典机器学习库
  2. 数学基础
  3. 与现代机器学习系统的集成工具
  4. 与外部机器学习服务的集成

让我们一步一步地来了解它们。

Source:

PHP 中的经典机器学习

我们将从直接在 PHP 中实现机器学习算法的库开始,而不调用外部服务。

PHP‑ML

仓库: (未提供链接)
状态: 大多已不再维护

PHP‑ML 是进入 PHP 机器学习的传统入口。它包含完整的经典机器学习工具箱:

  • k‑最近邻
  • 线性回归和逻辑回归
  • 朴素贝叶斯
  • 支持向量机
  • 决策树
  • k‑均值聚类

理解 PHP‑ML 的理念很重要。它 试图在性能上与 PyTorch 或 scikit‑learn 竞争;它的目标是清晰。代码易于阅读、调试和解释——这在学习和教学方面是巨大的优势。

典型的使用场景如下:

  1. 从数据库中提取特征
  2. 训练一个简单的分类或回归模型
  3. 序列化模型
  4. 在运行时使用模型,而无需任何外部机器学习服务
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 中的机器学习。这是了解当前可用且活跃开发的资源的绝佳起点。

Back to Blog

相关文章

阅读更多 »