berita

Tim PyTorch memulai peta jalan teknisnya, dengan hampir seratus halaman dokumen mengungkapkan arah pengembangannya pada paruh kedua tahun 2024.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Laporan Kebijaksanaan Baru

Editor: Qiao Yang

[Pengantar Kebijaksanaan Baru]Baru-baru ini, tim PyTorch mengumumkan peta jalan pengembangan untuk pertama kalinya, yang dimodifikasi langsung dari dokumen teknis internal, mengungkapkan arah pengembangan selanjutnya dari perpustakaan sumber terbuka klasik ini.

Jika Anda mengembangkan Python di bidang AI, PyTorch pasti salah satu teman lama Anda. Pada tahun 2017, Meta AI merilis perpustakaan open source di bidang pembelajaran mesin dan pembelajaran mendalam, yang kini memasuki tahun ketujuh.

Menurut statistik Majelis AI tahun 2021, 30 model terpopuler di HuggingFace semuanya dapat berjalan di PyTorch, dan 92% model merupakan hak milik PyTorch. Proporsi ini membuat banyak pesaing termasuk TensorFlow Di luar jangkauan.


Pada tanggal 10 Juli, tim teknik PyTorch secara publik merilis dokumen peta jalan mereka untuk pertama kalinya, yang menetapkan arah pengembangan pada paruh kedua tahun 2024.

Soumith Chintala, salah satu pendiri Meta dan memimpin tim PyTorch, secara resmi mengumumkan berita tersebut di Twitter.

Dia berharap motivasi dan tujuan penelitian para insinyur dapat dipublikasikan.

“Meskipun semua pengembangan PyTorch bersifat publik di GitHub, dokumen perencanaan dan peta jalan sebenarnya yang ditulis oleh tim di berbagai afiliasi PyTorch tidak bersifat publik, jadi kami memutuskan untuk melakukan perubahan untuk meningkatkan transparansi.”


Gott Brath, manajer proyek teknis tim PyTorch, juga membuat pernyataan serupa di forum tersebut.


Kami telah memikirkan cara membagikan peta jalan pekerjaan yang dilakukan tim di PyTorch. Kami melakukan perencanaan dua kali setahun, jadi ini adalah beberapa versi publik dari rencana OSS H2 2024 kami untuk beberapa area utama di PyTorch.

File-file ini pada dasarnya adalah dokumen internal dan rencana kerja tim PyTorch. Setelah menghapus beberapa konten, file-file tersebut diterbitkan sebagai peta jalan, yang melibatkan aspek-aspek PyTorch berikut:

- Perpustakaan inti dan kinerja inti

- Didistribusikan

- obor, Torchrec, TorchVision

- Tepi PyTorch

- Pemuatan data (Pemuatan Data)

- Inti kompiler dan penerapannya

- Pengembang infrastruktur

Setiap dokumen berisi setidaknya tiga bagian, berdasarkan gagasan OKR:

- latar belakang

- 5 area fokus dan sasaran teratas: sasaran, hasil utama, risiko yang diketahui atau tidak, dan langkah mitigasi yang sesuai (maksimum satu halaman)

- 3~5 aspek teratas untuk meningkatkan tingkat teknik: klasifikasi Pilar BE, sasaran, indikator/status/sasaran spesifik, risiko dan langkah mitigasi yang diketahui atau tidak diketahui, dampak/biaya, prioritas/tingkat kepercayaan (maksimum satu halaman)

Diantaranya, Pilar BE dapat dikatakan sebagai "lima maksim" yang ditulis Meta kepada tim pengembang. Isi spesifiknya adalah:

Kode yang Lebih Baik, Dokumen yang Lebih Baik, Memberdayakan Tim, Kode Modern, Arsitektur yang Lebih Baik

Saya tidak tahu apakah ada pengembang yang mempermasalahkan panjang dokumen karena aturan "maksimum satu halaman". Bagaimanapun, dokumen lebih mahal daripada dokumen yang panjang. Memadatkan banyak persyaratan pengembangan ke dalam satu halaman tidak hanya menghemat waktu rekan kerja, tetapi juga juga menguji keterampilan penulis.

