Fungsi yang ditentukan pengguna dan berjalan di CPU dapat mengganggu kueri Apache Spark yang selain itu dipercepat GPU. Plugin cuDF umumnya tidak dapat menerjemahkan kode UDF sembarang: plugin mengubah data kolumnar menjadi baris, menjalankan fungsi di CPU, lalu mengubah hasilnya kembali. Panduan NVIDIA tanggal 13 Oktober menguraikan kemampuan agen untuk menulis ulang UDF sebagai Spark SQL, opsi kolumnar RapidsUDF, atau RapidsUDF yang didukung CUDA. Pertanyaan penting bagi teknisi data adalah apakah satu penulisan ulang menghasilkan jawaban yang sama, tetap berjalan di GPU dalam rencana yang relevan, dan meningkatkan pekerjaan sebenarnya.

Ini adalah panduan berbasis dokumentasi. BIG CHANGE tidak menjalankan kemampuan tersebut, menguji UDF, atau mengukur beban kerja Spark.

Perubahan besar

  • Apa yang berubah: NVIDIA menerbitkan alur kerja agen bertahap untuk menghasilkan pengujian UDF, mengonversi fungsi, menilai hasil konversi, membandingkan versi CPU dan GPU, serta secara opsional mengoptimalkan implementasi cuDF.
  • Siapa yang terbantu: Teknisi dengan pipeline Spark RAPIDS/cuDF berkemampuan GPU dan UDF CPU tertentu yang menghambatnya.
  • Yang perlu diverifikasi: Keluaran yang cocok pada kasus tepi yang representatif, rencana eksekusi tanpa fallback CPU yang ditargetkan, serta kinerja tingkat pekerjaan yang dapat diulang pada perangkat keras yang dimaksud.

Sebelum memulai

Pilih satu UDF yang memang boleh Anda bagikan dengan agen pemrograman. Jangan masukkan kredensial, baris masukan sensitif, atau dataset milik perusahaan ke prompt kecuali agen dan lingkungannya telah disetujui untuk mengaksesnya. Berikan kode sumber UDF, lokasi pendaftaran dan pemanggilannya, skema yang relevan, perilaku null dan kesalahan yang diharapkan, serta contoh uji kecil yang diizinkan. Catat rencana dan waktu pekerjaan Spark saat ini sebagai dasar perbandingan.

Dokumen README kemampuan adalah titik awal alur kerja yang berversi. Dokumen itu mensyaratkan Maven dan JDK untuk membangun UDF, ditambah tumpukan Spark/RAPIDS/cuDF/CUDA yang kompatibel serta GPU. Sebelum memasang apa pun, periksa panduan kompatibilitas plugin terbaru terhadap distribusi Spark, versi Scala, driver, build CUDA, dan GPU Anda. GPU cloud adalah alternatif perangkat lokal, dengan biaya waktu instans dan penyimpanan dari penyedia. Penggunaan agen/model juga dapat berbiaya. README menyediakan kerangka proyek dan contoh, tetapi tidak membuktikan kompatibilitas atau kinerja untuk klaster Anda.

