Rumah > Artikel > Peranti teknologi > Versi rasmi PyTorch 2.0 dikeluarkan! Satu baris kod dipercepatkan 2 kali ganda, 100% serasi ke belakang
Versi rasmi PyTorch 2.0 akhirnya di sini!
Disember lalu, Yayasan PyTorch mengeluarkan versi pratonton pertama PyTorch 2.0 pada Persidangan PyTorch 2022.
Berbanding dengan versi 1.0 sebelumnya, 2.0 telah mengalami perubahan subversif. Dalam PyTorch 2.0, peningkatan terbesar ialah torch.compile.
Pengkompil baharu boleh menjana kod secara on-the-fly jauh lebih pantas daripada "mod bersemangat" lalai dalam PyTorch 1.0, meningkatkan lagi prestasi PyTorch .
Sebagai tambahan kepada 2.0, satu siri kemas kini beta untuk perpustakaan domain PyTorch telah dikeluarkan, termasuk yang terdapat dalam perpustakaan pokok, serta perpustakaan kendiri termasuk TorchAudio, TorchVision dan TorchText. Kemas kini kepada TorchX juga dikeluarkan pada masa yang sama untuk menyediakan mod sokongan komuniti.
- torch.compile ialah API utama PyTorch 2.0, ia membungkus dan returns Untuk model yang disusun, torch.compile ialah ciri tambahan (dan pilihan) sepenuhnya, jadi versi 2.0 adalah 100% serasi ke belakang.
- Sebagai teknologi asas torch.compile, TorchInductor dengan GPU Nvidia dan AMD akan bergantung pada pengkompil pembelajaran mendalam OpenAI Triton untuk menjana kod berprestasi tinggi dan Sembunyikan butiran perkakasan peringkat rendah. Prestasi pelaksanaan kernel yang dijana oleh OpenAI Triton adalah setanding dengan kernel tulisan tangan dan perpustakaan CUDA khusus seperti cublas.
- Accelerated Transformers memperkenalkan sokongan berprestasi tinggi untuk latihan dan inferens, menggunakan seni bina kernel tersuai untuk melaksanakan Scaled Dot Product Attention (SPDA). API disepadukan dengan torch.compile(), dan pembangun model juga boleh menggunakan kernel perhatian produk titik berskala secara langsung dengan memanggil pengendali skala_dot_product_attention() baharu.
- Bahagian belakang Metal Performance Shaders (MPS) menyediakan latihan PyTorch dipercepatkan GPU pada platform Mac dan menambah sokongan untuk 60 operasi teratas yang paling biasa digunakan, meliputi lebih banyak lagi daripada 300 operator.
- Amazon AWS mengoptimumkan inferens CPU PyTorch pada tika C7g berdasarkan AWS Graviton3. PyTorch 2.0 meningkatkan prestasi inferens Graviton berbanding versi sebelumnya, termasuk penambahbaikan pada Resnet50 dan Bert.
- Ciri dan teknik prototaip baharu merentas TensorParallel, DTensor, selari 2D, TorchDynamo, AOTautograd, PrimTorch dan TorchInductor.
Teknologi pengkompil terkini PyTorch 2.0 termasuk: TorchDynamo, AOTautograd, PrimTorch dan TorchInductor. Semua ini dibangunkan dalam Python, bukan C++ (yang serasi dengan Python).
Ia juga menyokong bentuk dinamik, yang boleh menghantar vektor dengan saiz yang berbeza tanpa menyusun semula. Ia fleksibel dan mudah dipelajari.
Ia boleh mendapatkan program PyTorch dengan selamat dengan bantuan Python Frame Evaluation Hooks Inovasi utama ini ialah tangkapan struktur graf keselamatan PyTorch (selamat Ringkasan penyelidikan dan hasil pembangunan dalam tangkapan graf).
Bebankan enjin autograd PyTorch sebagai autodiff pengesanan untuk menjana jejak ke belakang lanjutan.
Ringkasan 2000+ pengendali PyTorch kepada kira-kira 250 set tertutup pengendali primitif, pembangun boleh membina bahagian belakang PyTorch yang lengkap. PrimTorch sangat memudahkan proses menulis fungsi atau bahagian belakang PyTorch.
TorchInductor ialah penyusun pembelajaran mendalam yang boleh menjana kod pantas untuk berbilang pemecut dan hujung belakang. Untuk GPU NVIDIA, ia menggunakan OpenAI Triton sebagai blok binaan utama.
Yayasan PyTorch berkata bahawa pelancaran 2.0 akan mempromosikan "pulangan daripada C++ kepada Python", sambil menambah bahawa ini adalah hala tuju baharu yang besar untuk PyTorch.
"Kami tahu had prestasi pelaksanaan yang bersemangat sejak hari pertama. Pada Julai 2017, kami memulakan projek penyelidikan pertama kami, membangunkan pengkompil untuk PyTorch. Pengkompil perlu menjadikan program PyTorch berjalan dengan cepat, tetapi tidak mengorbankan pengalaman PyTorch, sambil mengekalkan fleksibiliti dan kemudahan penggunaan, supaya penyelidik boleh menggunakan model dan program dinamik pada peringkat penerokaan yang berbeza. 》
Sudah tentu, "mod bersemangat" yang tidak disusun menggunakan penjana kod masa nyata dinamik dan masih tersedia dalam 2.0. Pembangun boleh menggunakan arahan porch.compile untuk menaik taraf dengan pantas kepada mod tersusun dengan menambahkan hanya satu baris kod.
Pengguna dapat melihat bahawa masa penyusunan 2.0 dipertingkatkan sebanyak 43% berbanding 1.0.
Data ini datang daripada ujian penanda aras Yayasan PyTorch terhadap 163 model sumber terbuka menggunakan PyTorch 2.0 pada GPU Nvidia A100, termasuk pengelasan imej, pengesanan sasaran, penjanaan imej dan tugas lain, serta pelbagai tugas NLP.
Tanda Aras ini dibahagikan kepada tiga kategori: HuggingFace Transformers, TIMM dan TorchBench.
NVIDIA A100 GPU eager mode torch.compile prestasi kelajuan untuk model yang berbeza
Menurut PyTorch Foundation, pengkompil baharu berjalan 21% lebih pantas apabila menggunakan mod ketepatan Float32 dan 51% lebih pantas apabila menggunakan mod ketepatan campuran automatik (AMP).
Antara 163 model ini, torch.compile boleh dijalankan secara normal pada 93% model.
"Dalam pelan hala tuju PyTorch 2.x, kami berharap untuk mengambil mod yang disusun lebih jauh dari segi prestasi dan kebolehskalaan. Terdapat beberapa kerja yang masih perlu selesai Tidak dimulakan. Beberapa tugas tidak dilaksanakan kerana jalur lebar tidak mencukupi 》
Selain itu, prestasi ialah satu lagi fokus utama PyTorch 2.0, dan satu lagi yang telah dipromosikan oleh pembangun.
Malah, salah satu sorotan ciri baharu itu ialah Accelerated Transformers, sebelum ini dikenali sebagai Better Transformers.
Selain itu, versi rasmi PyTorch 2.0 termasuk pelaksanaan PyTorch TransformAPI berprestasi tinggi baharu.
Salah satu matlamat projek PyTorch adalah untuk menjadikan latihan dan penggunaan model transformer tercanggih lebih mudah dan pantas.
Transformer ialah teknologi asas yang membantu merealisasikan era moden kecerdasan buatan generatif, termasuk model OpenAI seperti GPT-3 dan GPT-4.
Dalam PyTorch 2.0 Accelerated Transformers, kaedah seni bina isirong tersuai (juga dikenali sebagai produk titik berskala Attention SDPA), menyediakan sokongan berprestasi tinggi untuk latihan dan inferens.
Memandangkan terdapat banyak jenis perkakasan yang boleh menyokong Transformers, PyTorch 2.0 boleh menyokong berbilang kernel tersuai SDPA. Melangkah lebih jauh, PyTorch menyepadukan logik pemilihan kernel tersuai yang akan memilih kernel berprestasi tertinggi untuk model dan jenis perkakasan tertentu.
Impak pecutan adalah ketara, kerana ia membantu membolehkan pembangun melatih model lebih pantas daripada lelaran PyTorch sebelumnya.
Versi baharu membolehkan sokongan berprestasi tinggi untuk latihan dan inferens, menggunakan seni bina kernel tersuai untuk mengendalikan Scaled Dot Product Attention (SPDA), memanjangkan laluan pantas inferens seni bina.
Serupa dengan seni bina fastpath, kernel tersuai disepadukan sepenuhnya ke dalam API Transformer PyTorch - oleh itu, menggunakan Transformer asli dan API MultiHeadAttention akan membolehkan pengguna untuk:
- lihat peningkatan kelajuan yang ketara; model cross-attention, penyahkod Transformer dan model latihan; untuk mekanisme daya.
Untuk memanfaatkan sepenuhnya model perkakasan yang berbeza dan kes penggunaan Transformer, berbilang teras tersuai SDPA disokong, logik pemilihan teras tersuai akan memilih model dan jenis perkakasan tertentu Teras prestasi tertinggi.
Selain API Transformer sedia ada, pembangun juga boleh terus menggunakan kernel perhatian perhatian produk titik berskala untuk mempercepatkan PyTorch dengan memanggil pengendali skala_dot_product_attention() baharu. 2 Transformer disepadukan dengan torch.compile().
Untuk mendapatkan pecutan tambahan kompilasi PT2 (untuk inferens atau latihan) semasa menggunakan model, anda boleh menggunakan model = torch.compile(model ) untuk praproses model.
Pada masa ini, gabungan kernel tersuai dan torch.compile() telah digunakan untuk melatih model Transformer, terutamanya bahasa besar menggunakan Transformer PyTorch 2 yang dipercepatkan Pecutan yang ketara telah dicapai dalam model.
Menggunakan kernel tersuai dan torch.compile untuk memberikan pecutan yang ketara bagi latihan model bahasa besar
Sylvain Gugger, penyelenggara utama HuggingFace Transformers, menulis dalam satu kenyataan yang dikeluarkan oleh projek PyTorch, "Dengan hanya satu baris kod, PyTorch 2.0 boleh memberikan prestasi 1.5x lebih baik semasa latihan Model Transformers kepada 2.0x lebih pantas Ini adalah perkara yang paling menarik sejak pengenalan latihan ketepatan campuran 》
PyTorch dan TensorFlow Google adalah dua yang paling popular! . Beribu-ribu institusi di seluruh dunia menggunakan PyTorch untuk membangunkan aplikasi pembelajaran mendalam, dan penggunaannya semakin berkembang.
Pelancaran PyTorch 2.0 akan membantu mempercepatkan pembangunan pembelajaran mendalam dan aplikasi kecerdasan buatan, kata Ketua Pegawai Teknologi Lightning AI dan salah seorang penyelenggara utama PyTorch Lightning Luca Antiga berkata:
"PyTorch 2.0 merangkumi masa depan rangka kerja pembelajaran mendalam. Tiada campur tangan pengguna diperlukan untuk menangkap program PyTorch dan program itu berjaya Penjanaan kotak, bersama-sama dengan pecutan peranti yang besar, kemungkinan ini membuka dimensi baharu untuk pembangun AI 》
Rujukan: 🎜> https://www.php.cn/link/d6f84c02e2a54908d96f410083beb6e0 https://www.php.cn/link/89b9e0a6f6d1505fe13dea0f18a2dcfa https://🎜 www.php.cn/link/3b2acfe2e38102074656ed938abf4ac3
Atas ialah kandungan terperinci Versi rasmi PyTorch 2.0 dikeluarkan! Satu baris kod dipercepatkan 2 kali ganda, 100% serasi ke belakang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!