Sejauh manakah kuasa satu baris kod? Pustaka Kernl yang akan kami perkenalkan hari ini membolehkan pengguna menjalankan model pengubah Pytorch beberapa kali lebih pantas pada GPU dengan hanya satu baris kod, sekali gus mempercepatkan inferens model tersebut.
Secara khusus, dengan restu Kernl, kelajuan inferens Bert adalah 12 kali lebih pantas daripada garis dasar Memeluk Wajah. Pencapaian ini disebabkan terutamanya oleh Kernl menulis kernel GPU tersuai dalam bahasa pengaturcaraan OpenAI baharu Triton dan TorchDynamo. Pengarang projek adalah dari Lefebvre Sarrut.
Alamat GitHub: https://github.com/ELS-RD/kernl/
Berikut ialah perbandingan antara Kernl dan enjin inferens lain Nombor dalam kurungan dalam absis masing-masing mewakili saiz kelompok dan panjang jujukan, dan ordinat ialah pecutan inferens.
Tanda aras dijalankan pada GPU 3090 RTX dan CPU Intel 12 teras.
Daripada keputusan di atas, Kernl boleh dikatakan sebagai enjin inferens terpantas apabila melibatkan input jujukan panjang (betul-betul dalam gambar di atas ) separuh), hampir dengan TensorRT NVIDIA (separuh kiri dalam rajah di atas) pada jujukan input pendek. Jika tidak, kod kernel Kernl adalah sangat pendek dan mudah difahami serta diubah suai. Projek ini juga menambah penyahpepijat dan alat Triton (berdasarkan Fx) untuk memudahkan penggantian kernel, jadi tiada pengubahsuaian pada kod sumber model PyTorch diperlukan.
Pengarang projek Michaël Benesty meringkaskan penyelidikan ini Kernl yang mereka keluarkan adalah perpustakaan untuk mempercepatkan penaakulan transformer .
Mereka juga mengujinya pada T5 dan ia adalah 6 kali lebih pantas, dan Benesty berkata ini hanyalah permulaan.
Di Lefebvre Sarrut, pengarang projek menjalankan beberapa model transformer dalam pengeluaran, beberapa daripadanya sensitif kependaman, terutamanya carian dan recsys. Mereka juga menggunakan OnnxRuntime dan TensorRT, malah mencipta perpustakaan OSS yang menggunakan transformer untuk berkongsi pengetahuan mereka dengan komuniti.
Baru-baru ini, pengarang telah menguji bahasa generatif dan bekerja keras untuk mempercepatkannya. Walau bagaimanapun, melakukan ini menggunakan alat tradisional telah terbukti sangat sukar. Pada pandangan mereka, Onnx adalah satu lagi format yang menarik Ia adalah format fail terbuka yang direka untuk pembelajaran mesin Ia digunakan untuk menyimpan model terlatih dan mempunyai sokongan perkakasan yang luas.
Walau bagaimanapun, ekosistem Onnx (terutamanya enjin inferens) mempunyai beberapa batasan semasa mereka berurusan dengan seni bina LLM baharu:
Jalur lebar memori biasanya merupakan hambatan pembelajaran mendalam Untuk mempercepatkan inferens, mengurangkan akses memori selalunya merupakan strategi yang baik. Pada urutan input pendek, kesesakan biasanya berkaitan dengan overhed CPU, yang mesti dihapuskan. Pengarang projek terutamanya menggunakan 3 teknologi berikut:
Yang pertama ialah OpenAI Triton, iaitu bahasa untuk menulis kernel GPU seperti CUDA. Jangan kelirukan dengan inferens Nvidia Triton pelayan lebih cekap. Penambahbaikan dicapai dengan gabungan beberapa operasi supaya pengiraan rantaian tanpa mengekalkan hasil perantaraan dalam memori GPU. Pengarang menggunakannya untuk menulis semula perhatian (digantikan dengan Flash Attention), lapisan linear dan pengaktifan, dan Layernorm/Rmsnorm.
Yang kedua ialah graf CUDA. Semasa langkah pemanasan, ia menyimpan setiap teras yang dilancarkan dan parameternya. Pengarang projek kemudian membina semula keseluruhan proses penaakulan.
Akhir sekali, terdapat TorchDynamo, prototaip yang dicadangkan oleh Meta untuk membantu pengarang projek menangani tingkah laku dinamik. Semasa langkah memanaskan badan, ia menjejaki model dan menyediakan graf Fx (graf pengiraan statik). Mereka menggantikan beberapa operasi graf Fx dengan kernel mereka sendiri, yang disusun semula dalam Python.
Pada masa hadapan, pelan hala tuju projek akan merangkumi pemanasan badan yang lebih pantas, inferens lusuh (tiada pengiraan kerugian dalam padding), sokongan latihan (sokongan jujukan panjang), sokongan berbilang GPU (berbilang -mod penyejajaran), kuantisasi (PTQ), ujian kernel Cutlass bagi kelompok baharu, dan sokongan perkakasan yang dipertingkatkan, dsb.
Sila rujuk projek asal untuk butiran lanjut.
Atas ialah kandungan terperinci Bahasa pengaturcaraan OpenAI mempercepatkan penaakulan Bert 12 kali, dan enjin menarik perhatian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!