PHP-ORT 是一个创新的 PHP 扩展,旨在为 PHP 生态系统引入高性能张量计算。由 Joe Watkins(krakjoe)开发,该扩展托管在 GitHub - krakjoe/ort,使开发者能够以卓越的效率执行复杂的张量数学运算。PHP-ORT 还可选集成微软的 ONNX Runtime,以支持高效的机器学习模型执行。
PHP-ORT(Oh Really, Tensors?)是一个 PHP 扩展,为张量计算提供了一个强大的框架。张量是多维数组,广泛应用于科学计算和机器学习领域。PHP-ORT 通过 SIMD(单指令多数据)加速和多核并行处理,优化了张量操作,支持包括元素级计算、线性代数函数和归约运算等多种数学操作,适用于多种应用场景。
安装 PHP-ORT 需要 PHP 7.4+ 或 8.0+、兼容的编译器(GCC 4.8+ 或 Clang 3.8+)以及至少支持 SSE2 的 CPU(推荐使用支持 AVX2 的 CPU 以获得最佳性能)。以下是安装步骤:
phpize
./configure --enable-ort
make
sudo make install
php.ini 文件中添加以下行:extension=ort.so
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 使张量操作变得直观。以下是一个简单的矩阵乘法和元素级操作示例:
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 专为速度和效率设计:
检查系统配置的代码:
echo "后端: " . (ORT\Math\backend() ?: "标量") . "\n";
echo "核心数: " . ORT\Math\cores() . "\n";
PHP-ORT 将 PHP 的简洁性与高性能计算需求相结合,特别适合以下场景:
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 都提供了高效且可靠的解决方案。