All Products
Search
Document Center

Platform For AI:Terapkan layanan pelatihan Kohya yang dapat diskalakan

Last Updated:Apr 02, 2026

Terapkan layanan pekerjaan yang dapat diskalakan untuk pelatihan Kohya dalam mode integrated atau independent, panggil layanan tersebut, dan kelola tugas pelatihan.

Prasyarat

Anda telah membuat bucket Object Storage Service (OSS) untuk menyimpan file model dan konfigurasi yang dihasilkan selama pelatihan. Untuk informasi lebih lanjut, lihat Buat bucket.

Terapkan layanan pelatihan Kohya yang dapat diskalakan

Bagian ini menggunakan image preset kohya_ss yang disediakan oleh PAI sebagai contoh.

  1. Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).

  2. Terapkan layanan pelatihan.

    Metode penerapan berikut tersedia:

    Penerapan terintegrasi

    Dalam penerapan terintegrasi, queue service, persistent frontend service, dan scalable job service diterapkan sebagai satu kesatuan.

    1. Klik Deploy Service, lalu di area Custom Model Deployment, klik JSON Deployment.

    2. Masukkan konfigurasi JSON berikut.

      {
        "cloud": {
          "computing": {
            "instance_type": "ecs.gn6i-c4g1.xlarge"
          }
        },
        "containers": [
          {
            "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/kohya_ss:2.2"
          }
        ],
        "features": {
          "eas.aliyun.com/extra-ephemeral-storage": "30Gi"
        },
        "front_end": {
          "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/kohya_ss:2.2",
          "port": 8001,
          "script": "python -u kohya_gui.py --listen 0.0.0.0 --server_port 8001 --data-dir /workspace --headless --just-ui --job-service"
        },
        "metadata": {
          "cpu": 4,
          "enable_webservice": true,
          "gpu": 1,
          "instance": 1,
          "memory": 15000,
          "name": "kohya_job",
          "type": "ScalableJobService"
        },
        "name": "kohya_job",
        "storage": [
          {
            "mount_path": "/workspace",
            "oss": {
              "path": "oss://examplebucket/kohya/",
              "readOnly": false
            },
            "properties": {
              "resource_type": "model"
            }
          }
        ]
      }

      Parameter utama:

      Parameter

      Deskripsi

      metadata

      name

      Nama layanan kustom. Harus unik dalam wilayah tersebut.

      type

      Jenis layanan. Atur ke ScalableJobService untuk penerapan terintegrasi.

      enable_webservice

      Atur ke true untuk menerapkan aplikasi web frontend.

      front_end

      image

      Image instans frontend. Pilih image kohya_ss dengan versi 2.2.

      Catatan

      Versi image sering diperbarui. Pilih versi terbaru saat menerapkan.

      script

      Perintah startup untuk instans frontend: python -u kohya_gui.py --listen 0.0.0.0 --server_port 8000 --headless --just-ui --job-service. Parameter:

      • --listen: Mengikat ke alamat IP tertentu untuk permintaan eksternal.

      • --server_port: Port pendengar.

      • --just-ui: Memulai layanan dalam mode frontend UI-only.

      • --job-service: Mengarahkan tugas pelatihan ke layanan pekerjaan yang dapat diskalakan.

      port

      Nomor port. Harus sesuai dengan nilai server_port dalam front_end.script.

      containers

      image

      Default ke image instans frontend jika tidak ditentukan.

      instance_type

      Jenis instans untuk layanan pekerjaan yang dapat diskalakan. Harus bertipe GPU. Default ke nilai cloud.computing.instance_type jika tidak ditentukan.

      storage

      path

      Jalur OSS dalam wilayah yang sama untuk menyimpan output pelatihan. Contoh: oss://examplebucket/kohya/.

      readOnly

      Atur ke false agar memungkinkan penyimpanan file model ke OSS.

      mount_path

      Jalur mount yang dapat dikustomisasi. Diatur ke /workspace pada contoh ini.

      cloud

      instance_type

      Jenis instans untuk layanan. Dalam penerapan terintegrasi, ini berlaku untuk instans frontend maupun pekerjaan. Harus bertipe GPU untuk pelatihan Kohya.

    3. Klik Deploy.

    Penerapan independen

    Dalam penerapan independen, layanan pekerjaan yang dapat diskalakan dan layanan frontend diterapkan secara terpisah. Hal ini memungkinkan satu layanan pekerjaan yang dapat diskalakan menerima permintaan dari beberapa layanan frontend.

    1. Terapkan layanan pekerjaan yang dapat diskalakan.

      1. Klik Deploy Service, lalu di bagian Custom Model Deployment, klik JSON Deployment.

      2. Masukkan konfigurasi JSON berikut untuk layanan pekerjaan yang dapat diskalakan.

        {
          "cloud": {
            "computing": {
              "instance_type": "ecs.gn6i-c4g1.xlarge"
            }
          },
          "containers": [
            {
              "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/kohya_ss:2.2"
            }
          ],
          "features": {
            "eas.aliyun.com/extra-ephemeral-storage": "30Gi"
          },
          "metadata": {
            "instance": 1,
            "name": "kohya_scalable_job",
            "type": "ScalableJob"
          },
          "storage": [
            {
              "mount_path": "/workspace",
              "oss": {
                "path": "oss://examplebucket/kohya/",
                "readOnly": false
              },
              "properties": {
                "resource_type": "model"
              }
            }
          ]
        }

        Parameter utama:

        Parameter

        Deskripsi

        metadata

        name

        Nama layanan kustom. Harus unik dalam wilayah tersebut.

        type

        Jenis layanan. Atur ke ScalableJob untuk penerapan independen.

        containers

        image

        Image untuk layanan pekerjaan yang dapat diskalakan. Pilih image kohya_ss dengan versi 2.2.

        Catatan

        Versi image sering diperbarui. Pilih versi terbaru saat menerapkan.

        storage

        path

        Jalur OSS dalam wilayah yang sama untuk menyimpan output pelatihan. Contoh: oss://examplebucket/kohya/.

        readOnly

        Atur ke false agar memungkinkan penyimpanan file model ke OSS.

        mount_path

        Jalur mount yang dapat dikustomisasi. Diatur ke /workspace pada contoh ini.

        cloud

        instance_type

        Jenis instans untuk layanan pekerjaan yang dapat diskalakan. Pelatihan Kohya memerlukan tipe GPU.

      3. Klik Deploy.

      4. Setelah penerapan, klik Invocation Information di kolom Service Type. Di tab Public Endpoint, salin dan simpan endpoint serta token.

    2. (Opsional) Terapkan layanan frontend.

      1. Klik Deploy Service, lalu di bagian Custom Model Deployment, klik JSON Deployment.

      2. Masukkan konfigurasi JSON berikut untuk layanan frontend.

        {
          "cloud": {
            "computing": {
              "instance_type": "ecs.g6.large"
            }
          },
          "containers": [
            {
              "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/kohya_ss:2.2",
              "port": 8000,
              "script": "python kohya_gui.py --listen 0.0.0.0 --server_port 8000 --headless --just-ui --job-service --job-service-endpoint 166233998075****.vpc.cn-hangzhou.pai-eas.aliyuncs.com --job-service-token test-token --job-service-inputname kohya_scalable_job"
            }
          ],
          "metadata": {
            "enable_webservice": true,
            "instance": 1,
            "name": "kohya_scalable_job_front"
          },
          "storage": [
            {
              "mount_path": "/workspace",
              "oss": {
                "path": "oss://examplebucket/kohya/",
                "readOnly": false
              },
              "properties": {
                "resource_type": "model"
              }
            }
          ]
        }

        Parameter utama:

        Parameter

        Deskripsi

        metadata

        name

        Nama kustom untuk layanan frontend.

        enable_webservice

        Atur ke true untuk menerapkan aplikasi web frontend.

        containers

        image

        Image layanan frontend. Pilih image kohya_ss dengan versi 2.2.

        Catatan

        Versi image sering diperbarui. Pilih versi terbaru saat menerapkan.

        script

        Perintah startup untuk layanan frontend: python kohya_gui.py --listen 0.0.0.0 --server_port 8000 --headless --just-ui --job-service --job-service-endpoint 166233998075****.vpc.cn-hangzhou.pai-eas.aliyuncs.com --job-service-token test-token --job-service-inputname kohya_scaled_job. Parameter:

        • --listen: Mengikat ke alamat IP tertentu untuk permintaan eksternal.

        • --server_port: Port pendengar.

        • --just-ui: Memulai layanan dalam mode frontend UI-only.

        • --job-service: Mengarahkan tugas pelatihan ke layanan pekerjaan yang dapat diskalakan.

        • --job-service-endpoint: Endpoint layanan pekerjaan yang dapat diskalakan.

        • --job-service-token: Token layanan pekerjaan yang dapat diskalakan.

        • --job-service-inputname: Nama layanan pekerjaan yang dapat diskalakan.

        port

        Nomor port. Harus sesuai dengan nilai server_port dalam containers.script.

        storage

        path

        Jalur OSS dalam wilayah yang sama untuk menyimpan output pelatihan. Contoh: oss://examplebucket/kohya/.

        readOnly

        Atur ke false agar memungkinkan penyimpanan file model ke OSS.

        mount_path

        Jalur mount yang dapat dikustomisasi. Diatur ke /workspace pada contoh ini.

        cloud

        instance_type

        Jenis instans untuk layanan frontend. Tipe CPU sudah cukup.

    3. Klik Deploy.

