Lewati ke konten utama

Pemrosesan Terdistribusi menggunakan kerangka kerja Ray di Python

Mengoptimalkan Kekuatan Sistem Terdistribusi yang Dapat Diskalakan: Panduan untuk Kerangka Kerja Ray di Python
Diperbarui 28 Sep 2026  · 11 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Diagram kerangka kerja Ray

Sumber Gambar

Dalam lanskap dunia yang berkembang pesat saat ini, ketika data tumbuh secara eksponensial dan kebutuhan komputasi melonjak, pendekatan tradisional untuk memproses informasi sering kali tidak memadai. Di sinilah pemrosesan terdistribusi berperan.

Pemrosesan terdistribusi mengacu pada proses memecah tugas-tugas kompleks menjadi bagian-bagian yang lebih kecil dan mudah dikelola, lalu mengeksekusinya secara bersamaan di banyak mesin atau sumber daya komputasi. Dengan memanfaatkan kekuatan kolektif dari sumber daya ini, pemrosesan terdistribusi memungkinkan kita menangani komputasi berskala besar secara efisien dan efektif.

Kebutuhan daya komputasi untuk melatih model machine learning (ML) meningkat pesat. Sejak 2010, permintaan komputasi meningkat sepuluh kali lipat setiap 18 bulan. Namun, kemampuan akselerator AI seperti GPU dan TPU tidak sejalan dengan permintaan ini, karena hanya berlipat ganda dalam periode yang sama.

Akibatnya, organisasi kini membutuhkan lima kali lebih banyak akselerator AI atau node setiap satu setengah tahun untuk melatih model ML terbaru dan memanfaatkan kemampuan ML terkini. Untuk memenuhi kebutuhan ini, komputasi terdistribusi adalah satu-satunya solusi.

Tutorial ini memperkenalkan Ray, kerangka kerja Python open-source yang menyederhanakan komputasi terdistribusi.

Diagram komputasi terdistribusi

Sumber Gambar

Apa itu Ray?

Ray adalah kerangka kerja open-source yang dirancang untuk memungkinkan pengembangan aplikasi terukur dan terdistribusi di Python. Ray menyediakan model pemrograman yang sederhana dan fleksibel untuk membangun sistem terdistribusi, sehingga lebih mudah memanfaatkan kekuatan komputasi paralel dan terdistribusi. Beberapa fitur dan kemampuan utama dari kerangka kerja Ray meliputi:

Paralelisme tugas

Ray memungkinkan Anda dengan mudah melakukan paralelisasi kode Python dengan mengeksekusi tugas-tugas secara bersamaan di banyak inti CPU atau bahkan di seluruh kluster mesin. Ini memungkinkan eksekusi lebih cepat dan kinerja yang lebih baik untuk tugas-tugas yang intensif komputasi.

Komputasi terdistribusi

Ray menyediakan model eksekusi terdistribusi, memungkinkan Anda menskalakan aplikasi melampaui satu mesin. Ray menawarkan alat untuk penjadwalan terdistribusi, ketahanan kesalahan, dan manajemen sumber daya, sehingga memudahkan penanganan komputasi berskala besar.

Eksekusi fungsi jarak jauh

Dengan Ray, Anda dapat mendefinisikan fungsi Python yang dapat dieksekusi dari jarak jauh. Ini memungkinkan Anda mengalihkan komputasi ke node berbeda dalam suatu kluster, mendistribusikan beban kerja dan meningkatkan efisiensi secara keseluruhan.

Pemrosesan data terdistribusi

Ray menyediakan abstraksi tingkat tinggi untuk pemrosesan data terdistribusi, seperti data frame terdistribusi dan penyimpanan objek terdistribusi. Fitur-fitur ini memudahkan bekerja dengan set data besar dan melakukan operasi seperti penyaringan, agregasi, dan transformasi secara terdistribusi.

Dukungan reinforcement learning