Tulis ulang dan periksa satu fungsi

  1. Pastikan dahulu perilaku asli. Minta agen menggunakan udf-gen-test pada UDF yang dipilih, lalu periksa sendiri pengujian yang dihasilkan. Tambahkan kasus nyata dari kontraknya: null, string atau koleksi kosong, masukan cacat, nilai batas, presisi numerik, urutan, dan perilaku kesalahan jika relevan. Jalankan UDF asli terhadap semua kasus itu. Hasil yang diharapkan adalah rangkaian pengujian dasar yang lulus, belum penulisan ulang. Contoh fungsi suhu NVIDIA secara eksplisit mengembalikan null untuk masukan null; penulisan ulang SQL hanya berguna jika perilaku itu juga bertahan dengan tipe data dan konfigurasi Spark Anda.
  2. Pilih sasaran termudah yang didukung. Untuk logika yang dapat dinyatakan dengan Spark SQL atau ekspresi DataFrame, minta udf-convert-to-sql. Ini membuat ekspresi terlihat oleh planner Spark dan dapat memungkinkan plugin mengganti operasi yang didukung dengan padanan GPU. Jika SQL tidak dapat menyatakan logika yang diperlukan dengan jelas, minta udf-convert-to-cudf: RapidsUDF.evaluateColumnar menerima vektor kolom GPU dan menyusun operasi cuDF. Cadangkan udf-convert-to-cuda untuk logika yang memerlukan kernel khusus melalui JNI dan beban implementasi serta pemeliharaan tambahannya memang layak. Ini adalah opsi untuk dievaluasi, bukan janji bahwa setiap operasi berjalan di GPU.
  3. Tinjau konversi sebelum menerimanya. Bandingkan implementasi yang ditulis ulang dengan versi asli dan jalankan keduanya pada kasus uji yang sama-sama disetujui. Repositori juga mencantumkan udf-judge-conversion untuk tinjauan terpisah atas kekurangan pengujian dan bug konversi. Periksa tipe, perambatan null, pembulatan, pengecualian, urutan, dan pengelolaan sumber daya. Untuk penulisan ulang cuDF, periksa masa hidup kolom sementara dan skalar; contoh Scala dalam tutorial menggunakan sumber daya dengan cakupan terkelola dan mengembalikan kolom hasil. Rangkaian pengujian buatan yang lulus merupakan bukti berguna, tetapi manusia tetap harus menilai apakah pengujian itu mencakup kontrak fungsi.
  4. Periksa rencana eksekusi. Jalankan kueri yang diubah dengan plugin cuDF aktif dan periksa rencana serta diagnostik RAPIDS untuk operator sasaran dan konversi di sekitarnya. Ikhtisar plugin NVIDIA menyebutkan bahwa operasi SQL yang tidak didukung akan fallback ke eksekusi CPU Spark. Jika rencana masih menunjukkan UDF atau operator di sekitarnya berjalan di CPU, cari ekspresi atau tipe yang tidak didukung dan tinjau kembali pilihan sasaran. Simpan rencana sebelum dan sesudah beserta hasil pengujian. Kelas bernama RapidsUDF saja tidak membuktikan seluruh pekerjaan tetap berjalan di GPU.
  5. Ukur pekerjaan yang memang akan dijalankan. Gunakan udf-benchmark untuk membandingkan implementasi asli dan yang diubah dengan masukan, ukuran klaster, konfigurasi, dan metode pengukuran yang sama. Catat waktu pekerjaan, ukuran masukan, kesetaraan keluaran, dan penggunaan sumber daya GPU/CPU. Ulangi untuk mengamati efek startup, cache, atau perebutan sumber daya. Hasil yang diharapkan adalah perbandingan yang dapat direproduksi, sekalipun penulisan ulang justru lebih lambat. Jika versi cuDF yang benar lambat, repositori menawarkan udf-optimize-cudf untuk membuat profil dan merevisinya; ulangi pemeriksaan kebenaran dan rencana setelah setiap perubahan.

Seperti apa hasil yang berhasil

Kandidat siap untuk tinjauan kode biasa jika keluaran UDF yang dipilih sesuai dengan perilaku terdokumentasi pada kasus yang disetujui, rencana eksekusi tidak lagi memuat fallback CPU sasaran, dan tolok ukur representatif menunjukkan hasil menyeluruh yang layak. Jika ada pemeriksaan gagal, pertahankan implementasi asli, persempit penulisan ulang ke ekspresi yang bermasalah, lalu ulangi tahap itu. Ketidakcocokan semantik lebih penting daripada tolok ukur yang lebih cepat; rencana yang tidak berubah berarti jalur GPU yang dimaksud belum terbukti.

NVIDIA melaporkan satu contoh produksi ketika UDF ber-cuDF mengurangi waktu operator dari 274,55 menjadi 12,78 jam pada beban kerja 600 miliar baris. Angka itu adalah waktu operator yang dilaporkan vendor untuk beban kerja tersebut, bukan perkiraan bagi UDF lain atau hasil pekerjaan dari awal hingga akhir. Klaim 22 kali yang lebih luas perlu dibaca dalam konteks itu. Kapasitas GPU, perpindahan data, operasi yang tidak didukung, tinjauan kode, dan biaya cloud dapat mengubah hasil pada pipeline Anda.

Sumber dan bacaan lanjutan

  • NVIDIA Technical Blog, 13 Oktober 2026: menjelaskan fallback CPU, pilihan SQL/cuDF/CUDA, empat tahap alur kerja, serta satu-satunya contoh kinerja yang dikutip perusahaan. Angka kinerjanya dilaporkan vendor.
  • Kemampuan cuDF Spark NVIDIA, revisi repositori yang dipatok: titik masuk berversi untuk kerangka proyek dan kemampuan individual. Halaman GitHub yang dipatok tidak tersedia melalui jalur pengambilan kami; detail alur kerja dicocokkan dengan tutorial NVIDIA dan README kemampuan yang dapat diakses di cabang utama repositori.
  • Ikhtisar plugin cuDF untuk Apache Spark: informasi pengaturan dan kompatibilitas terkini, serta aturan eksplisit bahwa operasi yang tidak didukung berjalan di CPU Spark. Periksa daftar kompatibilitas khusus rilis sebelum implementasi.