Panggil layanan pelatihan Kohya

Panggil dari antarmuka web

Jika layanan frontend menggunakan image preset kohya (versi 2.2 atau lebih baru), fitur layanan pekerjaan yang dapat diskalakan didukung. Setelah penerapan, klik View Web App di kolom Service Type untuk mengonfigurasi parameter pelatihan LoRA dan melatih model Kohya. Untuk informasi lebih lanjut, lihat Latih model LoRA.

image.png

  • Klik Start training untuk mengirimkan pekerjaan pelatihan. Tombol ini dinonaktifkan hingga pekerjaan saat ini selesai atau dihentikan. Instans layanan pekerjaan yang dapat diskalakan melakukan autoscale berdasarkan jumlah pekerjaan pelatihan.

  • Klik Stop training untuk menghentikan tugas pelatihan saat ini.

Panggil dari frontend kustom

Gunakan SDK untuk Python untuk memanggil layanan pekerjaan yang dapat diskalakan, mengirim permintaan tugas perintah ke antrian, dan mengambil log eksekusi. Jika Anda menggunakan image frontend kustom, implementasikan operasi API berikut dalam image tersebut untuk memanggil layanan pekerjaan yang dapat diskalakan dari antarmuka web.

  1. Dapatkan endpoint dan token layanan pekerjaan yang dapat diskalakan.

    Penerapan terintegrasi

    Di halaman Elastic Algorithm Service (EAS), klik nama layanan untuk membuka halaman detail layanan. Di bagian Basic Information, klik View Endpoint Information. Di tab Public Endpoint, dapatkan endpoint dan token:

    • Endpoint layanan: Formatnya <queue_name>.<service_name>.<uid>.<region>.pai-eas.aliyuncs.com. Contoh: kohya-job-queue-b****4f0.kohya-job.175805416243****.cn-beijing.pai-eas.aliyuncs.com. Bagian <queue_name> adalah bagian dari nama instans layanan antrian sebelum -0. Temukan nama ini di daftar instans layanan pada halaman Service Details.image

    • Token: Contoh: OGZlNzQwM2VlMWUyM2E2ZTAyMGRjOGQ5MWMyOTFjZGExNDgwMT****==

    Penerapan independen

    Di halaman Elastic Algorithm Service (EAS), klik Invocation Information di kolom Service Type layanan pekerjaan yang dapat diskalakan untuk mendapatkan endpoint dan token:

    • Endpoint: Contoh: 175805416243****.cn-beijing.pai-eas.aliyuncs.com

    • Token: Contoh: Njk5NDU5MGYzNmRlZWQ3ND****QyMDIzMGM4MjExNmQ1NjE1NzY5Mw==

  2. Instal SDK untuk Python.

    pip install -U eas-prediction --user

    Untuk informasi lebih lanjut tentang operasi API SDK, lihat Panduan Penggunaan SDK untuk Python.

  3. Buat klien untuk antrian input dan antrian output.

    Penerapan terintegrasi

    from eas_prediction import QueueClient
    
    if __name__ == '__main__':
        token = 'OGZlNzQwM2VlMWUyM2E2ZTAyMGRjOGQ5MWMyOTFjZGExNDgwMT****=='
        input_url = 'kohya-job-queue-bf****f0.kohya-job.175805416243****.cn-hangzhou.pai-eas.aliyuncs.com'
        sink_url = input_url + '/sink'
    
        # Buat antrian input untuk mengirim permintaan pelatihan dan penghentian untuk tugas perintah.
        inputQueue = QueueClient(custom_url = input_url)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Buat antrian output untuk mendapatkan status tugas dan log.
        sinkQueue = QueueClient(custom_url = sink_url)
        sinkQueue.set_token(token)
        sinkQueue.init()
    

    Parameter:

    • token: Ganti dengan token yang diperoleh pada langkah sebelumnya.

    • input_url: Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    Penerapan independen

    from eas_prediction import QueueClient
    
    if __name__ == '__main__':
        endpoint = '166233998075****.cn-hangzhou.pai-eas.aliyuncs.com'
        token = 'YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA3OT****c1MTUxNg=='
        input_name = 'kohya_scalable_job'
        sink_name = input_name + '/sink'
    
        # Buat antrian input untuk mengirim permintaan pelatihan dan penghentian untuk tugas perintah.
        inputQueue = QueueClient(endpoint, input_name)
        inputQueue.set_token(token)
        inputQueue.init()
    
        # Buat antrian output untuk mendapatkan status tugas dan log.
        sinkQueue = QueueClient(endpoint, sink_name)
        sinkQueue.set_token(token)
        sinkQueue.init()
    

    Parameter:

    • endpoint: Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    • token: Ganti dengan token layanan yang diperoleh pada langkah sebelumnya.

    • input_name: Nama layanan pekerjaan yang dapat diskalakan.

  4. Kirim permintaan tugas pelatihan ke antrian input.

    Penerapan terintegrasi

    from eas_prediction import QueueClient
    import uuid
    
    if __name__ == '__main__':
        token = 'OGZlNzQwM2VlMWUyM2E2ZTAyMGRjOGQ5MWMyOTFjZGExNDgwMT****=='
        input_url = 'kohya-job-queue-bf****f0.kohya-job.175805416243****.cn-hangzhou.pai-eas.aliyuncs.com'
        sink_url = input_url + '/sink'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah.
        inputQueue = QueueClient(custom_url = input_url)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Hasilkan taskId unik untuk setiap permintaan tugas.
        task_id = uuid.uuid1().hex
        # Buat string perintah.
        cmd = "for i in {1..10}; do date; sleep 1; done;"
        # Tentukan command sebagai taskType dan tentukan taskId.
        tags = {"taskType": "command", "taskId": task_id}
        # Kirim permintaan tugas pelatihan perintah ke antrian input.
        index, request_id = inputQueue.put(cmd, tags)
        print(f'send index: {index}, request id: {request_id}')
    

    Parameter utama:

    Parameter

    Deskripsi

    token

    Ganti dengan token yang diperoleh pada langkah sebelumnya.

    input_url

    Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    cmd

    Perintah yang akan dieksekusi. Untuk perintah Python, tambahkan -u agar output log waktu nyata.

    tags

    Tag permintaan tugas pelatihan:

    • taskType: Harus command.

    • taskId: Pengidentifikasi unik untuk tugas pelatihan.

    Penerapan independen

    from eas_prediction import QueueClient
    import uuid
    
    if __name__ == '__main__':
        endpoint = '166233998075****.cn-hangzhou.pai-eas.aliyuncs.com'
        token = 'M2EyNWYzNDJmNjQ5ZmUzMmM0OTMyMzgzYj****djN2IyODc1MTM5ZQ=='
        input_name = 'kohya_scalable_job'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah.
        inputQueue = QueueClient(endpoint, input_name)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Hasilkan taskId unik untuk setiap permintaan tugas.
        task_id = uuid.uuid1().hex
        # Buat string perintah.
        cmd = "for i in {1..10}; do date; sleep 1; done;"
        # Tentukan command sebagai taskType dan tentukan taskId.
        tags = {"taskType": "command", "taskId": task_id}
        # Kirim permintaan tugas pelatihan perintah ke antrian input.
        index, request_id = inputQueue.put(cmd, tags)
        print(f'send index: {index}, request id: {request_id}')
    

    Parameter utama:

    Parameter

    Deskripsi

    endpoint

    Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    token

    Ganti dengan token layanan yang diperoleh pada langkah sebelumnya.

    cmd

    Perintah yang akan dieksekusi. Untuk perintah Python, tambahkan -u agar output log waktu nyata.

    tags

    Tag permintaan tugas pelatihan:

    • taskType: Harus command.

    • taskId: Pengidentifikasi unik untuk tugas pelatihan.

  5. Kueri status antrian permintaan.

    Penerapan terintegrasi

    from eas_prediction import QueueClient
    import uuid
    
    if __name__ == '__main__':
        token = 'OGZlNzQwM2VlMWUyM2E2ZTAyMGRjOGQ5MWMyOTFjZGExNDgwMT****=='
        input_url = 'kohya-job-queue-bf****f0.kohya-job.175805416243****.cn-hangzhou.pai-eas.aliyuncs.com'
        sink_url = input_url + '/sink'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah.
        inputQueue = QueueClient(custom_url = input_url)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Kirim permintaan perintah ke antrian input.
        task_id = uuid.uuid1().hex
        cmd = "for i in {1..100}; do date; sleep 1; done;"
        tags = {"taskType": "command", "taskId": task_id}
        index, request_id = inputQueue.put(cmd, tags)
    
        # Kueri status antrian data permintaan.
        search_info = inputQueue.search(index)
        print("index: {}, search info: {}".format(index, search_info))
    

    Parameter:

    • token: Ganti dengan token yang diperoleh pada langkah sebelumnya.

    • input_url: Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    Penerapan independen

    from eas_prediction import QueueClient
    import uuid
    
    if __name__ == '__main__':
        endpoint = '166233998075****.cn-hangzhou.pai-eas.aliyuncs.com'
        token = 'M2EyNWYzNDJmNjQ5ZmUzMmM0OTMyMzgzYjBjOTdjN2I****1MTM5ZQ=='
        input_name = 'kohya_scalable_job'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah.
        inputQueue = QueueClient(endpoint, input_name)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Kirim permintaan perintah ke antrian input.
        task_id = uuid.uuid1().hex
        cmd = "for i in {1..100}; do date; sleep 1; done;"
        tags = {"taskType": "command", "taskId": task_id}
        index, request_id = inputQueue.put(cmd, tags)
    
        # Kueri status antrian data permintaan.
        search_info = inputQueue.search(index)
        print("index: {}, search info: {}".format(index, search_info))
    

    Parameter:

    • endpoint: Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    • token: Ganti dengan token layanan yang diperoleh pada langkah sebelumnya.

    Contoh respons dalam format JSON:

    {
    	'IsPending': False,
    	'WaitCount': 0
    }

    Field respons:

    Parameter

    Deskripsi

    IsPending

    Apakah permintaan sedang diproses:

    • True: Permintaan sedang diproses.

    • False: Permintaan berada dalam antrian.

    WaitCount

    Posisi permintaan dalam antrian. Hanya valid ketika IsPending bernilai False. Mengembalikan 0 ketika IsPending bernilai True.

  6. Dapatkan hasil eksekusi dari antrian output.

    Log tugas pelatihan ditulis ke antrian output secara waktu nyata. Panggil queue.get(request_id=request_id, length=1, timeout='0s', tags=tags) untuk mengambil log untuk task_id tertentu. Contoh:

    Penerapan terintegrasi

    from eas_prediction import QueueClient
    import json
    import uuid
    
    if __name__ == '__main__':
        token = 'OGZlNzQwM2VlMWUyM2E2ZTAyMGRjOGQ5MWMyOTFjZGExNDgwMT****=='
        input_url = 'kohya-job-queue-bf****f0.kohya-job.175805416243****.cn-hangzhou.pai-eas.aliyuncs.com'
        sink_url = input_url + '/sink'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah.
        inputQueue = QueueClient(custom_url = input_url)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Buat klien untuk antrian output guna mendapatkan log eksekusi perintah.
        sinkQueue = QueueClient(custom_url = sink_url)
        sinkQueue.set_token(token)
        sinkQueue.init()
    
        # Kirim permintaan perintah ke antrian input.
        cmd = "for i in {1..10}; do date; sleep 1; done;"
        task_id = uuid.uuid1().hex
        tags = {"taskType": "command", "taskId": task_id}
        index, request_id = inputQueue.put(cmd, tags)
    
        # Dapatkan log output tugas pelatihan dengan taskId tertentu dari antrian output secara waktu nyata.
        running = True
        while running:
            dfs = sinkQueue.get(length=1, timeout='0s', tags=tags)
            if len(dfs) == 0:
                continue
            df = dfs[0]
            data = json.loads(df.data.decode())
            state = data["state"]
            print(data.get("log", ""))
            if state in {"Exited", "Stopped", "Fatal", "Backoff"}:
                running = False
    

    Parameter:

    • token: Ganti dengan token yang diperoleh pada langkah sebelumnya.

    • input_url: Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    Penerapan independen

    from eas_prediction import QueueClient
    import json
    import uuid
    
    if __name__ == '__main__':
        endpoint = '166233998075****.cn-hangzhou.pai-eas.aliyuncs.com'
        token = 'M2EyNWYzNDJmNjQ5ZmUzMmM0OTMyMzgzYjBjOTdjN2IyOD****M5ZQ=='
        input_name = 'kohya_scalable_job'
        sink_name = input_name + '/sink'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah.
        inputQueue = QueueClient(endpoint, input_name)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Buat klien untuk antrian output guna mendapatkan log eksekusi perintah.
        sinkQueue = QueueClient(endpoint, sink_name)
        sinkQueue.set_token(token)
        sinkQueue.init()
    
        # Kirim permintaan perintah ke antrian input.
        cmd = "for i in {1..10}; do date; sleep 1; done;"
        task_id = uuid.uuid1().hex
        tags = {"taskType": "command", "taskId": task_id}
        index, request_id = inputQueue.put(cmd, tags)
    
        # Dapatkan log output tugas pelatihan dengan taskId tertentu dari antrian output secara waktu nyata.
        running = True
        while running:
            dfs = sinkQueue.get(length=1, timeout='0s', tags=tags)
            if len(dfs) == 0:
                continue
            df = dfs[0]
            data = json.loads(df.data.decode())
            state = data["state"]
            print(data.get("log", ""))
            if state in {"Exited", "Stopped", "Fatal", "Backoff"}:
                running = False
    

    Parameter:

    • endpoint: Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    • token: Ganti dengan token layanan yang diperoleh pada langkah sebelumnya.

    Contoh respons dalam format bytes:

    {
    	"taskId": "e97409eea4a111ee9cb600163e08****",
    	"command": "python3 -u test.py --args=xxx",
    	"state": "Running",
    	"log": "prepare tokenizer\\n"
    }

    Field respons:

    Field

    Deskripsi

    taskId

    Pengidentifikasi unik tugas pelatihan.

    command

    Perintah yang dieksekusi oleh pekerjaan.

    state

    Status tugas:

    • Running: Tugas sedang dieksekusi.

    • Exited: Tugas selesai.

    • Fatal: Terjadi pengecualian eksekusi.

    • Stopping: Tugas sedang dihentikan.

    • Stopped: Tugas dihentikan.

    log

    Log output. Log lengkap merupakan rangkaian entri untuk taskId yang sama.

  7. Hentikan tugas pelatihan.

    Untuk menghentikan tugas yang telah dikirim, pertama-tama periksa apakah tugas tersebut berada dalam status queued atau running dengan memanggil queue.search(index), lalu hentikan sesuai kondisinya. Contoh:

    Penerapan terintegrasi

    from eas_prediction.queue_client import QueueClient
    import uuid
    
    if __name__ == '__main__':
        token = 'OGZlNzQwM2VlMWUyM2E2ZTAyMGRjOGQ5MWMyOTFjZGExNDgwMT****=='
        input_url = 'kohya-job-queue-bf****f0.kohya-job.175805416243****.cn-hangzhou.pai-eas.aliyuncs.com'
        sink_url = input_url + '/sink'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah dan penghentian.
        inputQueue = QueueClient(custom_url = input_url)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Kirim permintaan perintah ke antrian input.
        cmd = "for i in {1..10}; do date; sleep 1; done;"
        task_id = uuid.uuid1().hex  # taskId permintaan tugas ini.
        tags = {"taskType": "command", "taskId": task_id}
        index, request_id = inputQueue.put(cmd, tags)
        print(f'cmd send, index: {index}, task_id: {task_id}')
    
        job_index = index  # Indeks yang dikembalikan saat permintaan tugas dikirim.
    
        pending_detail = inputQueue.search(job_index)
        print(f'search info: {pending_detail}')
        if len(pending_detail) > 0 and pending_detail.get("IsPending", True) == False:
            # Tugas perintah masih dalam antrian. Hapus langsung dari antrian input.
            inputQueue.delete(job_index)
            print(f'delete task index: {job_index}')
        else:
            # Tugas perintah sedang berjalan. Kirim sinyal stop ke antrian input.
            stop_data = "stop"
            tags = {"_is_symbol_": "true", "taskId": task_id}
            inputQueue.put(stop_data, tags)
            print(f'stop task index: {job_index}')
    

    Parameter utama:

    Parameter

    Deskripsi

    token

    Ganti dengan token yang diperoleh pada langkah sebelumnya.

    input_url

    Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    stop_data

    Atur ke stop.

    tags

    • _is_symbol_: Wajib. Atur ke true untuk menunjukkan permintaan penghentian.

    • task_id: ID tugas pelatihan yang akan dihentikan.

    Penerapan independen

    from eas_prediction.queue_client import QueueClient
    import uuid
    
    if __name__ == '__main__':
        endpoint = '166233998075****.cn-hangzhou.pai-eas.aliyuncs.com'
        token = 'M2EyNWYzNDJmNjQ5ZmUzMmM0OTMyMzgzYjBjOTdjN2IyODc1MTM5****'
        input_name = 'kohya_scalable_job'
    
        # Buat klien untuk antrian input guna mengirim permintaan perintah dan penghentian.
        inputQueue = QueueClient(endpoint, input_name)
        inputQueue.set_token(token)
        inputQueue.init(gid="superwatcher")
    
        # Kirim permintaan perintah ke antrian input.
        cmd = "for i in {1..10}; do date; sleep 1; done;"
    
        # taskId permintaan tugas ini.
        task_id = uuid.uuid1().hex
        tags = {"taskType": "command", "taskId": task_id}
        index, request_id = inputQueue.put(cmd, tags)
        print(f'cmd send, index: {index}, task_id: {task_id}')
    
        job_index = index  # Indeks yang dikembalikan saat permintaan tugas dikirim.
    
        pending_detail = inputQueue.search(job_index)
        print(f'search info: {pending_detail}')
        if len(pending_detail) > 0 and pending_detail.get("IsPending", True) == False:
            # Tugas perintah masih dalam antrian. Hapus langsung dari antrian input.
            inputQueue.delete(job_index)
            print(f'delete task index: {job_index}')
        else:
            # Tugas perintah sedang berjalan. Kirim sinyal stop ke antrian input.
            stop_data = "stop"
            tags = {"_is_symbol_": "true", "taskId": task_id}
            inputQueue.put(stop_data, tags)
            print(f'stop task index: {job_index}')
    

    Parameter utama:

    Parameter

    Deskripsi

    endpoint

    Ganti dengan endpoint yang diperoleh pada langkah sebelumnya.

    token

    Ganti dengan token layanan yang diperoleh pada langkah sebelumnya.

    stop_data

    Atur ke stop.

    tags

    • _is_symbol_: Wajib. Atur ke true untuk menunjukkan permintaan penghentian.

    • task_id: ID tugas pelatihan yang akan dihentikan.

Dokumentasi terkait