Ray menyertakan dukungan bawaan untuk algoritme reinforcement learning dan pelatihan terdistribusi. Ray menyediakan lingkungan eksekusi yang dapat diskalakan untuk melatih dan mengevaluasi model machine learning, sehingga memungkinkan eksperimen yang efisien dan waktu pelatihan yang lebih cepat.

Gambaran Umum Kerangka Kerja Ray

Kerangka Kerja Ray

Sumber Gambar

Kerangka kerja Ray mencakup tiga lapisan:

1. Ray AI Runtime (AIR)

Kumpulan perpustakaan Python open-source ini dirancang khusus untuk insinyur ML, data scientist, dan peneliti. AIR membekali mereka dengan seperangkat alat yang terpadu dan dapat diskalakan untuk mengembangkan aplikasi ML. Ray AI Runtime terdiri dari 5 pustaka inti:

Ray Data

Mencapai skalabilitas dan fleksibilitas dalam pemuatan dan transformasi data di berbagai tahap, seperti pelatihan, tuning, dan prediksi, terlepas dari kerangka kerja yang digunakan.

Ray Train

Memungkinkan pelatihan model terdistribusi di banyak node dan inti, dengan mekanisme ketahanan kesalahan yang terintegrasi mulus dengan pustaka pelatihan yang banyak digunakan.

Ray Tune

Menskalakan proses penalaan hiperparameter untuk meningkatkan kinerja model, memastikan konfigurasi optimal ditemukan.

Ray Serve

Menyebarkan model untuk inferensi daring dengan mudah menggunakan kemampuan serving Ray yang dapat diskalakan dan dapat diprogram. Secara opsional, manfaatkan micro batching untuk lebih meningkatkan kinerja.

Ray RLlib

Mengintegrasikan beban kerja reinforcement learning terdistribusi yang dapat diskalakan dengan mulus bersama pustaka Ray AIR lainnya, sehingga memungkinkan eksekusi tugas RL yang efisien.

2. Ray Core

Pustaka Python open-source ini berfungsi sebagai solusi komputasi terdistribusi serbaguna. Ray memberdayakan insinyur ML dan pengembang Python untuk menskalakan aplikasi Python dan mempercepat eksekusi beban kerja machine learning.

Konsep Utama di Ray Core

Diagram Ray Core

Sumber Gambar

Tugas (Tasks)

Ray memungkinkan Anda menjalankan fungsi secara independen pada worker Python terpisah. Fungsi-fungsi ini disebut "tugas" dan dapat dieksekusi secara asinkron. Ray memungkinkan Anda menentukan sumber daya (seperti CPU, GPU, dan sumber daya kustom) yang diperlukan setiap tugas. Penjadwal kluster kemudian mendistribusikan tugas di seluruh kluster untuk menjalankannya secara paralel.

Aktor

Aktor adalah perpanjangan dari API Ray yang melampaui fungsi (tugas) untuk bekerja dengan kelas. Seorang aktor seperti worker yang menyimpan state atau bertindak sebagai layanan. Saat Anda membuat aktor baru, sebuah worker khusus ditugaskan untuknya. Metode-metode aktor dijadwalkan pada worker tersebut dan dapat mengakses serta mengubah state-nya. Mirip dengan tugas, aktor juga dapat memiliki kebutuhan sumber daya, seperti CPU, GPU, dan sumber daya kustom.

Objek

Di Ray, tugas dan aktor beroperasi pada objek. Objek-objek ini disebut objek jarak jauh karena dapat disimpan di mana saja dalam kluster Ray. Kita menggunakan referensi objek (object ref) untuk merujuk ke objek jarak jauh ini. Penyimpanan objek memori bersama terdistribusi Ray melakukan caching objek-objek ini, dan setiap node dalam kluster memiliki penyimpanan objeknya sendiri. Dalam sebuah kluster, suatu objek jarak jauh dapat ada pada satu atau beberapa node, terlepas dari node mana yang memegang referensi objek tersebut.

3. Kluster Ray