Selain itu, beberapa ide cemerlang dari tim pengembangan Meta juga dapat dilihat dalam dokumen tersebut, seperti menekankan kolaborasi berbagai tim modul, menekankan integrasi API dan pengembangan bersama dengan mitra eksternal, serta menekankan interaksi dengan komunitas dan pengembang open source.

Saat meluncurkan basis kode baru seperti ExecuTorch, atau ingin meningkatkan pengaruh kompiler PyTorch, tim biasanya memulai dari dua aspek: satu adalah melakukan upaya penuh untuk meningkatkan kinerja dan langsung menargetkan SOTA; terintegrasi secara mendalam. Mulailah dengan kasus penggunaan yang lebih unik.

Mungkin inilah kunci kesuksesan Meta di bidang open source selama ini.

Berikut sebagian kutipan dan ringkasan isi masing-masing dokumen.


Alamat asli: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

Pustaka inti dan kinerja inti

Pustaka inti yang terlibat dalam dokumen ini meliputi TendorDict, torchao, NN, TorchRL, dll.

Dalam hal kinerja, tim PyTorch telah mengusulkan tujuan untuk mencapai kinerja SOTA dalam pelatihan model dan inferensi. Langkah-langkahnya termasuk memperkenalkan teknologi pengoptimalan arsitektur dan kernel berkinerja tinggi untuk membentuk kombinasi dengan seluruh tumpukan teknologi PyTorch.

Setahun terakhir telah menyaksikan pesatnya perkembangan GenAI. Banyak perpustakaan eksternal bermunculan untuk mendukung pengembangan di bidang penelitian, namun banyak di antaranya yang tidak secara langsung mengandalkan PyTorch, sehingga akan mengancam dominasi PyTorch di bidang penelitian ilmiah.

Untuk mengimbangi kecepatan lagi, PyTorch akan memberikan dukungan untuk teknologi pengembangan umum seperti kuantisasi, sparsifikasi, MoE, dan pelatihan presisi rendah, termasuk blok penyusun dan API (terutama terintegrasi dalam torchao) untuk membantu model berbagai arsitektur Transformer meningkatkan kinerja.

Pustaka torchao dapat mendukung peneliti untuk menyesuaikan teknik tipe, tata letak, dan pengoptimalan berkinerja tinggi dalam kerangka kerja PyTorch, memperluas cakupan penggunaan ke berbagai skenario seperti pelatihan, inferensi, dan penyetelan.

Selain itu, pembaruan pada perpustakaan inti akan mencakup hal berikut:

- Torchao perpustakaan pengoptimalan otomatis yang diluncurkan telah mencapai kesuksesan terobosan. Langkah berikutnya adalah meningkatkan organisasi kode dan memisahkan operasi numeriknya dari perpustakaan inti.

- Mengatasi modularitas inti TendorDict, mendukung serialisasi pemuatan/penyimpanan, dan membuatnya berjalan 2x lebih cepat dalam mode bersemangat

- Melanjutkan kesuksesan pemuatan yang dipetakan memori pada paruh pertama tahun ini, terus meningkatkan kinerja dan keamanan pemuatan/penyimpanan model

- Mengurangi overhead TorchRL sebesar 50%

- Menambahkan dukungan inti untuk NoGIL

- Memperbaiki masalah variabel TORCH_env yang dilaporkan oleh pengguna tidak berfungsi

Dokumen tersebut juga menyebutkan penghentian modul nn.transformer, dengan mengatakan bahwa serangkaian tutorial dan kasus penggunaan akan dirilis untuk menunjukkan cara menggunakan torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao, dan modul lain untuk membangun Transformer.

didistribusikan

Pra-pelatihan LLM biasanya mencakup lusinan atau bahkan ribuan GPU, dan seiring dengan meningkatnya skala parameter model secara bertahap, inferensi dan penyesuaian sulit diselesaikan pada satu GPU.

Oleh karena itu, tata letak "terdistribusi" PyTorch berikutnya secara komprehensif mencakup tiga tautan pelatihan, inferensi, dan penyesuaian, dan mengusulkan untuk mencapai pelatihan terdistribusi berskala sangat besar, penyesuaian efisien memori tinggi, dan penalaran terdistribusi multi-host .

kereta

Mode paralel yang secara asli didukung oleh PyTorch terutama mencakup hal-hal berikut:

- Paralel data pecahan penuh (FSDP)

- Paralel data sharding hibrid (HSDP)

