DSC , sebuah pustaka tensor baru yang kompatibel dengan PyTorch yang dirancang untuk inferensi machine learning, telah menarik perhatian para developer karena desain API yang bersih dan dependensi yang minimal. Namun, diskusi komunitas telah mengungkap kekhawatiran performa yang signifikan yang dapat berdampak pada adopsinya di lingkungan produksi.
Pustaka ini, yang dibuat oleh developer nirw4nna , bertujuan menyediakan interface mirip NumPy dengan dukungan neural network built-in dan perpindahan backend yang mulus antara CPU dan CUDA . DSC menampilkan alokasi memori kustom untuk menghindari panggilan malloc runtime dan mendukung berbagai bahasa pemrograman melalui API C bersama.
Fitur Utama DSC:
- Pustaka tensor yang kompatibel dengan PyTorch dan memiliki API mirip NumPy
- Dukungan jaringan saraf terintegrasi dengan nn.Module
- Dukungan multi-backend (CPU dan CUDA)
- Alokator memori khusus dengan pra-alokasi
- Dependensi eksternal yang minimal
- API tingkat rendah yang kompatibel dengan C dan dibungkus dalam Python
Hambatan Performa dari Desain Interface
Isu paling mendesak yang diidentifikasi oleh komunitas berpusat pada penggunaan ctypes DSC untuk komunikasi Python-ke-C. Beberapa developer telah menunjukkan bahwa pilihan desain ini menciptakan overhead performa yang substansial dibandingkan dengan alternatif modern.
Overhead panggilan menggunakan ctypes vs nanobind/pybind sangat besar... ctypes hanya memanggil libffi yang dikenal sebagai cara paling lambat untuk melakukan ffi.
Kesenjangan performa ini menjadi kritis untuk beban kerja machine learning di mana setiap mikrodetik sangat berarti. Sang pencipta mengakui kekhawatiran ini dan menyatakan ketertarikan untuk mengeksplorasi nanobind , sebuah solusi binding yang lebih efisien yang mengkompilasi interface daripada menggunakan panggilan fungsi asing runtime.
Wawasan Perbandingan Performa:
- Interface ctypes menciptakan overhead panggilan yang signifikan dibandingkan nanobind/pybind
- Generasi kernel C++ eksperimental menunjukkan peningkatan performa sekitar 20%
- llama.cpp tetap lebih cepat karena kernel yang dioptimalkan secara manual
- Arsitektur saat ini menggunakan beberapa kernel terpisah (misalnya, 5 untuk softmax)
Keputusan Arsitektur Dalam Pengawasan
Anggota komunitas juga mempertanyakan pendekatan arsitektur secara keseluruhan. Beberapa menyarankan bahwa penggunaan template dan switch statement yang berat oleh DSC mungkin akan mendapat manfaat dari representasi intermediate mirip compiler. Sang pencipta mengkonfirmasi pengamatan ini, membagikan bahwa kerja eksperimental dalam menghasilkan kernel C++ yang dioptimalkan menunjukkan peningkatan performa sekitar 20% dibandingkan pendekatan multi-kernel saat ini.
Implementasi C++ bergaya C pustaka ini telah memicu perdebatan tentang praktik pengembangan modern. Sementara beberapa developer lebih suka kode eksplisit tingkat rendah untuk penalaran performa, yang lain mengadvokasi optimisasi yang didorong profiler daripada asumsi tentang efisiensi generasi kode.
Proyek Pembelajaran dengan Aspirasi Produksi
Awalnya dikonsep sebagai proyek pembelajaran personal yang terinspirasi oleh llama.cpp , DSC telah berkembang melampaui asal-usul edukasinya. Sang pencipta mengakui bahwa meskipun llama.cpp tetap lebih cepat karena kernel yang dioptimalkan secara manual untuk arsitektur spesifik, DSC bertujuan menyediakan toolkit yang lebih general-purpose yang membuat eksperimen model lebih mudah bagi developer tanpa latar belakang ML yang mendalam.
Proyek ini saat ini mendukung operasi tensor dasar dan dapat memuat model dari file safetensors, dengan rencana menambahkan dukungan file GGUF . Namun, kekhawatiran performa yang diangkat oleh komunitas menunjukkan bahwa perubahan arsitektur yang signifikan mungkin diperlukan sebelum DSC dapat bersaing dengan framework yang sudah mapan di lingkungan produksi.
Diskusi ini menyoroti tantangan berkelanjutan dalam ruang infrastruktur ML: menyeimbangkan kemudahan penggunaan dengan optimisasi performa sambil mempertahankan arsitektur kode yang bersih dan dapat dipelihara.
Referensi: dsc