全部产品
Search
文档中心

Platform For AI:Pemanasan layanan model

更新时间:Oct 29, 2025

Elastic Algorithm Service (EAS) dari Platform for AI (PAI) menyediakan fitur pemanasan model untuk mengurangi waktu yang diperlukan memproses permintaan pertama ke layanan model online. Fitur ini memanaskan model sebelum layanan dipublikasikan secara online, memastikan layanan berfungsi optimal segera setelah live. Topik ini menjelaskan cara menggunakan fitur pemanasan model.

Informasi latar belakang

Saat mengirimkan permintaan pertama ke model, runtime yang berbeda mungkin melakukan proses inisialisasi, yang meningkatkan latensi dan berpotensi menyebabkan timeout. Sebagai contoh, cold start mesin virtual Java (JVM) pada Java Processor dapat memperlambat permintaan awal. Demikian pula, beberapa model TensorFlow memerlukan pemanggilan file atau parameter terkait model ke dalam memori, yang dapat memakan waktu dan menghasilkan waktu respons (RT) tinggi untuk permintaan awal, berpotensi menyebabkan kesalahan 408 atau 450. Untuk mengatasi hal ini, EAS menyediakan fitur pemanasan model yang memungkinkan layanan dimuat sebelum live, memastikan kinerja optimal setelah penyebaran.

Mesin layanan EAS mengirimkan permintaan pemanasan kepada dirinya sendiri sebelum layanan model live. Meskipun permintaan awal mungkin membutuhkan waktu lebih lama, permintaan berikutnya dapat diselesaikan dengan cepat.

Untuk menggunakan fitur pemanasan model EAS, buat file permintaan pemanasan terlebih dahulu. Kemudian, tentukan file permintaan ini dalam file JSON yang digunakan untuk menerapkan layanan model. Selama penyebaran atau pembaruan layanan, mesin layanan EAS akan mengirimkan permintaan pemanasan. Layanan dianggap sepenuhnya aktif hanya setelah permintaan ini berhasil diproses.

Gunakan fitur pemanasan model

