Transformers PHP

如果你对机器学习和 PHP 感兴趣,Transformers PHP 将成为改变游戏规则的产品,在 PHP 环境中提供强大的文本处理功能。

Transformers PHP 通过利用预先训练的转换器模型简化了文本和图像处理任务。它支持无缝集成文本的 NLP 功能,并支持 PHP 应用程序中的分类和对象检测等图像相关任务。

Transformers PHP 拥有一系列强大的功能,旨在增强 PHP 环境中的文本和图像处理能力:

  • Transformer 架构:受 Vaswani 等人的“注意力就是你所需要的一切”的启发,Transformers PHP 利用自我注意力机制实现高效的文本处理。
  • 自然语言处理应用:从翻译到情感分析,Transformers PHP 可轻松满足各种 NLP 任务。
  • 图像应用:Transformers PHP 支持 PHP 应用程序中的分类和对象检测等图像相关任务。
  • 模型可访问性:在 Hugging Face 等平台上访问大量预训练模型,无需进行大量训练即可简化开发。
  • 架构多样性:从 BERT、GPT 或 T5 等架构中进行选择,每个架构都针对特定任务量身定制,确保最佳性能。Transformers PHP 弥合了 PHP 与高级 NLP 之间的差距,为开发人员提供了实施 AI 驱动解决方案的无与伦比的机会。

1、Transformers PHP 和 ONNX 运行时

Transformers PHP 的核心在于它与 ONNX 运行时的集成,ONNX 运行时是一种高性能 AI 引擎,旨在高效执行深度学习模型。利用外部函数接口 (FFI) 机制,Transformers PHP 无缝连接 ONNX 运行时,可在 PHP 环境中以闪电般的速度执行 Transformer 模型。

那么,ONNX 运行时到底是什么?ONNX(开放神经网络交换)的核心是一种表示深度学习模型的开放格式,可促进各种框架之间的互操作性。 ONNX Runtime 由 Microsoft 开发,是一款专为 ONNX 模型构建的跨平台高性能引擎。它为跨不同硬件平台(包括 CPU、GPU 和专用加速器)高效执行神经网络模型提供了强大的支持。

通过 FFI 机制将 ONNX Runtime 集成到 Transformers PHP 中带来了几个关键优势:

  • 性能:ONNX Runtime 针对速度和效率进行了优化,确保在 PHP 应用程序中快速推理 Transformer 模型。这意味着更快的响应时间和更高的整体性能,这对于实时或高吞吐量应用程序至关重要。
  • 硬件加速:利用 ONNX Runtime 的功能,Transformers PHP 可以利用现代 CPU 和 GPU 上可用的硬件加速功能。这允许并行计算和优化资源利用率,从而进一步提高性能。
  • 互操作性:通过遵循 ONNX 格式,ONNX Runtime 确保与各种深度学习框架兼容,包括 PyTorch 和 TensorFlow。这种互操作性有助于将在不同框架中训练的 Transformer 模型无缝集成到 Transformers PHP 应用程序中。
  • 可扩展性:ONNX Runtime 旨在跨各种硬件配置高效扩展,从单个 CPU 到大型分布式系统。这种可扩展性确保 Transformers PHP 可以处理不同的工作负载并适应不断变化的性能要求。

总之,通过 FFI 机制将 ONNX Runtime 与 Transformers PHP 集成为 PHP 生态系统中的 AI 驱动应用程序打开了无限可能。开发人员可以放心地利用 Transformer 模型的强大功能和多功能性,因为他们知道它们由能够提供卓越结果的高性能 AI 引擎支持。

2、开始使用 Transformers PHP

首先创建一个新目录并进入新的空目录:

mkdir example-app
cd example-app

你可以安装这个包:

composer require codewithkyrian/transformers

在执行命令期间,系统会询问你是否启用并运行 ankane/onnxruntime 包的 composer 插件,以下载 PHP 的 ONNXRuntime 二进制文件。我的建议是回答 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 运行时,因此只需运行 composer require codewithkyrian/transformers

最后的 ONNX Runtime Downloader 插件非常简单,它会自动触发 ONNX Runtime 的下载,这要归功于 ONNX Runtime PHP 包

3、第一个例子:情绪分析

安装包后,你就可以开始使用它了。你可以创建一个新的 PHP 文件,其中包含自动加载文件,实例化 Transformers 类,然后使用所需的功能初始化管道。

<?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 需要供应商提供的自动加载文件;
  • 002 导入 Transformers 类;
  • 003 导入管道函数;
  • 004 初始化 Transformers 类,设置模型的缓存目录;
  • 005 初始化情绪分析管道;
  • 006 设置要分析的句子列表;
  • 007 循环遍历句子;
  • 008 调用管道函数;
  • 009 使用管道函数的输出。

在示例中,我们使用了情绪分析,这要归功于以下行:

$pipe = pipeline('sentiment-analysis');

pipeline() 函数有一个强制参数,即定义将使用哪些功能的任务:

  • 特征提取:特征提取是机器学习和信号处理中的一个过程,其中原始数据被转换成一组有意义的特征,可用作机器学习算法的输入。这些特征是数据中与当前任务相关的特定特征或模式的表示。特征提取有助于降低数据的维度,专注于最重要的方面,并通过为机器学习算法提供更相关和更具区分性的信息来提高其性能。此过程通常用于图像识别、自然语言处理和音频信号处理等任务。
  • 情绪分析:情绪分析是确定和分类一段文本中表达的情绪基调或情绪的过程。
  • ner:NER 代表命名实体识别,这是一种自然语言处理任务,涉及识别文本中的命名实体并将其归类为预定义类别,例如人名、组织、地点、时间表达、数量、货币价值、百分比等。
  • 问答:机器学习中的问答是根据给定上下文或知识库自动生成对用户提出的自然语言问题的准确回答的任务。
  • 填充掩码:填充掩码是一种自然语言处理任务,其中训练模型来预测句子中被掩码的单词或短语,通常用于基于转换器的语言模型(如 BERT)中,用于文本完成或填写缺失信息等任务。
  • 摘要:摘要是将较长的文本压缩为较短版本的过程,同时保留其关键信息和含义。
  • 翻译:指将文本从一种语言(xx)转换为另一种语言(yy)的过程。
  • 文本生成:文本生成是使用机器学习模型或算法自动生成连贯且上下文相关的文本内容的过程。

这意味着你可以选择上述任务之一,Transformers PHP 将根据所选任务在本地下载(并缓存)相应的模型。一旦模型下载完毕(下载到通过 Transformer 类的 setCacheDir() 方法定义的缓存目录),你就可以多次执行该脚本,而无需互联网连接,也无需调用任何 API。

4、另一个示例:图像生成文本功能

除了强大的文本处理功能外,Transformers PHP 还通过提供一个简单的界面来利用预先训练的模型,从而简化了图像转文本处理。

只需几行代码,就可以生成文本描述。让我们看一个基本示例:

<?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,你可以有效地管理和生成文本内容以及处理图像,使其成为适用于各种应用程序的多功能工具。


原文链接:Machine Learning with PHP

BimAnt翻译整理,转载请标明出处