• Perkenalan
• Instalasi
• lapisan
• Fungsi matematika
• Fallback Pytorch
• Tes
Attorch adalah subset dari modul nn
Pytorch, ditulis murni dalam Python menggunakan Openai's Triton. Tujuannya adalah untuk menjadi koleksi modul jaringan saraf yang mudah diretas, mandiri, dan dapat dibaca sambil mempertahankan atau meningkatkan efisiensi Pytorch. Dengan kata lain, itu bermaksud menjadi proyek forkable yang diberkahi dengan desain yang sederhana dan intuitif yang dapat berfungsi sebagai titik awal yang dapat diakses bagi mereka yang ingin mengembangkan operasi pembelajaran mendalam khusus tetapi tidak puas dengan kecepatan implementasi Pytorch murni dan tidak memiliki keahlian atau sumber daya teknis untuk menulis kernel CUDA.
Sudah ada sejumlah kuliah seperti Pytorch yang indah yang ditenagai oleh Triton, termasuk kernl, xformers, ketidaksopanan, dan fla
, tetapi sebagian besar berkonsentrasi terutama pada transformator dan aplikasi NLP, sedangkan Attorch bertujuan untuk lebih inklusif dengan juga menghadirkan berbagai lapisan yang berkaitan dengan daerah di samping NLP seperti komputer. Selain itu, Attorch bukan paket inferensi saja dan sepenuhnya mendukung umpan maju dan mundur, yang berarti dapat digunakan selama pelatihan serta inferensi, meskipun kinerjanya untuk yang terakhir umumnya tidak setara dengan mesin inferensi khusus.
Satu -satunya ketergantungan Attorch adalah torch==2.4.0
dan triton==3.0.0
. Harap instal versi yang ditentukan dari dua perpustakaan ini dan klon repositori ini untuk memulai.
Lapisan yang saat ini diimplementasikan, dengan dukungan Automatic Mixed Precision (AMP), ADALAH, ADALAH,
attorch.Conv1d
: 1D-convolves di atas input menggunakan bobot, secara opsional menambahkan bias.attorch.Conv2d
: 2D-convolves di atas input menggunakan bobot, secara opsional menambahkan bias.attorch.MultiheadAttention
: Menerapkan perhatian produk dot berkepala multi-berkepala pada input.attorch.Hardsigmoid
: Berlaku Sigmoid keras pada input, opsional memadukan putus sekolah.attorch.Hardswish
: Berlaku keras untuk input, opsional menyatu dropout.attorch.LeakyReLU
: Berlaku bocor relu ke input, opsional memadukan putus sekolah.attorch.GELU
: Menerapkan gelu ke input, secara opsional menggabungkan putus sekolah.attorch.ReLU
: Berlaku Relu ke input, secara opsional memadukan putus sekolah.attorch.ReLU6
: Berlaku Relu6 ke input, secara opsional menggabungkan putus sekolah.attorch.SELU
: Menerapkan selu ke input, secara opsional memadukan putus sekolah.attorch.SiLU
: Berlaku Silu ke input, secara opsional memadukan putus sekolah.attorch.Mish
: Menerapkan mish pada input, opsional memadukan putus sekolah.attorch.Sigmoid
: Menerapkan sigmoid ke input, opsional fusing dropout.attorch.Tanh
: Menerapkan Tanh ke input, opsional Fusing Dropout.attorch.GLU
: Menerapkan unit linier yang terjaga keamanannya dengan fungsi aktivasi sewenang -wenang ke input.attorch.LogSoftmax
: Normalisasi input menggunakan softmax dan mengambil log.attorch.Softmax
: menormalkan input menggunakan softmax.attorch.Softmin
: menormalkan input menggunakan softmin.attorch.BatchNorm1d
: Batch-Normalize Input 2D atau 3D, opsional menggabungkan fungsi aktivasi dan menambahkan residual ke hasil pra-aktivasi.attorch.BatchNorm2d
: Batch-Normalize Input 4D, secara opsional menggabungkan fungsi aktivasi dan menambahkan residual ke hasil pra-aktivasi.attorch.LayerNorm
: Normalisasi lapisan input.attorch.RMSNorm
: Root-mean-square-normalize input.attorch.Linear
: Secara linear mengubah input menggunakan bobot, secara opsional menambahkan bias dan menggabungkan fungsi aktivasi.attorch.Dropout
: Elemen nol secara acak dalam input selama pelatihan.attorch.L1Loss
: Mengukur kesalahan absolut rata -rata antara input dan target.attorch.MSELoss
: Mengukur kesalahan kuadrat rata -rata antara input dan target.attorch.CrossEntropyLoss
: mengukur kerugian silang rata -rata di antara input dan target, dengan penegasan ulang opsional dari setiap kelas.attorch.NLLLoss
: Mengukur kerugian kemungkinan log negatif antara input dan target, dengan rewe opsional dari setiap kelas.Kecuali dinyatakan lain dalam Docstrings mereka, lapisan yang disebutkan di atas berperilaku identik dengan padanan Pytorch mereka.
Kernel triton umumnya terdiri dari dua bagian: satu menangani pemuatan dan penyimpanan tensor yang relevan, yang lain mengubah data menggunakan fungsi matematika yang sesuai. Misalnya, kernel normalisasi layer membaca satu atau beberapa baris dari input (beban), menstandarkan fitur (matematika), dan menulis hasilnya ke dalam wadah (penyimpanan). Pilihan fungsi matematika murni ini dipasok oleh attorch.math
, tujuannya adalah untuk memfasilitasi implementasi kernel khusus dan fusi operasi. Meskipun hanya umpan ke depan dari fungsi tersebut yang tersedia di attorch.math
, berkat kemurnian dan tidak adanya tindakan I/O mereka, gradien mereka dapat diturunkan secara otomatis melalui Perpustakaan triton-autodiff
. Bagian signifikan dari kernel Attorch dapat direfaktor dengan menggantikan bit matematika mereka dengan transformasi attorch.math
yang sesuai. Transformasi atau turunannya, tetapi melakukan hal itu akan mengorbankan desain satu file tunggal dan mandiri dari Attorch, sehingga attorch.math
dan sisa Attorch akan tetap terpisah.
Untuk memungkinkan integrasi yang lebih mudah dari lapisan Attorch dan Pytorch, attorch.nn
ditawarkan, yang menyediakan antarmuka untuk modul Attorch dengan pytorch fallback jika lapisan yang diinginkan tidak tersedia, seperti yang terlihat di bawah ini.
from attorch import nn
lin = nn . Linear ( 10 , 20 ) # Uses attorch's linear layer
gap = nn . AdaptiveAvgPool2d ( 1 ) # Uses PyTorch's global pooling since GAP is not available in attorch
Setiap modul dapat diuji terhadap rekan Pytorch -nya untuk memastikan kebenaran. Tes ini termasuk dalam tests/
dan dapat dieksekusi menggunakan pytest
. Perlu dicatat bahwa beberapa orang mungkin gagal karena masalah presisi numerik, tetapi dalam sebagian besar kasus penggunaan praktis, itu seharusnya tidak menjadi masalah.