All Products
Search
Document Center

Platform For AI:Kembangkan prosesor kustom menggunakan Java

Last Updated:Apr 02, 2026

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

Siklus hidup prosesor

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

FaseMetodeKapan dipanggilWajib
InitializeConstructorSekali saat startup layananYa
LoadLoad()Sekali setelah konstruksiYa
InferProcess(byte[] input)Sekali per permintaan masukYa
Testmain(String[] args)Hanya di mesin lokalTidak

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 diberikan 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 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 diberikan 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 deployment ke kluster. Antarmuka lokal sepenuhnya kompatibel dengan lingkungan kluster online, sehingga Anda dapat memvalidasi prosesor sebelum deployment.

Catatan

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

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Docker terinstal di mesin tempat Anda menjalankan EASCMD.

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

  • Klien EASCMD telah diunduh sesuai sistem operasi Anda:

    PlatformTautan unduh
    Windows 64-bithttp://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmdwin64
    Linux 32-bithttp://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmd32
    Linux 64-bithttp://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmd64
    macOS 64-bithttp://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:

    ParameterDeskripsi
    model_pathURL HTTP atau path lokal ke file model. Path lokal hanya didukung dalam mode standalone.
    processor_pathURL HTTP atau path lokal ke paket prosesor. Paket tersebut berupa file .tar.gz yang berisi file JAR hasil kompilasi. Path lokal hanya didukung dalam mode standalone.
    processor_mainclassNama lengkap kelas yang mengimplementasikan Load() dan Process().
    processor_typeAtur ke java untuk prosesor Java.
    metadata.resourceID kelompok sumber daya untuk kelompok sumber daya khusus.
    metadata.instanceJumlah instans layanan.
    metadata.cpuJumlah core CPU per instans.
    metadata.memoryMemori per instans, dalam MB.
  2. Jalankan pengujian standalone:

    sudo eascmd test service.json