Nếu bạn quan tâm đến Học máy và PHP, Transformers PHP cung cấp khả năng xử lý văn bản mạnh mẽ trong môi trường PHP.

Transformers PHP giúp đơn giản hóa cả hai nhiệm vụ xử lý văn bản và hình ảnh bằng cách sử dụng các mô hình transformer được huấn luyện trước. Nó cho phép tích hợp mượt mà các chức năng xử lý ngôn ngữ tự nhiên (NLP) cho văn bản và hỗ trợ các nhiệm vụ liên quan đến hình ảnh như phân loại và phát hiện đối tượng trong các ứng dụng PHP.

Cover image for Machine Learning with PHP

Transformers PHP là một dự án mã nguồn mở. Bạn có thể tìm thêm thông tin và mã nguồn trên kho lưu trữ GitHub.

Transformers PHP có một loạt các tính năng mạnh mẽ được thiết kế để nâng cao khả năng xử lý văn bản và hình ảnh trong môi trường PHP:

  1. Kiến trúc transformer: Lấy cảm hứng từ công trình "Attention is All You Need" của Vaswani và đồng nghiệp, Transformers PHP tận dụng các cơ chế tự chú ý để xử lý văn bản một cách hiệu quả.
  2. Ứng dụng xử lý ngôn ngữ tự nhiên: Từ dịch đến phân tích cảm xúc, Transformers PHP phục vụ cho các nhiệm vụ NLP đa dạng một cách dễ dàng.
  3. Ứng dụng hình ảnh: Transformers PHP hỗ trợ các nhiệm vụ liên quan đến hình ảnh như phân loại và phát hiện đối tượng trong các ứng dụng PHP.
  4. Khả năng truy cập mô hình: Truy cập vào một loạt các mô hình được huấn luyện trước trên các nền tảng như Hugging Face, đơn giản hóa quá trình phát triển mà không cần đào tạo mở rộng.
  5. Đa dạng kiến trúc: Lựa chọn từ các kiến trúc như BERT, GPT, hoặc T5, mỗi kiến trúc được tinh chỉnh cho các nhiệm vụ cụ thể, đảm bảo hiệu suất tối ưu. Transformers PHP nối cầu giữa PHP và NLP tiên tiến, mang lại cho các nhà phát triển cơ hội không giới hạn để triển khai các giải pháp dựa trên trí tuệ nhân tạo.

 

Transformers PHP và ONNX Runtime Động cơ chính của Transformers PHP nằm ở việc tích hợp với ONNX Runtime, một động cơ trí tuệ nhân tạo hiệu suất cao được thiết kế để thực thi các mô hình học sâu một cách hiệu quả. Sử dụng cơ chế Foreign Function Interface (FFI), Transformers PHP liên kết mạch lạc với ONNX Runtime, cho phép thực thi nhanh chóng của các mô hình biến đổi trong môi trường PHP.

Vậy, ONNX Runtime là gì chính xác? Ở tận gốc, ONNX (Open Neural Network Exchange) là một định dạng mở để đại diện cho các mô hình học sâu, tạo điều kiện cho tính tương tác giữa các framework khác nhau. ONNX Runtime, được phát triển bởi Microsoft, là một động cơ chạy chéo nền tảng, hiệu suất cao được xây dựng đặc biệt cho các mô hình ONNX. Nó cung cấp hỗ trợ mạnh mẽ cho việc thực thi các mô hình mạng nơ-ron một cách hiệu quả trên các nền tảng phần cứng khác nhau, bao gồm CPU, GPU và các bộ gia tốc chuyên biệt.

