PHP 中集成现代机器学习模型
Transformers PHP 库让 PHP 开发者能使用现代 ML 模型。展示跨语言机器学习的可行性。
Transformers PHP 库让 PHP 开发者能使用现代 ML 模型。展示跨语言机器学习的可行性。
如果你对 Machine Learning 和 PHP 感兴趣,那么 Transformers PHP 堪称一个改变游戏规则的工具,它在 PHP 环境中提供了强大的文本处理能力。
Transformers PHP 利用预训练的 transformer 模型,简化了文本和图像处理任务。它既能将 NLP 功能无缝集成到 PHP 应用中,用于处理文本,也支持图像分类、目标检测等图像相关任务。
Transformers PHP 是一个开源项目。你可以在 GitHub 仓库中找到更多信息和源代码。
Transformers PHP 提供了一系列强大功能,旨在增强 PHP 环境中的文本和图像处理能力:
Transformer 架构:Transformers PHP 的设计灵感来自 Vaswani 等人的论文《Attention is All You Need》,通过 self-attention 机制实现高效的文本处理。
自然语言处理应用:从翻译到情感分析,Transformers PHP 可以轻松应对各种 NLP 任务。
图像应用:Transformers PHP 支持在 PHP 应用中执行图像分类、目标检测等图像相关任务。
模型获取:你可以访问 Hugging Face 等平台上的大量预训练模型,无须进行大规模训练即可简化开发流程。
丰富的架构选择:你可以从 BERT、GPT 或 T5 等架构中进行选择。每种架构都针对特定任务进行了优化,从而确保最佳性能。Transformers PHP 弥合了 PHP 与高级 NLP 之间的鸿沟,为开发者实现 AI 驱动的解决方案带来了前所未有的机会。
Transformers PHP 的核心在于它与 ONNX Runtime 的集成。ONNX Runtime 是一个高性能 AI 引擎,旨在高效执行 deep learning 模型。借助 Foreign Function Interface(FFI)机制,Transformers PHP 可以与 ONNX Runtime 无缝连接,从而在 PHP 环境中以极快的速度执行 transformer 模型。
那么,ONNX Runtime 究竟是什么?从本质上说,ONNX(Open Neural Network Exchange)是一种用于表示 deep learning 模型的开放格式,旨在促进不同框架之间的互操作性。ONNX Runtime 由 Microsoft 开发,是一个专门为 ONNX 模型构建的跨平台高性能引擎。它为神经网络模型的高效执行提供了强大支持,并能运行在 CPU、GPU 和专用加速器等不同的硬件平台上。
通过 FFI 机制将 ONNX Runtime 集成到 Transformers PHP,可以带来以下几项关键优势:
性能:ONNX Runtime 针对速度和效率进行了优化,可确保 transformer 模型在 PHP 应用中快速完成 inference。这意味着更短的响应时间和更出色的整体性能,对于实时应用或高吞吐量应用而言至关重要。
硬件加速:借助 ONNX Runtime 的能力,Transformers PHP 可以利用现代 CPU 和 GPU 提供的硬件加速功能,从而实现并行计算和资源利用优化,进一步提升性能。
互操作性:通过遵循 ONNX 格式,ONNX Runtime 能够兼容包括 PyTorch 和 TensorFlow 在内的多种 deep learning 框架。这种互操作性让开发者可以将使用不同框架训练的 transformer 模型无缝集成到 Transformers PHP 应用中。
可扩展性:ONNX Runtime 可以在不同的硬件配置上高效扩展,从单个 CPU 到大规模分布式系统均可适用。这种可扩展性确保 Transformers PHP 能够处理不同规模的工作负载,并适应不断变化的性能需求。
总而言之,通过 FFI 机制将 ONNX Runtime 与 Transformers PHP 集成,为 PHP 生态系统中的 AI 驱动应用开启了无限可能。开发者可以放心地利用 transformer 模型的强大能力与灵活性,因为它们背后有一个能够交付卓越结果的高性能 AI 引擎作为支撑。
在开始使用 Transformers PHP 之前,我想请你为它的 GitHub 仓库点一个 Star,并关注这个优秀库的作者 Kyrian。
首先创建一个新目录,然后进入这个空目录。
mkdir example-app
cd example-app
接下来安装该 package:
composer require codewithkyrian/transformers
执行命令的过程中,系统会询问你是否允许启用并运行 ankane/onnxruntime package 的 composer plugin,以便为 PHP 下载 ONNXRuntime binaries。我的建议是回答 y(是,请启用):
Do you trust "codewithkyrian/onnxruntime-downloader-plugin" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?]
这样一来,composer 会下载所有依赖并将其安装到 vendor/ 文件夹中,同时自动下载 ONNX runtime。因此,你只需要运行 composer require codewithkyrian/transformers 即可。
归根结底,ONNX Runtime Downloader plugin 非常简单:它借助 ONNX Runtime PHP package,自动触发 ONNX Runtime 的下载。
安装 package 后,就可以开始使用它了。你可以创建一个新的 PHP 文件,在其中引入 autoload 文件、实例化 Transformers 类,然后使用所需功能初始化 pipeline。
<?php
// 001 requiring the autoload file from vendor
require './vendor/autoload.php';
// 002 importing the Transformers class
use Codewithkyrian\Transformers\Transformers;
// 003 importing the pipeline function
use function Codewithkyrian\Transformers\Pipelines\pipeline;
// 004 initializing the Transformers class setting the cache directory for models
Transformers::setup()->setCacheDir('./models')->apply();
// 005 initializing a pipeline for sentiment-analysis
$pipe = pipeline('sentiment-analysis');
// 006 setting the list of sentences to analyze
$feedbacks = [
'The quality of tools in the PHP ecosystem has greatly improved in recent years',
"Some developers don't like PHP as a programming language",
'I appreciate Laravel as a framework',
'Laravel is a framework that improves my productivity',
'Using an outdated version of Laravel is not a good practice',
'I love Laravel',
];
echo PHP_EOL.'⭐⭐⭐ SENTIMENT ANALYSIS ⭐⭐⭐'.PHP_EOL.PHP_EOL;
// 007 looping thrgouh the sentences
foreach ($feedbacks as $input) {
// 008 calling the pipeline function
$out = $pipe($input);
// 009 using the output of the pipeline function
$icon =
$out['label'] === 'POSITIVE'
? ($out['score'] > 0.9997
? '🤩🤩🤩'
: '😀😀 ')
: '🙁 ';
echo $icon.' '.$input.PHP_EOL;
}
echo PHP_EOL;
001 从 vendor 中引入 autoload 文件;
002 导入 Transformers 类;
003 导入 pipeline 函数;
004 初始化 Transformers 类,并设置模型的缓存目录;
005 初始化用于 sentiment-analysis 的 pipeline;
006 设置要分析的句子列表;
007 遍历这些句子;
008 调用 pipeline 函数;
009 使用 pipeline 函数的输出。
在这个示例中,我们通过下面这行代码使用情感分析功能:
$pipe = pipeline('sentiment-analysis');
pipeline() 函数有一个必填参数,即 task,用来定义要使用的功能:
feature-extraction:特征提取是 Machine Learning 和信号处理中的一个过程,它将原始数据转换为一组有意义的特征,供 Machine Learning 算法作为输入使用。这些特征代表数据中与当前任务相关的特定属性或模式。特征提取有助于降低数据维度、聚焦最重要的信息,并通过提供更具相关性和区分度的信息来提升 Machine Learning 算法的性能。这个过程通常用于图像识别、自然语言处理和音频信号处理等任务。
sentiment-analysis:情感分析是判断文本所表达的情绪倾向,并对其进行分类的过程。
ner:NER 是 Named Entity Recognition(命名实体识别)的缩写。它是一项自然语言处理任务,负责识别文本中的命名实体,并将其划分到预先定义的类别中,例如人名、组织名称、地点、时间表达式、数量、货币金额和百分比等。
question-answering:Machine Learning 中的问答任务,是指根据给定的上下文或知识库,针对用户提出的自然语言问题自动生成准确回答。
fill-mask:Fill-mask 是一种自然语言处理任务,模型需要预测句子中被遮盖的单词或短语。它通常用于 BERT 等基于 transformer 的语言模型,以完成文本补全或填充缺失信息等任务。
summarization:摘要生成是将较长文本压缩为较短版本,同时保留其关键信息和含义的过程。
translation:指将文本从一种语言(xx)转换为另一种语言(yy)的过程。
text-generation:文本生成是使用 Machine Learning 模型或算法,自动生成连贯且符合上下文的文本内容的过程。
这意味着你可以从上面提到的任务中选择一个,Transformers PHP 会根据所选任务,在本地下载并缓存适用的模型。模型下载完成后——它会被保存到通过 Transformer 类的 setCacheDir() 方法定义的缓存目录中——即使没有网络连接,也不需要调用任何 API,你仍然可以多次执行脚本。
除了强大的文本处理能力,Transformers PHP 还提供了简单直接的接口来使用预训练模型,从而简化 image-to-text 处理。只需编写几行代码,就可以生成文本描述。下面来看一个基本示例:
<?php
// 001 requiring the autoload file from vendor
require './vendor/autoload.php';
// 002 importing the Transformers class
use Codewithkyrian\Transformers\Transformers;
// 003 importing the pipeline function
use function Codewithkyrian\Transformers\Pipelines\pipeline;
// 004 initializing the Transformers class setting the cache directory for models
Transformers::setup()->setCacheDir('./models')->apply();
// 005 initializing a pipeline for image-to-text
$pipeline = pipeline('image-to-text');
// 006 executing the image to text task
$result = $pipeline(
'https://a.storyblok.com/f/165058/4758x3172/7b1727dcf9/tiffany-nutt-0clfreinppm-unsplash.jpg/m/800x1400:4010x3010'
);
echo $result[0]["generated_text"] . PHP_EOL;
运行这个示例会得到以下输出:
a bicycle is parked on a sidewalk near a wall
这类功能非常实用:它可以为视障用户生成图像的文本描述,也可以在内容生成场景中创建图片说明,还能在网站开发中帮助提升 SEO。
因此,借助 Transformers PHP,你既可以有效管理和生成文本内容,也可以处理图像,使其成为适用于多种应用场景的多功能工具。
Transformers PHP:一个面向 PHP 开发者的工具包,可为 PHP 项目添加 Machine Learning 能力;
ONNX Runtime with PHP:在 PHP 中运行 ONNX 模型;
ONNX Runtime:跨平台、高性能的 ML inference 与训练加速器;
一篇介绍如何使用 TransformersPHP 生成图像 alt 文本的文章:https://dev.to/robertobutti/how-to-auto-generate-the-image-alt-text-using-ai-and-transformers-php-3onc
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。