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 开发者今天面临的现状
$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
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
// 检查系统能力
echo "后端: " . (ORT\Math\backend() ?: "scalar") . "\n";
echo "核心数: " . ORT\Math\cores() . "\n";
// 输出示例:
// 后端: AVX2
// 核心数: 8矩阵运算
<?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 在各种硬件配置上都表现出色:
| 操作类型 | 矩阵大小 | 时间 | 吞吐量 |
|---|---|---|---|
| 元素级加法 | 1000x1000 | 0.4ms | ≥1 GFLOPS |
| 元素级乘法 | 1000x1000 | 0.4ms | ≥1 GFLOPS |
| 点积运算 | 10000 元素 | 0.02ms | >10 GFLOPS |
SIMD 加速效果
不同指令集的性能提升:
- AVX2: 8 倍性能提升
- SSE4.1: 4 倍性能提升
- NEON (ARM): 4 倍性能提升
- WASM: 2 倍性能提升
内存效率
- 零拷贝操作: 减少 90% 内存分配
- 对齐内存访问: 提高 20-30% 缓存命中率
- 不可变张量: 安全的多线程共享
所有基准测试都是可重现的,代码可检查,结果基于工程实现而非营销数字。
🛠️ 安装和快速开始
系统要求
# 安装可选依赖项
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构建扩展
# 构建扩展
phpize
./configure --enable-ort
make
sudo make install
# 添加到 php.ini
extension=ort.so验证安装
<?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
// 未来: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 革命的回答。
扩展的设计和功能已经为生产做好准备:代码正在大力开发中,发布将会公布。
参考链接: