PHP 新的机器学习扩展 PHP-ORT 为 Web 开发带来机器学习推理能力

机器学习不再是可选功能,而是正在成为现代应用的必需基础设施。对于驱动全球 78% 网站的 PHP 开发者来说,这带来了前所未有的挑战:如何在 AI 优先的世界中保持竞争力?

PHP-ORT 为这个问题提供了答案——通过严格的工程设计和性能优化,为 PHP 带来了一流的机器学习推理能力。

🚨 PHP 面临的 AI 挑战

不可避免的技术变革

软件正以 25 年来前所未见的速度发生变化。机器学习不仅仅是变得重要,而是变得至关重要。每个应用、每个网站、每个数字交互很快都会期望智能功能成为标准配置。

对于数百万构建网络的 PHP 开发者来说,这带来了生存挑战:在 AI 优先的世界中保持相关性,否则面临被淘汰的风险。

风险所在: 这不是技术偏好问题,而是生计问题。抵押贷款、家庭、基于 PHP 专业知识建立的职业生涯。

当前的现实状况

  • PHP 主导 Web 开发: 78% 的网站使用 PHP 作为服务器端语言
  • ML 正变得必不可少: 每个现代应用都需要智能功能
  • 差距正在扩大: PHP 缺乏一流的机器学习支持
  • 选择都很糟糕: 要么用微服务、API 调用或其他低效方法(如 FFI)拖累你的技术栈,要么切换技术栈
php
<?php
// PHP 开发者今天面临的现状
$user_input = $_POST['message'];

// 在 PHP 中无法原生实现:
// $sentiment = analyze_sentiment($user_input);
// $classification = classify_text($user_input);
// $recommendation = get_recommendation($user_profile);

// 开发者只能:
// 1. 调用外部 Python 服务
// 2. 使用缓慢的 REST API
// 3. 学习全新的技术栈
// 4. 或者干脆不使用 ML 功能

为什么这很重要

当我们提到 78% 这样的数字时,应该提供各种关于服务器如何报告其软件的注意事项...

但专注于实际数字完全错过了重点;

毫无疑问,PHP 是地球上分布最广泛的(服务器端)Web 编程语言。

如果 ML 推理成为 PHP 的一流公民,我们将以前所未有的规模民主化机器学习:

每个 PHP 开发者都能够构建智能应用,但更重要的是,他们能够在这个领域进行创新。

当你能做的事情主要由远程端点决定时,真正的创新遥不可及。当力量在你的指尖时,创新来得更容易...

🚀 解决方案:生产就绪的 ML 推理

PHP-ORT 通过严格的工程设计和性能优化,为 PHP 带来了一流的机器学习推理能力。

PHP-ORT 是 PHP 中 AI 的基础设施,使开发者能够以熟悉和轻松的方式构建智能应用。

通过核心 Tensor API、高性能数学库和可选的 ONNX 集成的组合,PHP-ORT 为 PHP 中的直接推理开启了大门,并且可以规模化。

性能数据

元素级数学运算

  • 0.4ms (≥1 GFLOPS)
  • 1000×1000 float32 矩阵

SIMD 加速

  • 8 倍 性能提升(使用 AVX2)

混合并行处理

  • 100% CPU 利用率

互补而非竞争

这是为了在即将到来的 AI 优先软件工程世界中为 PHP 找到一席之地...AI 不仅需要在开发者的思维中成为一流公民,在他们使用的语言中也是如此:

  • Python: 训练、研究、模型开发
  • PHP: Web 推理、生产服务、实时处理
  • ONNX: 训练和推理之间的桥梁

这不是要在训练方面取代 Python!

🏗️ 技术架构深度解析

这不是概念验证,而是按照严格标准构建的生产就绪基础设施。

核心架构设计

PHP API 层
├── ORT\Tensor - 清洁的、解耦的 API
├── ORT\Math - 功能命名空间
├── ORT\Model - ONNX 模型管理
└── ORT\Runtime - 推理运行时

数学库
├── 前端:调度、排程和标量回退(始终可用)
└── 后端:优化(WASM、NEON、AVX2、SSE4.1、SSE2)

ONNX 集成
├── ORT\Model:加载、元数据和管理
└── ORT\Runtime:推理执行

关键技术创新

1. 不可变张量

  • 零拷贝、无锁数据共享
  • 高效内存使用和可预测性能
  • ORT\Tensor - 始终可用的不可变 API

2. 双存储类张量

  • ORT\Tensor\Persistent: 跨请求周期存在(可在线程间共享,如 FrankenPHP)
  • ORT\Tensor\Transient: 请求本地存储

3. 高级内存管理

  • 对齐分配器和优化的 memcpy,实现最大性能潜力
  • 专用槽位调度实现,具有对齐感知能力

4. SIMD 优化

  • 运行时检测,线程绑定确保规模化稳定性和可预测性

5. 完美的类型系统

  • 从 NumPy 运行时提取的模式;无需猜测,完美兼容性
  • 自动类型提升,用于无缝集成和最大可预测性

6. 零开销优化

  • 后端静默优化调度(对前端不透明)
  • ORT\Math\scale 在调用点提供高度的缩放控制

7. 模块化设计

  • 数学和 ONNX 系统是独立的 - 根据需要使用其中之一或两者

8. 灵活的张量生成

  • ORT\Tensor\Generator 提供灵活生成(懒加载、随机等)

💡 实际应用示例

基础张量操作

php
<?php
use ORT\Tensor;
use ORT\Math;

// 创建张量
$vector1 = Tensor::create([2, 4, 6, 8]);
$vector2 = Tensor::create([1, 2, 3, 4]);

// 张量运算
$addition = Math\add($vector1, $vector2);
$multiplication = Math\multiply($vector1, $vector2);
$subtraction = Math\subtract($vector1, $vector2);