Việc tích hợp ONNX Runtime vào Transformers PHP thông qua cơ chế FFI mang lại một số lợi ích chính:

  1. Hiệu suất: ONNX Runtime được tối ưu hóa cho tốc độ và hiệu suất, đảm bảo sự suy luận nhanh chóng của các mô hình biến đổi trong các ứng dụng PHP. Điều này dịch thành thời gian phản hồi nhanh hơn và hiệu suất tổng thể cải thiện, rất quan trọng cho các ứng dụng thời gian thực hoặc có lưu lượng lớn.
  2. Tăng tốc phần cứng: Tận dụng các tính năng tăng tốc phần cứng có sẵn trên các CPU và GPU hiện đại, Transformers PHP có thể tận dụng các tính năng tăng tốc phần cứng của ONNX Runtime. Điều này cho phép tính toán song song và tận dụng tài nguyên được tối ưu hóa, tăng cường hiệu suất.
  3. Tương tác: Bằng cách tuân thủ định dạng ONNX, ONNX Runtime đảm bảo sự tương thích với một loạt các framework học sâu, bao gồm PyTorch và TensorFlow. Tính tương tác này giúp tích hợp mô hình biến đổi được đào tạo trong các framework khác nhau một cách mạch lạc vào các ứng dụng Transformers PHP.
  4. Khả năng mở rộng: ONNX Runtime được thiết kế để mở rộng mạnh mẽ trên các cấu hình phần cứng đa dạng, từ CPU đơn đến hệ thống phân phối quy mô lớn. Sự mở rộng này đảm bảo rằng Transformers PHP có thể xử lý các khối công việc đa dạng và thích ứng với yêu cầu hiệu suất đang phát triển.

Tóm lại, việc tích hợp ONNX Runtime vào Transformers PHP thông qua cơ chế FFI mở ra một thế giới các ứng dụng dựa trên trí tuệ nhân tạo trong hệ sinh thái PHP. Các nhà phát triển có thể tận dụng sức mạnh và tính linh hoạt của các mô hình biến đổi một cách tự tin, biết rằng chúng được hỗ trợ bởi một động cơ trí tuệ nhân tạo hiệu suất cao có khả năng mang lại kết quả xuất sắc.

Bắt đầu sử dụng Transformers PHP Trước khi bắt đầu sử dụng Transformers PHP, tôi muốn yêu cầu bạn "Star" (đánh dấu sao) kho lưu trữ GitHub và theo dõi tác giả của thư viện tuyệt vời này là Kyrian.

Bạn có thể bắt đầu tạo một thư mục mới và đi vào thư mục mới trống.

mkdir example-app
cd example-app

 

Bạn có thể cài đặt gói:

composer require codewithkyrian/transformers

Trong quá trình thực thi lệnh, bạn sẽ được hỏi có muốn kích hoạt và chạy plugin composer cho gói ankane/onnxruntime để tải các tệp nhị phân ONNXRuntime cho PHP hay không. Đề xuất của tôi là bạn trả lời y (có):

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,?]

Như vậy, composer sẽ tải xuống và cài đặt tất cả các phụ thuộc trong thư mục vendor/ và sẽ tự động tải xuống ONNX runtime, vì vậy bạn chỉ cần chạy composer require codewithkyrian/transformers.

Trình cài đặt ONNX Runtime Downloader ở cuối, rất đơn giản, nó tự động kích hoạt việc tải xuống ONNX Runtime nhờ vào gói ONNX Runtime PHP.

 

Ví dụ đầu tiên: phân tích cảm xúc

Sau khi bạn đã cài đặt gói, bạn có thể bắt đầu sử dụng nó. Bạn có thể tạo một tập tin PHP mới trong đó bạn bao gồm tập tin autoload, khởi tạo lớp Transformers, và sau đó khởi tạo pipeline với chức năng mong muốn.

<?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;

Executig the PHP script with Transformers PHP for sentiment analysis

Trong đoạn mã:

001 yêu cầu tệp autoload từ thư mục vendor;

002 nhập lớp Transformers;

003 nhập hàm pipeline;

004 khởi tạo lớp Transformers, thiết lập thư mục cache cho các mô hình;

005 khởi tạo một pipeline cho phân tích cảm xúc;

006 thiết lập danh sách các câu để phân tích;

007 lặp qua các câu;

008 gọi hàm pipeline;

009 sử dụng kết quả của hàm pipeline.

Trong ví dụ này, chúng ta đang sử dụng phân tích cảm xúc nhờ vào dòng này:

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