Untuk membuat file permintaan pemanasan, buat file berdasarkan permintaan yang dapat dikirim setelah layanan model dipublikasikan secara online. File ini dibaca selama proses pemanasan. Anda dapat menggunakan SDK EAS untuk membuat file permintaan. Untuk informasi lebih lanjut, lihat SDKs. Contoh berikut menjelaskan cara menggunakan fitur pemanasan model untuk memanaskan model TensorFlow.

  1. Buat file permintaan pemanasan.

    Dalam contoh berikut, EAS SDK untuk Python dan Java digunakan untuk membuat file permintaan untuk layanan model TensorFlow. Untuk jenis model lainnya, gunakan metode serupa. Untuk layanan model yang menggunakan string sebagai input, simpan permintaan dalam file TXT sebagai string. Setiap file TXT dapat berisi beberapa permintaan, dengan setiap permintaan menempati satu baris. EAS secara otomatis mengidentifikasi format file dan mengirimkan permintaan pemanasan sesuai.

    Penting

    Input dan output permintaan pemanasan untuk model TensorFlow harus sama dengan input dan output permintaan yang dikirim setelah layanan model dipublikasikan secara online.

    Kode sampel berikut menunjukkan cara menggunakan SDK untuk membuat file permintaan untuk layanan model TensorFlow.

    • Use the SDK for Python

      #!/usr/bin/env python
      
      from eas_prediction import PredictClient
      from eas_prediction import StringRequest
      from eas_prediction import TFRequest
      
      if __name__ == '__main__':
              # Permintaan pemanasan sampel. Buat permintaan pemanasan berdasarkan kebutuhan aktual Anda. Input dan output dari permintaan yang digunakan untuk pemanasan harus sama dengan permintaan yang dikirim setelah layanan model dipublikasikan secara online.
              req = TFRequest('serving_default')
              req.add_feed('sentence1', [200, 15], TFRequest.DT_INT32, [1] * 200 * 15)
              req.add_feed('sentence2', [200, 15], TFRequest.DT_INT32, [1] * 200 * 15)
              req.add_feed('y', [200, 2], TFRequest.DT_INT32, [2] * 200 * 2)
              req.add_feed('keep_rate', [], TFRequest.DT_FLOAT, [0.2])
              req.add_feed('images', [1, 784], TFRequest.DT_FLOAT, [1] * 784)
              req.add_fetch('sorted_labels')
              req.add_fetch('sorted_probs')
              # print(req.request_data) # Tampilkan data permintaan.
              with open("warm_up.bin", "wb") as fw :
                  fw.write(req.to_string())
              # Simpan file warm_up.bin sebagai file permintaan pemanasan.

    • Use the SDK for Java

      Untuk menggunakan EAS SDK untuk Java dalam proyek Maven, tambahkan dependensi eas-sdk ke <dependencies> dalam file pom.xml. Versi terbaru tersedia di repositori Maven. Kode sampel:

      <dependency>
        <groupId>com.aliyun.openservices.eas</groupId>
        <artifactId>eas-sdk</artifactId>
        <version>2.0.13</version>
      </dependency>

      Kode sampel SDK untuk Java:

      import java.io.File;
      import com.aliyun.openservices.eas.predict.request.TFDataType;
      import com.aliyun.openservices.eas.predict.request.TFRequest;
      import org.apache.commons.io.FileUtils;
      
      public class TestTf {
      
          public static void main(String[] args) throws Exception{
              // Permintaan pemanasan sampel. Buat permintaan pemanasan berdasarkan kebutuhan aktual Anda.
              TFRequest request = new TFRequest();
              request.setSignatureName("predict_images");
              float[] content = new float[784];
              for (int i = 0; i < content.length; i++){
                content[i] = (float)0.0;
              }
              request.addFeed("images", TFDataType.DT_FLOAT, new long[]{1, 784}, content);
              request.addFetch("scores");
              
              try {
                  // Buat file permintaan. Jika tidak ada file yang ada, buat file baru.
                  File writename = new File("/path/to/warm_up1.bin");
                  FileUtils.writeByteArrayToFile(writename, request.getRequest().toByteArray());
              } catch (Exception ex) {
              }
          }
      }
  2. Verifikasi file permintaan.

    Anda dapat menggunakan salah satu metode berikut untuk memverifikasi file permintaan:

    • Metode 1: Kirim permintaan layanan untuk verifikasi

      Jalankan perintah berikut untuk mengirim permintaan ke layanan model: Jika konten yang dikembalikan terlalu besar dan tidak dapat dicetak di terminal, Anda dapat menambahkan bidang --output <filePath> untuk menyimpan hasil dalam file.

      curl  --data-binary @"</path/to/warmup.bin>" -H 'Authorization: <yourToken>' <serviceAddress>

      Ganti parameter berikut dengan nilai aktual:

      • </path/to/warmup.bin>: jalur file permintaan pemanasan yang dihasilkan pada langkah sebelumnya.

      • <yourToken>: token yang digunakan untuk mengakses layanan model.

      • <serviceAddress>: titik akhir layanan model.

    • Metode 2: Parsing file permintaan untuk verifikasi

      • Gunakan Python

        from eas_prediction import TFRequest
        
        req = TFRequest()
        with open('/path/to/warm_up1.bin', 'rb') as wm:
            req.request_data.ParseFromString(wm.read())
            print(req.request_data)
        
      • Gunakan Java

        import com.aliyun.openservices.eas.predict.proto.PredictProtos;
        import org.apache.commons.io.FileUtils;
        import java.io.File;
        
        public class Test {
        
            public static void main(String[] args) throws Exception {
        
                File refile = new File("/path/to/warm_up1.bin");
                byte[] data = FileUtils.readFileToByteArray(refile);
                PredictProtos.PredictRequest pb = PredictProtos.PredictRequest.parseFrom(data);
                System.out.println(pb);
            }
        }
  3. Konfigurasikan layanan model.

    1. Unggah file permintaan pemanasan yang dihasilkan ke OSS.

    2. Konfigurasikan parameter layanan model.

      Dalam file deskripsi model dalam format JSON, konfigurasikan parameter layanan model.

      {
          "name":"warm_up_demo",
          "model_path":"oss://path/to/model", 
          "warm_up_data_path":"oss://path/to/warm_up_test.bin", // Jalur file permintaan pemanasan di OSS.
          "processor":"tensorflow_cpu_1.15",
          "metadata":{
              "cpu":2,
              "instance":1,
              "rpc": {
                  "warm_up_count": 5, // Jumlah kali setiap permintaan pemanasan dikirim. Jika Anda tidak menentukan nilai untuk parameter ini, nilai default adalah 5.
              }
          }
      }

      Parameter pemanasan berikut digunakan. Untuk informasi tentang parameter lainnya, lihat Parameter untuk Penyebaran JSON.

      • warm_up_data_path: jalur file permintaan pemanasan di OSS. Sistem secara otomatis mencari file dan memanaskan model sebelum layanan dipublikasikan secara online.

      • warm_up_count: jumlah kali setiap permintaan pemanasan dikirim. Jika tidak ditentukan, nilai default adalah 5.

  4. Sebarkan atau perbarui layanan model. Untuk informasi lebih lanjut, lihat Buat Layanan atau Ubah Layanan.

    Saat menyebarkan atau memperbarui layanan model, mesin layanan EAS mengirimkan permintaan pemanasan untuk memanaskan layanan model.