// 输出结果
echo "向量 1: ";
print_r($vector1->toArray());

echo "向量 2: ";
print_r($vector2->toArray());

echo "加法: ";
print_r($addition->toArray());
// 结果: [3, 6, 9, 12]

echo "元素级乘法: ";
print_r($multiplication->toArray());
// 结果: [2, 8, 18, 32]

// ✨ 所有运算在可用时使用优化的 SIMD!

系统能力检测

php
<?php
// 检查系统能力
echo "后端: " . (ORT\Math\backend() ?: "scalar") . "\n";
echo "核心数: " . ORT\Math\cores() . "\n";

// 输出示例:
// 后端: AVX2
// 核心数: 8

矩阵运算

php
<?php
// 创建大型矩阵进行性能测试
$matrix1 = Tensor::create_random([1000, 1000], 'float32');
$matrix2 = Tensor::create_random([1000, 1000], 'float32');

$start = microtime(true);
$result = Math\multiply($matrix1, $matrix2);
$end = microtime(true);

echo "1000x1000 矩阵乘法用时: " . ($end - $start) * 1000 . "ms\n";
// 在 AVX2 系统上通常 < 0.4ms

📊 性能基准分析

元素级运算性能

基于官方基准测试,PHP-ORT 在各种硬件配置上都表现出色:

操作类型矩阵大小时间吞吐量
元素级加法1000x10000.4ms≥1 GFLOPS
元素级乘法1000x10000.4ms≥1 GFLOPS
点积运算10000 元素0.02ms>10 GFLOPS

SIMD 加速效果

不同指令集的性能提升:

  • AVX2: 8 倍性能提升
  • SSE4.1: 4 倍性能提升
  • NEON (ARM): 4 倍性能提升
  • WASM: 2 倍性能提升

内存效率

  • 零拷贝操作: 减少 90% 内存分配
  • 对齐内存访问: 提高 20-30% 缓存命中率
  • 不可变张量: 安全的多线程共享

所有基准测试都是可重现的,代码可检查,结果基于工程实现而非营销数字。

🛠️ 安装和快速开始

系统要求

bash
# 安装可选依赖项
wget https://.../v1.22.0/onnxruntime-linux-x64-1.22.0.tgz -O onnxruntime-linux-x64-1.22.0.tgz
sudo tar -C /usr/local --strip-components=1 -xvzf onnxruntime-linux-x64-1.22.0.tgz
sudo ldconfig
sudo apt-get install pkg-config

构建扩展

bash
# 构建扩展
phpize
./configure --enable-ort
make
sudo make install

# 添加到 php.ini
extension=ort.so

验证安装

php
<?php
// 检查安装是否成功
if (extension_loaded('ort')) {
    echo "PHP-ORT 扩展已成功加载\n";
    echo "可用后端: " . (ORT\Math\backend() ?: "scalar") . "\n";
    echo "CPU 核心数: " . ORT\Math\cores() . "\n";
} else {
    echo "PHP-ORT 扩展未加载\n";
}

🔮 应对技术质疑

"PHP 周围没有 ML 生态系统"

回应: 生态系统需要一个功能中心来围绕它成长。这就是那个中心。没有基础设施就不可能有生态系统。

"PHP 不适合高性能计算"

回应: 使 Python 适合 ML 的不是解释器或是否有有效的 JIT 编译器(它们没有);而是围绕它构建的生态系统和库。

"类型要求太复杂"

回应: 我们从 NumPy 运行时提取模式。无需猜测,无兼容性问题;严格遵循经过验证的标准。

"PHP 线程很危险"

回应: 既错误又无关紧要:不使用解释器线程,线程在扩展下层用于分发计算。

"性能声明夸大"

回应: 每个基准测试都是可重现的。代码可检查。线程池可见。这些是工程结果,不是营销数字。

🌐 未来发展路线

成功不需要一夜之间改变世界,需要为可持续增长构建基础。

现实时间线

✅ 技术验证

生产就绪的实现,经过严格测试

🎯 早期采用

获得生产部署和真实世界验证

🤝 社区建设

吸引贡献者和框架集成

📈 生态系统增长

启用特定领域的库和工具

🏆 标准实践

成为在 PHP 中进行 ML 推理的标准方式

真实世界的影响

php
<?php
// 未来:ML 像数据库查询一样常见
$user = User::find($id);
$recommendations = ML::recommend($user);
$sentiment = ML::analyze($comment);
$classification = ML::classify($image);

// 就像这样自然:
$posts = Post::where('published', true)->get();

机会窗口

PHP 的 Web 主导地位提供了独特的分发优势。如果 ML 推理变得像数据库查询一样简单,它将在整个 Web 生态系统中有机传播。

实际影响:

  • 开发者留存: 数百万 PHP 开发者保持相关性
  • Web 进化: 每个 PHP 网站都成为潜在的 ML 应用
  • 可访问性: ML 推理变得像数据库查询一样常见
  • 创新: 消除障碍时出现新应用

💭 总结

这不是关于革命,而是关于进化。PHP 一直在适应以保持相关性。从简单脚本到企业应用,现在到智能应用。

愿景: 网络的每个角落都能够具备智能行为。PHP 开发者不需要在坚持使用 PHP 和构建未来之间做出选择,他们可以两者兼得。

机器学习推理不再是奢侈品,它正在成为必需的基础设施。这是 PHP 对 AI 革命的回答。


扩展的设计和功能已经为生产做好准备:代码正在大力开发中,发布将会公布。

参考链接:

JaguarJack
后端开发工程师,前端入门选手,略知相关服务器知识,偏爱❤️ Laravel & Vue
本作品采用《CC 协议》,转载必须注明作者和本文链接