Topik ini menjelaskan cara menggunakan kelompok sumber daya RAY di Alibaba Cloud Lindorm. Anda akan mempelajari cara menyiapkan lingkungan, mengirim pekerjaan, memantau statusnya, dan melihat log.
Kelompok sumber daya RAY saat ini berada dalam pratinjau undangan. Untuk meminta akses, hubungi dukungan teknis Lindorm (ID DingTalk: s0s3eg3).
Prasyarat
-
Anda telah mengaktifkan LindormTable Lindorm.
-
Anda telah mengaktifkan compute engine Lindorm.
-
Anda telah mengaktifkan fitur kelompok sumber daya RAY.
-
Anda telah menambahkan alamat IP client ke daftar putih Lindorm.
Siapkan lingkungan
Masuk ke Konsol Lindorm. Di pojok kiri atas halaman, pilih wilayah instans tersebut. Pada halaman Instances, klik ID instans target atau klik View Instance Details di kolom Actions untuk instans tersebut.
Pada halaman Instance Details, di bagian Configurations, klik Resource Groups di kolom Actions pada Compute Engine.
-
Pada halaman Resource Group Details, arahkan kursor mouse ke WebUI di kolom Actions pada kelompok sumber daya RAY untuk melihat alamat WebUI-nya. Contoh:
http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/. -
Instal Ray client. Untuk Python 3, jalankan
pip3 install ray[default].CatatanSetelah instalasi, Anda dapat menjalankan
ray --versionuntuk memverifikasi bahwa instalasi berhasil.
Otentikasi kelompok sumber daya RAY
Kelompok sumber daya RAY menggunakan token dari Lindorm Compute untuk otentikasi, mencegah client yang tidak sah mengakses API kluster dan mengirim pekerjaan.
Token digunakan untuk otentikasi sumber daya komputasi.
Konfigurasikan otentikasi pekerjaan melalui CLI
Anda dapat mengonfigurasi otentikasi baris perintah untuk kelompok sumber daya RAY dengan dua cara.
-
Metode 1: Kirim token menggunakan parameter --headers.
ray job submit \ --address "http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/" \ --headers '{"Authorization": "Bearer xxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx"}' \ --runtime-env-json '{"working_dir": "."}' \ -- python yourRayJob.py -
Metode 2: Tetapkan variabel lingkungan RAY_AUTH_MODE dan RAY_AUTH_TOKEN.
export RAY_AUTH_MODE=token export RAY_AUTH_TOKEN=xxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx ray job submit \ --address "http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/" \ --runtime-env-json '{"working_dir": "."}' \ -- python yourRayJob.pyCatatanMetode ini memerlukan versi Ray client 2.52.0 atau lebih baru.
Konfigurasikan otentikasi Ray Dashboard
Saat pertama kali mengakses WebUI kelompok sumber daya RAY, Anda harus memasukkan token.
Kirim pekerjaan RAY
-
Di client Anda, siapkan pekerjaan RAY.
Dalam contoh ini, kelompok sumber daya RAY memproses file
test-datadi buckettest-bucketObject Storage Service (OSS) dan mengunggah hasilnya ke OSS. Logika pekerjaan didefinisikan dalam skripray-oss-example.py, yang berada di direktoriray_job_testpada client.import ray import sys from ossfs import OSSFileSystem import tempfile import ossfs ray.init() @ray.remote def process(oss_key: str, oss_secret: str, filename: str): print("Processing %s" % filename) fs = oss_filesystem(oss_key, oss_secret) # Download to local tmp_filename = tempfile.NamedTemporaryFile(delete=False).name fs.get_file(filename, tmp_filename) print("tmp file name is %s" % tmp_filename) with open(tmp_filename, 'rb') as f: content = f.read() print(content) # Put to OSS result_remote_filename = f"{filename}_result" fs.put_file(tmp_filename, result_remote_filename) return "success" def oss_filesystem(oss_key: str, oss_secret: str) -> OSSFileSystem: return ossfs.OSSFileSystem( endpoint="oss-cn-hangzhou-internal.aliyuncs.com", # OSS Endpoint key=oss_key, secret=oss_secret ) if __name__ == "__main__": if (len(sys.argv) < 2): raise ValueError("python %s oss_key oss_secret" % __file__) oss_key = sys.argv[1] oss_secret = sys.argv[2] base = "/test-bucket/test-data/" # /<bucketname>/path fs = oss_filesystem(oss_key, oss_secret) files = [item['name'] for item in fs.ls(base) if item['name'] != base] for file in files: print("Head processing %s" % file) result = ray.get(process.remote(oss_key, oss_secret, file)) print(f"{file} is processed, status is {result}") ray.shutdown()Parameter
Parameter
Contoh
Deskripsi
Endpoint
oss-cn-hangzhou-internal.aliyuncs.comTitik akhir OSS. Lihat Wilayah dan titik akhir untuk menemukan titik akhir yang benar.
Base
/test-bucket/test-data/Jalur ke file OSS yang ingin diproses.
Catatan-
Ray memungkinkan Anda mendeklarasikan sumber daya yang diperlukan untuk setiap task atau actor dalam dekorator
@ray.remote(). Misalnya, Anda dapat menggunakannum_cpusdannum_gpusuntuk menentukan sumber daya CPU dan GPU yang diperlukan. Untuk informasi selengkapnya tentang parameter tersebut, lihat dokumentasi. -
Ray mendukung penjadwalan tugas pemrosesan data bergaya pipeline pada sumber daya heterogen, seperti CPU dan GPU, di beberapa node. Metode ini secara signifikan meningkatkan efisiensi pemrosesan data dibandingkan pemrosesan batch tradisional. Untuk informasi selengkapnya, lihat dokumentasi.
-
-
Kirim pekerjaan ke kelompok sumber daya RAY yang ditentukan.
-
Buka direktori tempat pekerjaan berada dengan menjalankan
cd ray_job_test. -
Kirim pekerjaan dengan menjalankan
ray job submit --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --runtime-env-json '{"working_dir": "."}' --address RAY_ADDRESS -- python ray-oss-example.py oss_key oss_secret.Parameter
Parameter
Contoh
Deskripsi
RAY_ADDRESS
http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/Alamat WebUI kelompok sumber daya RAY.
my_job.py
ray-oss-example.pyNama skrip yang akan dijalankan.
oss_key
yourAccessKeyIDID AccessKey dan AccessKey Secret dari Akun Alibaba Cloud atau Pengguna RAM yang digunakan untuk mengakses file OSS. Untuk mendapatkan pasangan Kunci Akses, lihat Dapatkan AccessKey.
oss_secret
yourAccessKeySecretRAY_AUTH_TOKEN
8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2
Token yang diperlukan untuk otentikasi dengan kelompok sumber daya RAY.
Contoh
ray job submit --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --runtime-env-json '{"pip": ["ossfs"], "working_dir": "."}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ -- python ray-oss-example.py yourAccessKeyID yourAccessKeySecretPerintah ini mengembalikan ID pengiriman (
SUBMISSION_ID) dari pekerjaan yang dikirim, misalnyaraysubmit_gmSnPSFqmEXG****, yang Anda perlukan untuk memeriksa status pekerjaan dari command line.
-
Lihat status pekerjaan
Anda dapat memantau status real-time, log, dan daftar pekerjaan di Ray Dashboard dengan membuka alamat WebUI kelompok sumber daya RAY di browser.
Manage jobs
Anda dapat melihat dan mengelola pekerjaan dengan beberapa cara:
-
Command line: Gunakan subperintah ray job untuk melihat dan mengelola pekerjaan. Untuk informasi selengkapnya, lihat Ray Jobs CLI API.
-
Python SDK: Ray menyediakan pustaka Python yang memungkinkan Anda menggunakan JobSubmissionClient untuk melihat dan mengelola pekerjaan. Untuk informasi selengkapnya, lihat Python SDK API.
-
REST API: Ray menyediakan REST API yang dapat Anda gunakan untuk melihat dan mengelola pekerjaan dengan membuat permintaan HTTP. Untuk informasi selengkapnya, lihat Ray Jobs REST API.
CatatanGunakan alamat WebUI sebagai URL titik masuk untuk mengakses Ray REST API.
Contoh berikut menunjukkan cara melihat dan mengelola pekerjaan dari command line.
-
Lihat status pekerjaan.
ray job status --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESS SUBMISSION_IDContoh:
ray job status --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ raysubmit_gmSnPSFqmEXG**** -
Lihat log pekerjaan.
ray job logs --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESS SUBMISSION_IDContoh:
ray job logs --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ raysubmit_gmSnPSFqmEXG**** -
Lihat daftar pekerjaan.
ray job list --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESSContoh:
ray job list --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ -
Hentikan pekerjaan.
ray job stop --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESS SUBMISSION_IDContoh:
ray job stop --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ raysubmit_gmSnPSFqmEXG****