Kluster Ray terdiri atas sekelompok worker node yang terhubung ke head node Ray pusat. Kluster ini dapat dikonfigurasi dengan ukuran tetap atau dapat melakukan penskalaan otomatis secara dinamis berdasarkan kebutuhan sumber daya dari aplikasi yang berjalan di kluster.

Konsep Utama di Kluster Ray

Sebuah kluster Ray dengan dua worker node.

Sebuah kluster Ray dengan dua worker node. Sumber Gambar

Kluster

Kluster Ray terdiri atas kumpulan worker node yang terhubung ke head node Ray pusat. Kluster ini dapat memiliki ukuran yang telah ditentukan atau melakukan penskalaan naik atau turun secara dinamis berdasarkan kebutuhan sumber daya dari aplikasi yang beroperasi di dalam kluster.

Head Node

Di setiap kluster Ray, terdapat head node yang ditunjuk dan bertanggung jawab atas tugas manajemen kluster seperti menjalankan autoscaler dan proses driver Ray. Meskipun head node berfungsi sebagai worker node biasa, node ini juga dapat diberi tugas dan aktor, yang tidak ideal untuk kluster berskala besar.

Worker Node

Worker node dalam kluster Ray hanya bertanggung jawab mengeksekusi kode pengguna di dalam tugas dan aktor Ray. Mereka tidak menjalankan proses manajemen head node apa pun. Worker node ini memainkan peran penting dalam penjadwalan terdistribusi dan bertanggung jawab untuk menyimpan serta mendistribusikan objek Ray di seluruh memori kluster.

Penskalaan Otomatis

Autoscaler Ray, yang berjalan pada head node, menyesuaikan ukuran kluster berdasarkan kebutuhan sumber daya beban kerja Ray. Ketika beban kerja melampaui kapasitas kluster, autoscaler akan mencoba menambahkan lebih banyak worker node. Sebaliknya, autoscaler akan menghapus worker node yang menganggur dari kluster. Penting untuk dicatat bahwa autoscaler hanya merespons permintaan sumber daya tugas dan aktor, dan tidak mempertimbangkan metrik aplikasi atau pemanfaatan sumber daya fisik.

Pekerjaan Ray (Ray Job)

Pekerjaan Ray mengacu pada satu aplikasi yang terdiri dari sekumpulan tugas, objek, dan aktor Ray yang berasal dari skrip yang sama. Worker yang menjalankan skrip Python disebut driver untuk pekerjaan tersebut.

Tiga cara menjalankan sebuah pekerjaan pada kluster Ray.

Tiga cara menjalankan sebuah pekerjaan pada kluster Ray. Sumber Gambar

Instalasi dan Penyiapan Ray

Anda dapat memasang versi resmi terbaru Ray dari PyPI. Jika Anda ingin memasang Ray terutama untuk aplikasi machine learning, kemungkinan besar Anda memerlukan ray[air].

pip install ray[air]

Untuk aplikasi Python umum:

pip install ray[default]

Ray dan ChatGPT

ChatGPT dan Ray

Sumber Gambar

ChatGPT milik OpenAI, yang didukung oleh platform Ray, diuntungkan dari pelatihan model yang diparalelkan. Artinya, alih-alih menggunakan satu komputer saja, banyak komputer bekerja bersama untuk melatih model. Ini memungkinkan ChatGPT berlatih pada set data yang jauh lebih besar daripada yang dapat ditangani sendirian.

Saat melatih model bahasa seperti ChatGPT, prosesnya melibatkan analisis sejumlah besar data teks dan menyesuaikan pengaturan model untuk meningkatkan prediksinya. Proses ini dapat sangat intensif komputasi dan memakan waktu, terutama ketika berhadapan dengan set data yang masif.

Struktur data dan optimizer terdistribusi Ray berperan penting dalam mengelola dan memproses volume data yang besar selama pelatihan ChatGPT.

Pelajari Topik yang Disebutkan dalam Tutorial ini!

Pengantar Data Engineering

BasicSkill Level
4 jam
130.2K learners
Pelajari dunia rekayasa data dalam kursus singkat ini, mencakup alat dan topik seperti ETL dan komputasi awan.
See DetailsRight Arrow
Start Course

