Argo Workflows adalah alat manajemen alur kerja yang andal, banyak digunakan untuk tugas terjadwal, pembelajaran mesin, dan ETL. Namun, mendefinisikan alur kerja dengan YAML memiliki kurva belajar yang curam. Hera Python SDK menawarkan alternatif yang lebih sederhana: memungkinkan pengguna membangun alur kerja dalam Python, mendukung tugas kompleks, menyederhanakan pengujian, serta terintegrasi secara mulus dengan ekosistem Python—sehingga merancang alur kerja rumit menjadi jauh lebih mudah. Topik ini menjelaskan cara menggunakan Python SDK untuk membangun Argo Workflows skala besar.
Latar Belakang
Argo Workflows adalah alat manajemen alur kerja open-source yang dirancang khusus untuk lingkungan Kubernetes. Fokus utamanya adalah mengorkestrasikan alur kerja kompleks dengan memungkinkan pengguna mendefinisikan serangkaian Tugas serta mengatur urutan eksekusi dan dependensinya secara fleksibel. Argo Workflows membantu Anda membangun dan mengelola alur kerja otomatis yang sangat disesuaikan secara efisien.
Argo Workflows memiliki berbagai kasus penggunaan, termasuk tugas terjadwal, pembelajaran mesin, komputasi simulasi, komputasi ilmiah, ETL, pelatihan model, dan CI/CD. Alur kerja utamanya didefinisikan menggunakan YAML—pilihan desain yang ditujukan untuk kejelasan dan kesederhanaan. Namun, bagi pengguna baru atau yang tidak terbiasa dengan YAML, struktur hierarkis dan indentasi ketatnya dapat menciptakan kurva belajar yang curam, terutama untuk alur kerja yang kompleks.
Hera adalah framework Python SDK yang dirancang untuk membangun dan mengirimkan alur kerja Argo. Framework ini menyederhanakan pembuatan dan pengiriman alur kerja. Bagi ilmuwan data, penggunaan Python selaras dengan praktik umum mereka dan membantu mengatasi tantangan penggunaan YAML.
Perbandingan metode penulisan
|
|
YAML |
Hera |
|
Kesederhanaan |
Tinggi |
Tinggi, jumlah baris kode lebih sedikit |
|
Menulis alur kerja kompleks |
Sulit |
Mudah, secara efektif menghindari potensi error sintaksis YAML |
|
Integrasi ekosistem Python |
Sulit |
Mudah, akses ke pustaka Python yang kaya |
|
Kemampuan diuji |
Sulit, rentan terhadap error sintaksis |
Mudah. Anda dapat menggunakan framework pengujian untuk meningkatkan kualitas dan kemudahan pemeliharaan kode. |
Hera menghubungkan ekosistem Python dengan framework Argo Workflows, sehingga perancangan alur kerja menjadi lebih intuitif. Framework ini memungkinkan orkestrasi Tugas skala besar tanpa kompleksitas YAML, memungkinkan ilmuwan data dan insinyur bekerja di lingkungan Python yang mereka sukai. Hal ini membuat pembuatan dan optimalisasi alur kerja pembelajaran mesin menjadi lancar dan efisien, mempercepat siklus iterasi dari ide hingga penerapan. Contoh-contoh berikut menggunakan Hera.
Langkah 1: Buat kluster dan dapatkan token
-
Buat kluster Argo workflow, lalu aktifkan Argo Server dan akses konsol alur kerja.
-
Buat token kluster.
kubectl create token default -n default
Langkah 2: Kirim alur kerja dengan Hera
-
Instal Hera.
pip install hera -
Tulis dan kirim alur kerja.
DAG diamond sederhana
Dalam Argo Workflows, DAG (Directed Acyclic Graph) sering digunakan untuk mendefinisikan dependensi Tugas yang kompleks. Pola diamond adalah pola umum di mana Tugas bercabang lalu berkumpul kembali. Struktur ini efektif untuk pemrosesan paralel di mana hasilnya diagregasi ke Tugas downstream bersama. Contoh berikut menunjukkan cara menggunakan Hera untuk mendefinisikan alur kerja dengan struktur diamond: Tugas A dijalankan terlebih dahulu, diikuti oleh dua Tugas paralel, B dan C. Tugas akhir, D, dijalankan setelah B dan C selesai, menyelesaikan alur kerja.
-
Buat file bernama
simpleDAG.pydengan konten berikut.# Impor paket yang diperlukan. from hera.workflows import DAG, Workflow, script from hera.shared import global_config import urllib3 urllib3.disable_warnings() # Konfigurasikan alamat host dan token. global_config.host = "https://{{argo_server_IP}}:2746" global_config.token = "abcdefgxxxxxx" # Ganti dengan token yang Anda peroleh. global_config.verify_ssl = "" # Dekorator @script adalah fitur utama Hera yang memungkinkan Anda mengorkestrasikan fungsi Python hampir secara native. # Fitur ini memungkinkan Anda memanggil fungsi yang didekorasi dalam context manager Hera, seperti konteks Workflow atau Steps. # Fungsi tetap berjalan normal di luar konteks Hera apa pun, artinya Anda dapat menulis pengujian unit untuknya. # Contoh ini mencetak pesan input. @script(image="mirrors-ssl.aliyuncs.com/python:3.10") def echo(message: str): print(message) # Workflow adalah resource utama di Argo dan kelas utama di Hera. Workflow menyimpan templat, menetapkan entrypoint, dan menjalankannya. with Workflow( generate_name="dag-diamond-", entrypoint="diamond", namespace="default", ) as w: with DAG(name="diamond"): A = echo(name="A", arguments={"message": "A"}) # Bangun templat. B = echo(name="B", arguments={"message": "B"}) C = echo(name="C", arguments={"message": "C"}) D = echo(name="D", arguments={"message": "D"}) A >> [B, C] >> D # Definisikan dependensi: Tugas B dan C bergantung pada A, dan tugas D bergantung pada B dan C. # Buat alur kerja. w.create() -
Kirim alur kerja.
python simpleDAG.py -
Setelah alur kerja dijalankan, Anda dapat melihat DAG Tugas dan hasilnya di workflow console.
Alur kerja contoh
dag-diamond-g9v45menunjukkan topologi DAG berbentuk diamond: node tingkat atas A selesai, lalu node B dan C dijalankan secara paralel, dan akhirnya berkumpul di node D. Semua node ditandai sebagai berhasil dieksekusi.
Map-reduce
Dalam Argo Workflows, Anda dapat menerapkan pemrosesan data bergaya MapReduce menggunakan templat DAG untuk mensimulasikan fase map dan reduce. Contoh berikut menunjukkan cara menggunakan Hera untuk membangun alur kerja MapReduce sederhana: alur kerja ini membagi Tugas menjadi beberapa Tugas map paralel, lalu mengagregasi hasilnya dalam satu Tugas reduce akhir. Setiap langkah merupakan fungsi Python, yang memungkinkan integrasi mudah dengan ekosistem Python.
-
Buat file bernama
map-reduce.pydengan konten berikut. -
Kirim alur kerja.
python map-reduce.py -
Setelah alur kerja dijalankan, Anda dapat melihat DAG Tugas dan hasilnya di workflow console. Di halaman WORKFLOW DETAILS, tampilan DAG menunjukkan bahwa node
split, empat nodemapparalel, dan nodereducesemuanya telah dieksekusi dengan sukses (ditandai dengan centang hijau).
-
Referensi
-
Dokumentasi Hera:
-
Pelajari lebih lanjut tentang Hera di Hera Overview.
-
Untuk melatih model bahasa besar (LLM) dengan Hera, lihat Train LLM with Hera.
-
-
Contoh penerapan YAML:
-
Untuk menerapkan contoh diamond sederhana menggunakan YAML, lihat dag-diamond.yaml.
-
Untuk menerapkan contoh map-reduce menggunakan YAML, lihat map-reduce.yaml.
-