
Author(s): Ulrik Thyge Pedersen
Awalnya diterbitkan di Menuju AI.
Bersama Lebih Baik — Empat Contoh Bagaimana Rust Membuat Python Lebih Baik
Manfaatkan Rust untuk Mengoptimalkan Codebase Anda dengan Meningkatkan Performa dan Keamanan
Foto oleh K8 di Unsplash
Perkenalan
Python adalah bahasa pemrograman populer yang dikenal karena kemudahan penggunaan, fleksibilitas, dan keterbacaannya. Namun, sifatnya yang dinamis dan eksekusi yang ditafsirkan membuatnya relatif lebih lambat daripada bahasa kompilasi yang diketik secara statis seperti C dan Rust. Untuk mengatasi batasan ini, pengembang Python telah memanfaatkan Rust, bahasa pemrograman sistem, untuk meningkatkan kinerja dan keamanan kode mereka.
Rust menawarkan fitur seperti keamanan memori, keamanan thread, dan abstraksi tanpa biaya, menjadikannya pilihan yang sangat baik untuk membangun perpustakaan berkinerja tinggi. Kemampuan Rust untuk berinteraksi dengan mudah dengan kode C dan C++ menjadikannya kandidat ideal untuk membangun pustaka Python yang memerlukan eksekusi berkecepatan tinggi dan manajemen memori.
Pada artikel ini, kita akan menjelajahi beberapa pustaka Python populer yang seluruhnya atau sebagian ditulis dalam Rust, membahas fitur, manfaat, dan bagaimana mereka dapat membantu pengembang Python mengoptimalkan basis kode mereka. Mari kita mulai!
Polars — Fast DataFrames
Polars adalah perpustakaan manipulasi data yang sangat cepat untuk Python dan Rust yang sepenuhnya diterapkan di Rust. Ini menyediakan API DataFrame yang mirip dengan perpustakaan panda dan dapat menangani kumpulan data besar dalam memori, mengungguli panda dalam hal kecepatan dan penggunaan memori. Polars dirancang untuk menyediakan antarmuka yang familier dan ramah pengguna sekaligus memanfaatkan fitur keamanan dan kinerja memori Rust.
Berikut adalah contoh bagaimana Polars dapat digunakan untuk memfilter baris dari DataFrame:
Selain manfaat kinerjanya, Polars juga menyediakan sejumlah fitur manajemen memori yang dapat membantu mencegah kebocoran memori dan meningkatkan stabilitas basis kode Python Anda secara keseluruhan. Dengan memanfaatkan sistem kepemilikan dan peminjaman Rust, Polars memastikan bahwa memori dikelola dengan aman dan efisien tanpa memerlukan manajemen memori manual oleh pengguna.
Secara keseluruhan, Polars adalah pilihan yang sangat baik untuk aplikasi Python intensif data yang membutuhkan manipulasi data dan manajemen memori berkecepatan tinggi. API intuitifnya dan kompatibilitas penuh dengan perpustakaan panda membuatnya mudah untuk diintegrasikan ke dalam basis kode yang ada dan mulai melihat peningkatan kinerja langsung.
Foto oleh Hans-Jurgen Mager di Unsplash
TikToken— Tokenizer OpenAI
TikToken adalah pustaka Python yang dikembangkan oleh OpenAI yang menyediakan tokenisasi teks bahasa alami yang cepat dan efisien. Perpustakaan sebagian diimplementasikan di Rust, yang membantu meningkatkan kinerja dan manajemen memorinya.
Berikut adalah contoh cara menggunakan perpustakaan TikToken untuk menandai sepotong teks:
TikToken juga menyediakan sejumlah model tokenisasi lainnya, termasuk WordPiece, BytePairEncoding (BPE), dan Unigram. Ini juga memungkinkan model tokenisasi khusus untuk ditentukan dan dilatih.
Dengan memanfaatkan kinerja Rust dan fitur manajemen memori, Tokenizers dapat menangani kumpulan data besar secara efisien, menjadikannya pilihan yang sangat baik untuk aplikasi pemrosesan bahasa alami (NLP) yang memerlukan tokenisasi yang cepat dan akurat.
Selain kecepatan dan efisiensinya, TikToken juga menyediakan sejumlah fitur untuk menyempurnakan proses tokenisasi, seperti opsi padding dan pemotongan yang dapat dikonfigurasi, masking level token dan input level, dan dukungan untuk berbagai format pengkodean.
Secara keseluruhan, TikToken adalah perpustakaan yang kuat untuk pengembang Python yang bekerja dengan teks bahasa alami, menawarkan kinerja dan fleksibilitas untuk berbagai aplikasi NLP.
Foto oleh Zac Wolff di Unsplash
River — Pembelajaran Mesin Online
River adalah perpustakaan Python untuk pembelajaran mesin online yang dikembangkan oleh Online-ML. Pustaka ini sepenuhnya diimplementasikan di Rust, menjadikannya salah satu pustaka pembelajaran mesin online tercepat yang tersedia di Python.
Salah satu manfaat utama River adalah kemampuannya untuk melatih model pembelajaran mesin pada aliran data, yang merupakan sumber data berkelanjutan dan berpotensi tak terbatas. Ini adalah fitur berharga untuk aplikasi seperti deteksi penipuan, deteksi anomali, dan kasus penggunaan lainnya yang memerlukan analisis data masuk secara real-time.
Berikut adalah contoh cara menggunakan River untuk melatih model regresi logistik pada aliran data:
Dengan mengimplementasikan perpustakaan di Rust, River dapat memanfaatkan manfaat kinerja dari manajemen memori Rust dan pengoptimalan tingkat rendah. Sistem kepemilikan Rust memungkinkan River mengoptimalkan penggunaan memori dengan meminimalkan jumlah salinan data dan mengurangi jumlah waktu yang dihabiskan untuk pengumpulan sampah. Rust juga menyediakan abstraksi tingkat tinggi untuk operasi tingkat rendah, seperti instruksi SIMD, yang dapat meningkatkan kinerja algoritme pembelajaran mesin.
Secara keseluruhan, River adalah perpustakaan yang kuat untuk pembelajaran mesin online di Python, menawarkan kecepatan dan fleksibilitas untuk berbagai kasus penggunaan. Dengan kinerjanya yang cepat dan dukungan untuk aliran data, River adalah pilihan yang sangat baik bagi pengembang yang mengerjakan aplikasi pembelajaran mesin waktu nyata.
Foto oleh kazuend di Unsplash
HyperJSON — JSON yang sangat cepat
HyperJSON adalah library Python untuk encoding dan decoding JSON yang diimplementasikan di Rust. Pustaka ini dirancang agar lebih cepat dan lebih efisien daripada modul json bawaan di Python.
Berikut adalah contoh cara menggunakan HyperJSON untuk menyandikan dan mendekode JSON:
Dengan menerapkan pustaka di Rust, HyperJSON dapat memanfaatkan manfaat kinerja Rust, termasuk keamanan memori dan penanganan memori yang efisien. Ini memungkinkan HyperJSON untuk menyandikan dan mendekode JSON lebih cepat daripada modul json bawaan di Python.
HyperJSON juga menyediakan beberapa fitur tambahan, seperti kemampuan untuk menyandikan dan mendekode JSON dengan dukungan untuk nilai NaN dan infinity, yang tidak didukung oleh modul json bawaan di Python. HyperJSON juga menyediakan API yang lebih fleksibel untuk bekerja dengan data JSON, memungkinkan pengguna untuk menyesuaikan proses encoding dan decoding agar lebih sesuai dengan kebutuhan mereka.
Secara keseluruhan, HyperJSON adalah perpustakaan yang kuat dan efisien untuk bekerja dengan data JSON dengan Python. Penggunaan Rust memberikan manfaat kinerja yang signifikan dibandingkan modul json bawaan, menjadikannya pilihan tepat untuk aplikasi yang memerlukan enkode dan dekode JSON yang cepat dan efisien.
Foto oleh Pankaj Patel di Unsplash
Kesimpulan
Pada artikel ini, kita telah menjelajahi beberapa pustaka Python yang ditulis dalam Rust, atau sebagian ditulis dalam Rust, dan bagaimana mereka dapat meningkatkan keamanan dan kinerja kode Python.
Polars adalah perpustakaan manipulasi data yang diimplementasikan sepenuhnya di Rust, memberikan kinerja tinggi dan manajemen memori yang efisien. TikToken adalah tokenizer OpenAI, sebagian ditulis dalam Rust, yang menyediakan implementasi yang lebih cepat dan hemat memori daripada tokenizer bawaan dalam modul tokenize Python. River dari Online-ML adalah pustaka pembelajaran mesin yang mengintegrasikan kode Rust untuk menyediakan implementasi model pembelajaran mesin yang lebih cepat dan lebih efisien di Python. Terakhir, HyperJSON adalah library JSON yang diimplementasikan di Rust yang menyediakan encoding dan decoding data JSON yang lebih cepat dan lebih efisien.
Secara keseluruhan, pustaka ini mendemonstrasikan kekuatan dan fleksibilitas Rust sebagai bahasa untuk mengimplementasikan kode berkinerja tinggi yang dapat diintegrasikan dengan Python. Dengan memanfaatkan kekuatan Rust, pustaka ini menyediakan implementasi fungsionalitas yang lebih cepat dan lebih efisien yang sangat penting bagi banyak aplikasi Python. Dengan demikian, perpustakaan ini adalah alat yang berharga bagi pengembang yang ingin mengoptimalkan kode Python mereka untuk kecepatan dan efisiensi.
Terima kasih telah membaca cerita saya!
Berlangganan gratis untuk mendapatkan pemberitahuan ketika saya menerbitkan cerita baru!
Temukan saya di LinkedIn dan Kaggle!
…dan saya akan senang dengan tanggapan Anda!
Diterbitkan melalui Menuju AI