FAQ tentang pemanasan model TensorFlow

  • Masalah

    Dalam skenario bisnis nyata, memperbarui model TensorFlow dapat menyebabkan ketidakstabilan layanan. Bahkan dengan fitur pemanasan ditambahkan ke Prosesor, masalah ini mungkin tetap ada. Pengujian mengungkapkan bahwa setiap tanda tangan input-output yang berbeda dapat menyebabkan model memuat ulang file untuk pemanasan. Bahkan ketika model telah dimuat sebelumnya dengan semua tanda tangan, mengirimkan permintaan tertentu mungkin masih memerlukan waktu yang cukup lama untuk memuat ulang.

  • Penyebab

    Masalah ini muncul karena fungsi TensorFlow session->Run(inputs, output_tensor_names, {}, &outputs) melakukan validasi hash pada inputs dan output_tensor_names. Jika ada perubahan dalam input atau output, itu memicu reload.

    Kode sampel berikut menunjukkan input dari model TensorFlow sampel:

    Inputs:
      threshold: []; DT_FLOAT
      model_id: []; DT_STRING
      input_holder: [-1]; DT_STRING

    Kode sampel berikut menunjukkan output dari model TensorFlow:

    Outputs:
      model_version_id: []; DT_STRING
      sorted_labels: [-1, 3]; DT_STRING
      sorted_probs: [-1, 3]; DT_FLOAT

    Permintaan pemanasan sampel berikut dikirim:

    request.addFeed("input_holder",TFDataType.DT_STRING, new long[]{1}, input);
    request.addFeed("threshold", TFDataType.DT_FLOAT, new long[] {}, th);
    request.addFeed("model_id", TFDataType.DT_STRING, new long[]{}, model_name);
    
    request.addFetch("sorted_labels");
    request.addFetch("sorted_probs");

    Setelah model TensorFlow dipanaskan, permintaan berikut dikirim. Dibandingkan dengan permintaan pemanasan, output dari permintaan berikut berisi parameter tambahan. Dalam kasus ini, file permintaan perlu dimuat ulang:

    request.addFeed("input_holder",TFDataType.DT_STRING, new long[]{1}, input);
    request.addFeed("threshold", TFDataType.DT_FLOAT, new long[] {}, th);
    request.addFeed("model_id", TFDataType.DT_STRING, new long[]{}, model_name);
    
    request.addFetch("sorted_labels");
    request.addFetch("sorted_probs");
    request.addFetch("model_version_id"); // Parameter tambahan dikembalikan.

  • Solusi

    Setiap layanan perlu menggunakan permintaan bisnis nyata untuk pemanasan, dan proses pemanasan ini secara khusus berlaku untuk input dan output dari permintaan tersebut. Oleh karena itu, fitur pemanasan model yang disediakan oleh EAS mengharuskan Anda mengunggah data permintaan aktual. Cukup bagi session->Run untuk berhasil dieksekusi sekali dengan permintaan nyata; sehingga Anda dapat mengunggah satu file pemanasan dan memastikan proses pemanasan sesuai dengan input dan output yang digunakan dalam panggilan aktual.