[rindow/rindow-neuralnetworks]PHP的神经网络库,支持GPU加速

2022-02-26 奥古斯宏
简简单单用PHP实现强大的机器学习.

Rindow Neural Networks 是一个高级神经网络库.可以使用PHP实现强大的机器学习.

  • 它可以为DNN、CNN、RNN 和 Attention 构建机器学习模型
  • 内置提供了几个图像分类和文本翻译的案例例子
  • 使用的PHP扩展的性能是tensorflow CPU 的两倍
  • 不需要安装复杂的环境,安装三个扩展,使用composer即可

支持rindow_openblas扩展,可以在windows上使用GPU加速,不过这个特性目前还在试验阶段.

本文给大家介绍一下这个框架,并且分享一下测试的经验.

这个库就像Python中的Keras一样,他们在代码接口上都差不多.

对环境所要的依赖如下,后面会详细介绍:

  • PHP 7.2, 7.3, 7.4, 8.0.
  • Windows10 or Linux environment 需要安装rindow_openblas扩展.
  • Rindow Math Matrix
  • Rindow Math Plot ( 用于生成图标)
  • GD / GD2 extension ( 用于渲染图表)
  • pdo_sqlite extension ( 用于存储模型数据)
  • Rindow OpenBLAS extension ( 进行高性能的计算)
  • Rindow OpenCL extension / Rindow CLBlast extension ( 使用GPU加速,目前还在试验阶段)

安装

Rindow Neural Networks要求如下:

  • PHP 7.2, 7.3, 7.4, 8.0
  • Windows 10 20H2
  • Ubuntu 18.04, 20.04
  • AMD CPU/APU 64bit(SSE2)
  • OpenBLAS (0.3.13 Windows-x64, 0.3.8 Ubuntu-2004, 0.2.20 Ubuntu-1804)
  • CLBlast (1.5.1 Windows-x64)

首先我们要下载安装PHP并且设置PHP的目录到%PATH%环境中,这里要注意,不要使用nts版本,比如phpstudy内置的php版本都是不可以用的,去PHP官网下载Thread safe的版本.

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

我这里使用的PHP7.4.

把PHP解压到指定目录,并且在系统中设置%PATH%目录.

然后修改php.ini,设置如下几个配置:

  • memory_limit = 8G
  • extension = rindow_openblas
  • extension = pdo_sqlite
  • extension = gd2
  • extension = mbstring
  • extension = openssl

其中可以看到一个陌生的扩展rindow_openblas,

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

这需要我们去下载这个扩展放置到php的ext目录下:

https://github.com/rindow/rindow-openblas/releases

还要下载另一个开源项目OpenBLAS,并且设置它的bin目录到%PATH%环境中.

https://github.com/xianyi/OpenBLAS/releases

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

然后再命令行中运行 php -m 看看是否出错:

C:TEMP>php -m
[PHP Modules]
...
pdo_sqlite
...
rindow_openblas
...
C:TEMP>

剩下还有三个扩展不是必须的,但是它的案例里实际上是需要的,所以也是要安装:

下载前两个项目,他们是php 的扩展,放到php的ext目录并在php.ini中开启,

第三个项目是一个开源的计算库,下载解压然后设置它的bin目录到%PATH%环境中.


版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。


测试案例

这时候我们就可以跑一跑他提供的案例了.

新建一个文件夹,然后用composer 引入下面两个包:

composer require rindow/rindow-neuralnetworks
composer require rindow/rindow/rindow-math-plot

然后把这个文件夹的文件复制出来:

确保正常引入autoload.php,我们运行一个最基本的测试,也类似所有人工智能框架的hello world的项目,识别手写数字程序,基于mnist数据集的实验.很熟悉对不对,在学习其他人工智能框架的时候见过.

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

我们运行这个案例看看:

php basic-image-classification.php

他会自动下载数据集并且训练模型,最终会输出一张测试效果图.


这样一个简单地数字手写的人工智能项目就玩成了.

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。


这个项目还可以设计神经网络,自定义模型,更多的细节可以看他的文档:

https://rindow.github.io/neuralnetworks/index.html


实际上,想要玩转这个项目,需要一定的人工智能基础,仅仅是懂PHP是不够的,小编写了五年多PHP了,非常想搞一搞人工智能,现在有了PHP的神经网络项目,代码也都能看懂,但是也仅仅是把案例跑起来而已.这已经是另一片知识的海洋了.


版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。




评论
点击登录