Contoh Python Sederhana: Menjalankan Tugas Ray pada Kluster Jarak Jauh

Dengan Ray, Anda dapat menjalankan fungsi pada kluster sebagai tugas jarak jauh. Untuk menggunakan Ray, Anda perlu menambahkan dekorator @ray.remote pada fungsi yang ingin dijalankan dari jarak jauh. Alih-alih memanggil fungsi secara langsung, Anda menggunakan .remote() setelah nama fungsi. Panggilan jarak jauh ini memberi Anda objek future, yaitu semacam referensi ke hasil fungsi. Anda dapat mengambil hasil sebenarnya dengan menggunakan ray.get pada objek future tersebut.

# Define the square task.
@ray.remote
def square(x):
    return x * x


# Launch four parallel square tasks.
futures = [square.remote(i) for i in range(4)]


# Retrieve results.
print(ray.get(futures))

Penalaan Hiperparameter Paralel untuk Model Scikit-learn dengan Ray

Kode berikut melakukan pencarian acak untuk penalaan hiperparameter model support vector machine (SVM) menggunakan pustaka Ray untuk pemrosesan paralel. Kode dimulai dengan mengimpor pustaka yang diperlukan dan memuat set data tulisan tangan dari scikit-learn.

Ruang pencarian untuk hiperparameter didefinisikan dalam kamus bernama param_space. Model SVM dengan kernel radial basis function dibuat menggunakan modul sklearn.svm, dan objek RandomizedSearchCV diinstansiasi dengan model dan ruang pencarian tersebut.

Selanjutnya, kode menyiapkan Ray untuk pemrosesan paralel dan mengeksekusi pencarian hiperparameter menggunakan metode fit. Dengan memanfaatkan kemampuan pemrosesan paralel Ray, kode mempercepat proses pencarian, menjelajahi berbagai kombinasi hiperparameter untuk menemukan konfigurasi terbaik bagi model SVM.

import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import RandomizedSearchCV
from sklearn.svm import SVC
digits = load_digits()


param_space = {
    'C': np.logspace(-6, 6, 30),
    'gamma': np.logspace(-8, 8, 30),
    'tol': np.logspace(-4, -1, 30),
    'class_weight': [None, 'balanced'],
}


model = SVC(kernel='rbf')
search = RandomizedSearchCV(model, param_space, cv=5, n_iter=300, verbose=10)


import joblib
from ray.util.joblib import register_ray
register_ray()
with joblib.parallel_backend('ray'):
    search.fit(digits.data, digits.target)

Log saat kode berjalan:

Log saat kode berjalan

Kesimpulan

Dalam blog ini, kita mengeksplorasi kekuatan pemrosesan terdistribusi menggunakan kerangka kerja Ray di Python. Ray menyediakan solusi yang sederhana dan fleksibel untuk memparalelkan aplikasi AI dan Python, sehingga kita dapat memanfaatkan kekuatan kolektif dari banyak mesin atau sumber daya komputasi. Kita membahas fitur dan kemampuan utama kerangka kerja Ray, termasuk paralelisme tugas, komputasi terdistribusi, eksekusi fungsi jarak jauh, dan pemrosesan data terdistribusi.

Ingin menyelami kerangka pemrograman paralel selain Ray? Kenalan dengan Dask, penantang yang tangguh! Jika Anda ingin menjelajahi kemampuannya, lihat kursus menarik dari DataCamp, Parallel Programming with Dask in Python. Temukan dunia baru komputasi paralel dan maksimalkan potensi penuh aplikasi Python Anda!

Selain itu, pelajari bagaimana data scientist menggunakan cloud untuk menyebarkan solusi data science ke produksi atau memperluas daya komputasi dalam postingan blog kami tentang Cloud Computing and Architecture for Data Scientists.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Data Scientist, Pendiri & Kreator PyCaret

Topik
Python
Kecerdasan Buatan
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya