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.
-
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
-
Terapkan layanan pelatihan.
Metode penerapan berikut tersedia:
Penerapan terintegrasi
Dalam penerapan terintegrasi,
queue service,persistent frontend service, danscalable job servicediterapkan sebagai satu kesatuan.-
Klik Deploy Service, lalu di area Custom Model Deployment, klik JSON Deployment.
-
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.
CatatanVersi 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
/workspacepada 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.
-
-
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.
-
Terapkan layanan pekerjaan yang dapat diskalakan.
-
Klik Deploy Service, lalu di bagian Custom Model Deployment, klik JSON Deployment.
-
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.
CatatanVersi 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
/workspacepada contoh ini.cloud
instance_type
Jenis instans untuk layanan pekerjaan yang dapat diskalakan. Pelatihan Kohya memerlukan tipe GPU.
-
Klik Deploy.
-
Setelah penerapan, klik Invocation Information di kolom Service Type. Di tab Public Endpoint, salin dan simpan endpoint serta token.
-
-
(Opsional) Terapkan layanan frontend.
-
Klik Deploy Service, lalu di bagian Custom Model Deployment, klik JSON Deployment.
-
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.
CatatanVersi 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
/workspacepada contoh ini.cloud
instance_type
Jenis instans untuk layanan frontend. Tipe CPU sudah cukup.
-
-
-
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.

-
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.
-
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.
-
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==
-
-
Instal SDK untuk Python.
pip install -U eas-prediction --userUntuk informasi lebih lanjut tentang operasi API SDK, lihat Panduan Penggunaan SDK untuk Python.
-
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.
-
-
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.
-
-
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.
-
-
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 = FalseParameter:
-
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 = FalseParameter:
-
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.
-
-
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
-
Untuk ikhtisar layanan pekerjaan yang dapat diskalakan, lihat Ikhtisar layanan pekerjaan yang dapat diskalakan.
-
Untuk menggunakan layanan pekerjaan yang dapat diskalakan untuk inferensi, lihat Terapkan layanan online untuk menghasilkan foto ID.