Hàm pipeline() có một tham số bắt buộc là nhiệm vụ xác định chức năng sẽ được sử dụng:

  • feature-extraction: trích xuất đặc trưng là quá trình trong máy học và xử lý tín hiệu, trong đó dữ liệu thô được biến đổi thành một tập hợp các đặc trưng có ý nghĩa có thể được sử dụng như đầu vào cho một thuật toán máy học. Các đặc trưng này là biểu diễn của các đặc điểm cụ thể hoặc mẫu hiện diện trong dữ liệu có ý nghĩa cho nhiệm vụ đang thực hiện. Trích xuất đặc trưng giúp giảm số chiều của dữ liệu, tập trung vào các khía cạnh quan trọng nhất và cải thiện hiệu suất của các thuật toán máy học bằng cách cung cấp cho chúng thông tin phù hợp và phân biệt hơn. Quá trình này thường được sử dụng trong các nhiệm vụ như nhận dạng hình ảnh, xử lý ngôn ngữ tự nhiên và xử lý tín hiệu âm thanh.

  • sentiment-analysis: phân tích cảm xúc là quá trình xác định và phân loại tông màu cảm xúc được diễn đạt trong một đoạn văn bản.

  • ner: NER là viết tắt của Named Entity Recognition, là một nhiệm vụ xử lý ngôn ngữ tự nhiên mà liên quan đến việc xác định và phân loại các thực thể được đặt tên trong văn bản vào các danh mục đã được xác định trước như tên của cá nhân, tổ chức, địa điểm, thời gian, số lượng, giá trị tiền tệ, phần trăm, vv.

  • question-answering: trả lời câu hỏi trong máy học là nhiệm vụ tạo ra các câu trả lời chính xác tự động cho các câu hỏi bằng ngôn ngữ tự nhiên được đặt ra bởi người dùng dựa trên một ngữ cảnh hoặc cơ sở kiến thức đã cho.

  • fill-mask: Fill-mask là một nhiệm vụ xử lý ngôn ngữ tự nhiên nơi mà một mô hình được đào tạo để dự đoán một từ hoặc cụm từ bị lấp đầy trong một câu, thường được sử dụng trong các mô hình ngôn ngữ dựa trên transformer như BERT cho các nhiệm vụ như hoàn thành văn bản hoặc điền thông tin bị thiếu.

  • summarization: tóm tắt là quá trình rút gọn một đoạn văn bản dài thành một phiên bản ngắn hơn nhưng vẫn giữ lại thông tin và ý nghĩa chính của nó.

  • translation: đề cập đến quá trình chuyển đổi văn bản từ một ngôn ngữ (xx) sang một ngôn ngữ khác (yy).

  • text-generation: tạo văn bản là quá trình tự động tạo ra nội dung văn bản có mạch lạc và phản ánh ngữ cảnh bằng cách sử dụng các mô hình hoặc thuật toán máy học.

Điều này có nghĩa là bạn có thể chọn một trong các nhiệm vụ được đề cập ở trên, và Transformers PHP sẽ tải xuống (và lưu vào bộ nhớ đệm) mô hình phù hợp cục bộ (theo nhiệm vụ được chọn). Khi mô hình đã được tải xuống (vào thư mục cache được xác định qua phương thức setCacheDir() của lớp Transformer), bạn có thể thực thi kịch bản nhiều lần mà không cần kết nối internet và không cần gọi bất kỳ API nào.

Một ví dụ khác: Chức năng Chuyển ảnh thành Văn bản

Ngoài khả năng xử lý văn bản mạnh mẽ, Transformers PHP đơn giản hóa việc chuyển ảnh thành văn bản bằng cách cung cấp một giao diện dễ hiểu để sử dụng các mô hình được đào tạo trước. Chỉ cần vài dòng mã, bạn có thể tạo ra các mô tả văn bản. Hãy xem xét một ví dụ cơ bản:

<?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;

Với ví dụ này, đầu ra là:

a bicycle is parked on a sidewalk near a wall

Loại tính năng này rất hữu ích để tạo ra các mô tả văn bản của hình ảnh cho người dùng mắc chứng khuyết tật về thị giác hoặc để tạo nội dung cho việc tạo chú thích và trong việc phát triển trang web để tăng cường SEO.

Vì vậy, với Transformers PHP, bạn có thể quản lý và tạo ra nội dung văn bản một cách hiệu quả cũng như xử lý hình ảnh, biến nó thành một công cụ linh hoạt cho các ứng dụng khác nhau.

Tham khảo Transformers PHP: PHP là một bộ công cụ dành cho các nhà phát triển PHP để thêm khả năng học máy vào dự án PHP của bạn;

ONNX Runtime with PHP: Chạy các mô hình ONNX trong PHP ONNX Runtime:

ONNX Runtime: bộ tăng tốc huấn luyện và suy luận học sâu chạy trên nhiều nền tảng, hiệu suất cao.