首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PHP 高性能张量计算扩展库 PHP-ORT

PHP 高性能张量计算扩展库 PHP-ORT

作者头像
Tinywan
发布2025-10-20 17:18:19
发布2025-10-20 17:18:19
910
举报
文章被收录于专栏:开源技术小栈开源技术小栈

简介

PHP-ORT 是一个创新的 PHP 扩展,旨在为 PHP 生态系统引入高性能张量计算。由 Joe Watkins(krakjoe)开发,该扩展托管在 GitHub - krakjoe/ort,使开发者能够以卓越的效率执行复杂的张量数学运算。PHP-ORT 还可选集成微软的 ONNX Runtime,以支持高效的机器学习模型执行。

什么是 PHP-ORT?

PHP-ORT(Oh Really, Tensors?)是一个 PHP 扩展,为张量计算提供了一个强大的框架。张量是多维数组,广泛应用于科学计算和机器学习领域。PHP-ORT 通过 SIMD(单指令多数据)加速和多核并行处理,优化了张量操作,支持包括元素级计算、线性代数函数和归约运算等多种数学操作,适用于多种应用场景。

主要特性

  • 高性能数学计算:利用 SIMD 指令(AVX2、SSE4.1、SSE2),性能提升最高可达 8 倍。
  • 多核并行:自动将工作负载分配到 CPU 核心上,以优化性能。
  • 全面的类型支持:支持九种数据类型,并具备自动类型提升功能。
  • 内存高效:使用引用计数的张量和零拷贝切片,最大限度减少内存开销。
  • ONNX 集成:可选支持微软 ONNX Runtime,实现高效的机器学习模型加载和推理。

安装

安装 PHP-ORT 需要 PHP 7.4+ 或 8.0+、兼容的编译器(GCC 4.8+ 或 Clang 3.8+)以及至少支持 SSE2 的 CPU(推荐使用支持 AVX2 的 CPU 以获得最佳性能)。以下是安装步骤:

  1. 基本安装
代码语言:javascript
复制
phpize
./configure --enable-ort
make
sudo make install
  1. 启用扩展:在 php.ini 文件中添加以下行:
代码语言:javascript
复制
extension=ort.so
  1. 可选 ONNX Runtime 集成:若需机器学习功能,可安装 ONNX Runtime 并配置 PHP-ORT:
代码语言:javascript
复制
wget https://github.com/microsoft/onnxruntime/releases/download/v1.22.0/onnxruntime-linux-x64-1.22.0.tgz
tar -C /usr/local -xvf onnxruntime-linux-x64-1.22.0.tgz --strip-components 1
phpize
./configure --with-ort-onnx=/usr/local --enable-ort
make
sudo make install

“注意:请始终使用微软官方提供的 ONNX Runtime 版本,以避免兼容性问题。

基本使用示例

PHP-ORT 使张量操作变得直观。以下是一个简单的矩阵乘法和元素级操作示例:

代码语言:javascript
复制
use ORT\Tensor\Transient;
useORT\Math;

// 创建两个 1000x1000 的浮点张量
$a = new Transient([1000, 1000], $matrix_data, ORT\Tensor::FLOAT);
$b = new Transient([1000, 1000], $matrix_data, ORT\Tensor::FLOAT);

// 执行矩阵乘法
$result = Math\matmul($a, $b);

// 元素级加法和标量乘法
$sum = Math\add($a, $b);
$scaled = Math\multiply($a, 2.5);

// 计算归约
$total = Math\reduce\tensor\sum($a); // 所有元素之和
$row_sums = Math\reduce\axis\sum($a, 1); // 沿轴 1 求和

此代码展示了如何创建张量、执行矩阵乘法以及进行元素级操作和归约运算。

性能亮点

PHP-ORT 专为速度和效率设计:

  • SIMD 加速:通过 AVX2 向量化,性能提升最高可达 8 倍。
  • 多核扩展:自动利用所有可用 CPU 核心。
  • 内存优化:采用对齐的内存分配和零拷贝切片,减少开销。

检查系统配置的代码:

代码语言:javascript
复制
echo "后端: " . (ORT\Math\backend() ?: "标量") . "\n";
echo "核心数: " . ORT\Math\cores() . "\n";

为什么选择 PHP-ORT?

PHP-ORT 将 PHP 的简洁性与高性能计算需求相结合,特别适合以下场景:

  • 机器学习:在 PHP 中直接运行 ONNX 模型进行推理。
  • 科学计算:执行复杂的张量运算,用于模拟或数据分析。
  • 数据处理:以优化的数学操作处理大型数据集。

配置和定制

PHP-ORT 提供灵活的配置选项:

  • 环境变量:设置 ORT_SCALE_CORES 以控制线程池大小(默认为 CPU 核心数)。
  • 构建选项
    • --enable-ort-backend:启用 SIMD 优化(默认)。
    • --disable-ort-avx2--disable-ort-sse41:回退到较低级的 SIMD 指令。
    • --enable-ort-neon:适用于 ARMv8 架构。
    • --with-ort-onnx:启用 ONNX Runtime 集成。

结论

PHP-ORT 是一个突破性的扩展,让 PHP 开发者能够轻松应对计算密集型任务。其高性能张量运算、多核并行处理以及可选的 ONNX 集成使其成为现代应用的强大工具。无论是构建机器学习流水线还是进行大规模数据计算,PHP-ORT 都提供了高效且可靠的解决方案。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 什么是 PHP-ORT?
  • 主要特性
  • 安装
  • 基本使用示例
  • 性能亮点
  • 为什么选择 PHP-ORT?
  • 配置和定制
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档