All Products
Search
Document Center

Platform For AI:Kembangkan prosesor kustom menggunakan Java

Last Updated:Aug 29, 2026

Jika prosesor bawaan Elastic Algorithm Service (EAS) tidak memenuhi kebutuhan model Anda, Anda dapat mengimplementasikan prosesor Java kustom untuk mengontrol logika inisialisasi dan inferensi secara langsung.

Siklus hidup prosesor

Prosesor Java merupakan satu kelas dengan tiga fase siklus hidup yang dipanggil EAS secara berurutan:

Fase Metode Kapan dipanggil Wajib
Initialize Constructor Sekali saat startup layanan Ya
Load Load() Sekali setelah konstruksi Ya
Infer Process(byte[] input) Sekali per permintaan masuk Ya
Test main(String[] args) Hanya di mesin lokal Tidak

EAS memanggil fase-fase tersebut dalam urutan berikut:

Constructor → Load() → Process() [per permintaan] → ...
  • Constructor: menerima path file model (modelEntry) dan string JSON konfigurasi layanan (modelConfig) yang diteruskan saat deployment

  • Load(): memuat model ke dalam memori menggunakan path yang diterima oleh constructor

  • Process(byte[] input): menjalankan inferensi pada setiap permintaan dan mengembalikan hasilnya dalam bentuk byte

Implementasikan kelas prosesor

Definisikan satu kelas dalam package com.alibaba.eas. Constructor, Load(), dan Process() wajib diimplementasikan. Metode main() bersifat opsional dan berguna untuk pengujian unit secara lokal tanpa melakukan deployment ke EAS.

package com.alibaba.eas;
import java.util.*;

public class TestProcessor {

    // Dipanggil sekali saat startup.
    // modelEntry: path ke file model (lokal atau URL HTTP).
    // modelConfig: string JSON konfigurasi layanan yang diteruskan saat deployment.
    public TestProcessor(String modelEntry, String modelConfig) {
    }

    // Muat model ke dalam memori. Dipanggil sekali setelah konstruksi.
    public void Load() {
    }

    // Jalankan inferensi. Menerima byte mentah; mengembalikan byte mentah.
    // Gunakan byte[] alih-alih String untuk menghindari masalah pengkodean karakter.
    public byte[] Process(byte[] input) {
    }

    // Opsional: uji kelas secara lokal tanpa melakukan deployment ke EAS.
    public static void main(String[] args) {
    }
}

Tipe input dan output yang didukung

Process() mendukung byte[] dan String. Gunakan byte[] untuk menghindari masalah pengkodean karakter.

Penanganan exception

Jika Process() melemparkan exception yang tidak ditangkap, EAS akan menangkapnya dan mengembalikan pesan exception tersebut ke klien dengan kode status HTTP 400.

Untuk mengembalikan pesan error kustom, tangkap exception di dalam Process() dan lemparkan RuntimeException dengan pesan yang ingin diterima klien:

try {
    // logika inferensi
} catch (com.alibaba.fastjson.JSONException e) {
    throw new RuntimeException("format json tidak valid, " + e.getMessage());
}

Debug secara lokal dengan mode standalone

Mode standalone memungkinkan Anda mengembangkan dan menguji prosesor di mesin lokal tanpa melakukan deployment ke kluster. Antarmuka lokal sepenuhnya kompatibel dengan lingkungan kluster online, sehingga Anda dapat memvalidasi prosesor sebelum melakukan deployment.

Catatan

Mode standalone memerlukan Docker. Jika model Anda memerlukan GPU, instal juga CUDA dan Nvidia-Docker di mesin lokal.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Docker yang terinstal di mesin tempat Anda menjalankan EASCMD

  • (Untuk model GPU) CUDA dan Nvidia-Docker yang terinstal

  • Klien EASCMD yang telah diunduh sesuai sistem operasi Anda:

    Platform Tautan unduh
    Windows 64-bit http://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmdwin64
    Linux 32-bit http://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmd32
    Linux 64-bit http://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmd64
    macOS 64-bit http://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmdmac64

Jalankan debugging standalone

  1. Buat file konfigurasi layanan (misalnya, service.json):

    {
      "name": "diy_test",
      "generate_token": "true",
      "model_path": "http://examplebucket.oss-cn-hangzhou-zmf.aliyuncs.com/scorecard.pmml",
      "processor_path": "./diy_processor_release.tar.gz",
      "processor_mainclass": "com.alibaba.eas.TestProcessor",
      "processor_type": "java",
      "metadata": {
        "resource": "eas-r-9lkbl2jvdm0puv****",
        "instance": 1,
        "cpu": 1,
        "memory": 2000
      }
    }

    Parameter utama:

    Parameter Deskripsi
    model_path URL HTTP atau path lokal ke file model. Path lokal hanya didukung dalam mode standalone.
    processor_path URL HTTP atau path lokal ke paket prosesor. Paket tersebut berupa file .tar.gz yang berisi file JAR terkompilasi. Path lokal hanya didukung dalam mode standalone.
    processor_mainclass Nama lengkap kelas yang mengimplementasikan Load() dan Process().
    processor_type Atur ke java untuk prosesor Java.
    metadata.resource ID kelompok sumber daya untuk kelompok sumber daya khusus.
    metadata.instance Jumlah instans layanan.
    metadata.cpu Jumlah core CPU per instans.
    metadata.memory Memori per instans, dalam MB.
  2. Jalankan pengujian standalone:

    sudo eascmd test service.json