-Tensor paralel (TP)

- Pipa paralel (PP)

- Urutan paralel (SP)

-Konteks paralel (CP)

PyTorch berharap untuk lebih memodulasi berbagai metode paralel di TorchTitan, memungkinkan pengembang untuk secara bebas menggabungkan dan mencapai paralelisme N-dimensi sesuai kebutuhan.


Dokumen tersebut secara khusus menyebutkan perlunya menambahkan dukungan untuk dua arsitektur yang sedang berkembang, MoE dan multi-modalitas, seperti paralelisme pakar dan optimalisasi algoritma perutean.

Selain pembaruan TorchTitan itu sendiri, tim terdistribusi juga perlu bekerja lebih erat dengan tim compiler untuk berintegrasi lebih baik dengan modul torch.compile guna memberikan peningkatan kinerja tambahan pada skenario terdistribusi skala besar.

Penyempurnaan dan inferensi

Penyempurnaan: Dikombinasikan dengan torchtune, gunakan solusi FSDP2 LoRA/QLoRA, dan dukung kuantisasi NF4 dari kamus status model

Alasan: PP dan DP telah menjadi inti dari API terdistribusi. Selanjutnya, kita perlu memperhatikan alasan terdistribusi torchtitan, yang mendukung metode model besar PP + asynchronous TP.

Dokumen tersebut juga menyebutkan bahwa API inferensi HuggingFace akan dimigrasikan dari PiPPy ke PyTorch (diselesaikan oleh HuggingFace).

nada obor, TorchRec, TorchVision

lagu obor

Peluncuran torchtune bertujuan untuk membantu pengguna menyempurnakan LLM dengan lebih nyaman. Ini juga merupakan solusi resmi untuk menyempurnakan model Llama.

"Penyempurnaan" yang didefinisikan oleh torchtune memiliki jangkauan yang sangat luas, yang dapat diringkas menjadi tiga jenis skenario:

- Model adaptasi terhadap kumpulan data khusus domain atau tugas hilir

- Pemodelan penghargaan dan preferensi, seperti RLHF, DPO, dll.

- Proses pelatihan termasuk distilasi dan kuantisasi

Pembaruan pada paruh kedua tahun ini akan mendukung penyempurnaan alur kerja agen, sekaligus berfokus pada peningkatan kinerja penyempurnaan.

Tim akan bekerja sama dengan modul kompilasi, inti, terdistribusi, dan lainnya untuk memberikan penyesuaian yang efisien dan menetapkan tolok ukur kinerja penyesuaian yang representatif dalam ekosistem PyTorch.

Karena torchtune juga merupakan perpustakaan sumber terbuka yang lebih baru, interaksi dengan komunitas sumber terbuka juga penting.

Dokumen tersebut mengusulkan penerbitan artikel blog dan tutorial, mengadakan kuliah teknis, dll. untuk meningkatkan pemahaman pengguna; dokumen tersebut juga akan menentukan indikator kuantitatif untuk mengukur bagian kontribusi obor dalam ekosistem LLM.

Selain komunitas sumber terbuka, torchune akan berintegrasi dengan setidaknya satu mitra dan berpartisipasi dalam komunitas mereka untuk mempromosikan penggunaan torchune.

Visi Obor

Sebagai pemain yang sangat dominan di bidang CV, teknologi TorchVision relatif matang, sehingga hanya ada sedikit pembaruan yang diusulkan dalam peta jalan.

Tim akan terus bekerja ke arah pra-pemrosesan, mendukung lebih banyak format (seperti WebP, HEIC) dan platform (seperti CUDA) di ruang pengkodean/dekode gambar, dan meningkatkan kinerja pengkodean/dekode format jpeg di GPU.

OborRek

TorchRec bertujuan untuk menyediakan primitif ketersebaran dan paralelisme yang biasa digunakan dalam sistem rekomendasi skala besar. Versi stabil pertama, TorchRec 1.0, akan diluncurkan pada musim gugur.

Tepian

Saat ini, perpustakaan sumber terbuka ExecuTorch telah meluncurkan versi Alpha, yang terutama mengandalkan torch.compile dan torch.export untuk mendukung analisis model, debugging dan inferensi pada perangkat seluler dan perangkat edge (seperti AR/VR, perangkat yang dapat dikenakan).

