Anda di halaman 1dari 33

Diterjemahkan dari bahasa Inggris ke bahasa Indonesia - www.onlinedoctranslator.

com

Komputasi GPU dengan


Spark dan Python

Afif A. Iskandar
(Insinyur Riset AI)
Bio saya

Afif A. Iskandar
Insinyur & Pendidik Riset Kecerdasan Buatan

- Insinyur Riset Kecerdasan Buatan @ Unicorn


Startup
- Pembuat Konten & Pendidik @
NgodingPython

Afif A. Iskandar
Penggemar AI
S1 Matematika @ Universitas Indonesia S2 Ilmu Komputer @
Universitas Indonesia
Ringkasan

● Mengapa Python?
● Numba : Python JIT Compiler untuk CPU dan GPU
● PySpark : Pemrograman Terdistribusi dengan Python
● Tutorial Langsung
● Kesimpulan
Mengapa Python?
Python Cepat
untuk menulis, menguji, dan mengembangkan kode
Python Cepat
karena itu ditafsirkan, diketik secara dinamis dan tingkat tinggi
Python Lambat
Untuk Eksekusi berulang dari tugas tingkat rendah
Python Lambat, Karena

● Python adalah level tinggi, ditafsirkan dan


diketik secara dinamis bahasa
● Setiap operasi Python dilengkapi dengan
overhead pengecekan tipe kecil
● Dengan banyak operasi kecil yang berulang (misalnya dalam
satu lingkaran), overhead ini menjadi signifikan!
Paradoks...

apa yang membuat Python cepat


untuk pengembangan

apa yang membuat Python lambat


untuk eksekusi kode
Apakah ada cara lain?

- Beralih bahasa untuk kecepatan dalam proyek Anda bisa menjadi


sedikit kikuk:
- Terkadang boilerplate membosankan untuk menerjemahkan tipe data
melintasi batasan bahasa
- Menghasilkan fungsi yang dikompilasi untuk berbagai tipe
data bisa jadi sulit
- Bagaimana kita bisa menggunakan perangkat keras canggih, seperti GPU?
mati rasa
Mengkompilasi Python

● Numba adalah kompiler open-source, tipe-spesialisasi untuk fungsi


Python
● Dapat menerjemahkan sintaks Python ke dalam kode mesin jika semua jenis
informasi dapat disimpulkan saat fungsi dipanggil.
● Diimplementasikan sebagai modul. Tidak menggantikan juru bahasa Python!
● Pembuatan kode dilakukan dengan:
○. LLVM (untuk CPU)
○. NVVM (untuk GPU CUDA).
Bagaimana Numba Bekerja?
Mati rasa pada CPU
n umba di CPU
Kernel CUDA dengan Python
Kernel CUDA dengan Python
Kernel CUDA dengan Python
Memanggil Kernel dari Python
Menangani Memori Perangkat Secara Langsung
Alat Tingkat Lebih Tinggi: GPU ufuncs
Alat Tingkat Lebih Tinggi: GPU ufuncs
Kinerja GPU ufuncs
PySpark
Apa itu Apache Spark

● API dan mesin eksekusi untuk komputasi terdistribusi pada sebuah cluster
● Berdasarkan konsep Kumpulan Data Terdistribusi Tangguh (RDD)
○. Himpunan data: Kumpulan elemen independen (file, objek, dll) dalam memori dari
perhitungan sebelumnya, atau berasal dari beberapa penyimpanan data
○. Didistribusikan: Elemen dalam RDD dikelompokkan ke dalam partisi dan dapat disimpan
pada node yang berbeda
○. Ulet: RDD ingat bagaimana mereka dibuat, jadi jika sebuah node turun,
Spark dapat menghitung ulang elemen yang hilang di node lain
DAG Komputasi

Gambar dari:
https://databricks.com/blog/2015/06/22/understanding-your-spark-application-through-visualization.html
Bagaimana Skala Spark?

● Semua skala cluster adalah tentang meminimalkan I/O. Spark melakukan ini dalam beberapa

cara:

○. Simpan hasil antara di memori dengan rdd.cache()


○. Pindahkan komputasi ke data bila memungkinkan (fungsinya kecil
dan datanya besar!)
○. Menyediakan komputasi primitif yang mengekspos paralelisme dan
meminimalkan komunikasi antar pekerja: peta, filter, sampel, perkecil,

Python dan Spark

● Spark diimplementasikan di Java & Scala di JVM


● Dukungan API penuh untuk Scala, Java, dan Python (+ dukungan terbatas untuk R)
● Bagaimana cara kerja Python, karena tidak berjalan di JVM? tidak termasuk
IronPython)
tutorial
Tautan Buku Catatan: TBA
Kesimpulan
PySpark dan Numba untuk Cluster GPU

● Numba memungkinkan Anda membuat fungsi CPU dan CUDA yang dikompilasi
tepat di dalam aplikasi Python Anda.
● Numba dapat digunakan dengan Spark untuk mendistribusikan dan menjalankan kode Anda dengan

mudah pada pekerja Spark dengan GPU

● Ada ruang untuk peningkatan dalam cara Spark berinteraksi dengan GPU, tetapi
semuanya berhasil.
● Waspadalah terhadap penggandaan biaya inisialisasi dan kompilasi tetap secara tidak
sengaja.
Terima kasih

Anda mungkin juga menyukai