Alternatif PyTorch DSC Menghadapi Halangan Prestasi daripada Pilihan Antara Muka ctypes

Pasukan Komuniti BigGo
Alternatif PyTorch DSC Menghadapi Halangan Prestasi daripada Pilihan Antara Muka ctypes

DSC , perpustakaan tensor yang serasi dengan PyTorch yang direka untuk inferens pembelajaran mesin, telah menarik perhatian pembangun kerana reka bentuk API yang bersih dan kebergantungan yang minimum. Walau bagaimanapun, perbincangan komuniti telah mendedahkan kebimbangan prestasi yang ketara yang boleh memberi kesan kepada penggunaannya dalam persekitaran pengeluaran.

Perpustakaan ini, yang dicipta oleh pembangun nirw4nna , bertujuan untuk menyediakan antara muka seperti NumPy dengan sokongan rangkaian neural terbina dalam dan pertukaran backend yang lancar antara CPU dan CUDA. DSC menampilkan peruntukan memori tersuai untuk mengelakkan panggilan malloc semasa runtime dan menyokong pelbagai bahasa pengaturcaraan melalui API C yang dikongsi.

Ciri-ciri Utama DSC:

  • Perpustakaan tensor yang serasi dengan PyTorch menggunakan API seperti NumPy
  • Sokongan rangkaian neural terbina dalam dengan nn.Module
  • Sokongan berbilang backend ( CPU dan CUDA )
  • Pengalokasi memori tersuai dengan pra-peruntukan
  • Kebergantungan luaran yang minimum
  • API peringkat rendah yang serasi dengan C dibungkus dalam Python

Halangan Prestasi daripada Reka Bentuk Antara Muka

Isu paling mendesak yang dikenal pasti oleh komuniti berpusat pada penggunaan ctypes oleh DSC untuk komunikasi Python-ke-C. Beberapa pembangun telah menunjukkan bahawa pilihan reka bentuk ini mewujudkan overhed prestasi yang besar berbanding dengan alternatif moden.

Overhed panggilan menggunakan ctypes berbanding nanobind/pybind adalah sangat besar... ctypes hanya memanggil keluar kepada libffi yang diketahui sebagai cara paling perlahan untuk melakukan ffi.

Jurang prestasi ini menjadi kritikal untuk beban kerja pembelajaran mesin di mana setiap mikrosaat adalah penting. Pencipta mengakui kebimbangan ini dan menyatakan minat untuk meneroka nanobind , penyelesaian pengikatan yang lebih cekap yang menyusun antara muka berbanding menggunakan panggilan fungsi asing runtime.

Wawasan Perbandingan Prestasi:

  • Antara muka ctypes mewujudkan overhed panggilan yang ketara berbanding nanobind/pybind
  • Penjanaan kernel C++ eksperimen menunjukkan peningkatan prestasi sekitar 20%
  • llama.cpp kekal lebih pantas disebabkan kernel yang dioptimumkan secara manual
  • Seni bina semasa menggunakan pelbagai kernel berasingan (contohnya, 5 untuk softmax)

Keputusan Seni Bina Di Bawah Penelitian

Ahli komuniti juga telah mempersoalkan pendekatan seni bina keseluruhan. Sesetengah mencadangkan bahawa penggunaan template dan penyata switch yang berat oleh DSC mungkin mendapat manfaat daripada perwakilan perantaraan seperti penyusun. Pencipta mengesahkan pemerhatian ini, berkongsi bahawa kerja eksperimen untuk menghasilkan kernel C++ yang dioptimumkan menunjukkan keuntungan prestasi kira-kira 20% berbanding pendekatan multi-kernel semasa.

Pelaksanaan C++ gaya-C perpustakaan ini telah mencetuskan perdebatan tentang amalan pembangunan moden. Walaupun sesetengah pembangun lebih suka kod tahap rendah yang eksplisit untuk penaakulan prestasi, yang lain menyokong pengoptimuman yang didorong oleh profiler berbanding andaian tentang kecekapan penjanaan kod.

Projek Pembelajaran dengan Aspirasi Pengeluaran

Pada asalnya difikirkan sebagai projek pembelajaran peribadi yang diilhamkan oleh llama.cpp , DSC telah berkembang melampaui asal usul pendidikannya. Pencipta mengakui bahawa walaupun llama.cpp kekal lebih pantas kerana kernel yang dioptimumkan tangan untuk seni bina tertentu, DSC bertujuan untuk menyediakan kit alat tujuan umum yang lebih memudahkan eksperimen model untuk pembangun tanpa latar belakang ML yang mendalam.

Projek ini kini menyokong operasi tensor asas dan boleh memuatkan model daripada fail safetensors, dengan rancangan untuk menambah sokongan fail GGUF. Walau bagaimanapun, kebimbangan prestasi yang dibangkitkan oleh komuniti mencadangkan bahawa perubahan seni bina yang ketara mungkin diperlukan sebelum DSC boleh bersaing dengan rangka kerja yang mantap dalam persekitaran pengeluaran.

Perbincangan ini menyerlahkan cabaran berterusan dalam ruang infrastruktur ML: mengimbangi kemudahan penggunaan dengan pengoptimuman prestasi sambil mengekalkan seni bina kod yang bersih dan boleh diselenggara.

Rujukan: dsc