Pada paruh kedua tahun ini, tim Edge akan meluncurkan xecuTorch versi Beta dan memberikan solusi dalam ekosistem PyTorch untuk model seri Llama Meta dan model sumber terbuka lainnya.

Tujuan utamanya terutama mencakup dua arah. Yang pertama adalah menyediakan fungsi dasar dan infrastruktur yang andal untuk AI pada perangkat, termasuk:

- Pastikan stabilitas API untuk C++ dan Python

- Menerapkan serangkaian fungsi inti: mendukung kompresi model, manajemen lokasi cache proxy, pemisahan data dan program

Yang kedua adalah melindungi basis kode yang baru lahir ini, menumbuhkan pengaruh dalam komunitas open source, dan menjaga hubungan kerja sama yang baik dengan perusahaan seperti Arm, Apple, dan Qualcomm.

Tujuan dari pengaruh komunitas bahkan telah diukur, mengharuskan kode untuk mendapatkan 3k bintang di GitHub dan dikloning (fork) sebanyak 500 kali. Pembaca yang tertarik dapat terus memperhatikan dan melihat apakah tim dapat menyelesaikan OKR ini pada akhir tahun.

Memuat data

Pustaka kumpulan data HuggingFace berdasarkan format Apache Arrow tiba-tiba muncul dalam beberapa tahun terakhir dengan pemuatan/penyimpanannya yang berkecepatan tinggi tanpa batasan memori, dan tampaknya telah mencuri perhatian dari fungsi terkait PyTorch.

Dokumen tentang pemuatan data dimulai dengan ambisi untuk menjadikan perpustakaan TorchData hebat kembali dan membangun kembali dominasi PyTorch dalam pemuatan data.

Untuk mencapai tujuan ini, penting untuk membuat fungsi-fungsi yang relevan menjadi fleksibel, dapat diskalakan, berkinerja tinggi, dan hemat memori, sekaligus mencapai pengoperasian yang mudah dan mendukung pelatihan multi-modal dalam berbagai skala.

Sasaran pembaruan khusus mencakup aspek-aspek berikut:

- Pengembangan fungsional dan antarmuka DataLoader akan menerapkan prinsip GitHub terlebih dahulu, dan DataPipes serta DataLoader v2 secara bertahap tidak digunakan lagi dan dihapus.

- Pastikan batasan yang jelas dan interoperabilitas yang baik antara TorchTune, TorchTitan, HuggingFace, dan TorchData, serta mendukung kumpulan multi-data dan pemuatan data multi-modal

- HuggingFace menggunakan API StatefulDataLoader untuk memastikan kompatibilitas dan memperbarui sampel serta kasus pengujian secara tepat waktu.

Inti kompiler dan penerapannya

Fungsi inti kompiler PyTorch menjadi semakin sempurna setelah pengembangan selama bertahun-tahun. Yang perlu diperbaiki saat ini adalah integrasi yang lebih dalam dan dukungan pengoptimalan yang lebih banyak di bidang LLM dan GenAI.

Peta jalan mengusulkan untuk menghadirkan fungsi torch.compile() ke semua aspek siklus penggunaan LLM dan GenAI (inferensi, penyesuaian, pra-pelatihan), sehingga model penting dapat dikompilasi dengan PyTorch asli saat dirilis.

Untuk mencapai tujuan ini, dokumen tersebut mengusulkan banyak langkah spesifik, seperti bekerja sama dengan tim torchtune dan TorchTitan untuk meningkatkan kinerja kompilasi, dan merilis versi kompilasi asli PyTorch dari setidaknya dua model terkenal pada paruh kedua tahun ini.

Selain itu, kompiler dapat menambahkan kemampuan visualisasi untuk menghasilkan grafik model yang mengekspresikan proses komputasi maju/propagasi mundur dalam mode pelatihan non-bersemangat.

Ada juga banyak rencana untuk dukungan pengguna, seperti meningkatkan pemantauan dan observasi sistem dan membantu pengguna melakukan debug sendiri pada masalah kompilasi. Sasaran utama juga mencakup pembentukan tim dukungan pengguna untuk mengatasi masalah yang diangkat oleh pengembang pada platform seperti GitHub di beberapa bidang utama (kelas data, manajemen konteks, dll.).

Referensi:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-pada-tahun-2023/