Rumah >Peranti teknologi >AI >Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

王林
王林ke hadapan
2023-05-04 08:16:06925semak imbas

Saya sangat suka dengan apa yang dikatakan oleh sesetengah netizen:

"Anak ini memang tidak bagus, mari dapatkan seorang lagi

Google benar-benar melakukan ini.

Selepas tujuh tahun pembangunan, TensorFlow akhirnya dikalahkan oleh PyTorch Meta, pada tahap tertentu.

Melihat sesuatu yang tidak kena, Google segera meminta satu lagi - "JAX", rangka kerja pembelajaran mesin serba baharu.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Seperti yang anda semua tahu, DALL·E Mini yang sangat popular baru-baru ini diprogramkan berdasarkan JAX, sekali gus memanfaatkan sepenuhnya kelebihan yang dibawa oleh Google TPU.

Senja TensorFlow dan kebangkitan PyTorch

Pada tahun 2015, TensorFlow, rangka kerja pembelajaran mesin yang dibangunkan oleh Google, telah dikeluarkan.

Pada masa itu, TensorFlow hanyalah projek kecil Google Brain.

Tiada siapa menjangkakan bahawa TensorFlow akan menjadi sangat popular sebaik sahaja ia keluar.

Syarikat besar seperti Uber dan Airbnb menggunakannya, begitu juga dengan agensi kebangsaan seperti NASA. Dan mereka semua digunakan pada projek mereka yang paling kompleks.

Sehingga November 2020, TensorFlow telah dimuat turun sebanyak 160 juta kali.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Namun, Google nampaknya tidak begitu mengambil berat tentang perasaan ramai pengguna.

Antara muka pelik dan kemas kini yang kerap menjadikan TensorFlow semakin tidak mesra pengguna dan semakin sukar untuk dikendalikan.

Walaupun dalam Google, mereka merasakan rangka kerja ini semakin merosot.

Malah, tidak berdaya untuk Google mengemas kini dengan kerap. Lagipun, ini adalah satu-satunya cara untuk mengikuti lelaran pesat dalam bidang pembelajaran mesin.

Akibatnya, semakin ramai orang menyertai projek itu, menyebabkan seluruh pasukan perlahan-lahan hilang tumpuan.

Titik bersinar yang pada asalnya menjadikan TensorFlow sebagai alat pilihan telah terkubur dalam banyak faktor dan tidak lagi diambil serius.

Fenomena ini digambarkan oleh Insider sebagai "permainan kucing-dan-tikus." Syarikat itu seperti kucing, dan keperluan baru yang muncul melalui lelaran berterusan adalah seperti tikus. Kucing harus sentiasa berwaspada dan bersedia untuk menerkam tikus.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Dilema ini tidak dapat dielakkan bagi syarikat yang pertama kali memasuki pasaran tertentu.

Sebagai contoh, dari segi enjin carian, Google bukanlah yang pertama. Oleh itu, Google boleh belajar daripada kegagalan pendahulunya (AltaVista, Yahoo, dsb.) dan menerapkannya pada pembangunannya sendiri.

Malangnya, apabila bercakap mengenai TensorFlow, Googlelah yang terperangkap.

Tepatnya kerana sebab di atas pembangun yang pada asalnya bekerja untuk Google secara beransur-ansur hilang keyakinan terhadap majikan lama mereka.

TensorFlow di mana-mana pada masa lalu telah beransur-ansur merosot, kalah kepada bintang Meta yang sedang meningkat naik-PyTorch.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Pada 2017, versi beta PyTorch adalah sumber terbuka.

Pada 2018, Makmal Penyelidikan Kecerdasan Buatan Facebook mengeluarkan versi penuh PyTorch.

Perlu dinyatakan bahawa PyTorch dan TensorFlow kedua-duanya dibangunkan berdasarkan Python, manakala Meta memberi lebih perhatian untuk mengekalkan komuniti sumber terbuka dan juga melaburkan banyak sumber.

Selain itu, Meta sedang memberi perhatian kepada masalah Google dan percaya bahawa ia tidak boleh mengulangi kesilapan yang sama. Mereka menumpukan pada set kecil ciri dan menjadikan ciri tersebut sebaik mungkin.

Meta tidak mengikut jejak Google. Rangka kerja ini, mula dibangunkan di Facebook, perlahan-lahan menjadi penanda aras industri.

Seorang jurutera penyelidik di syarikat permulaan pembelajaran mesin berkata, "Kami pada asasnya menggunakan PyTorch. Komuniti dan sumber terbukanya adalah yang terbaik. Bukan sahaja anda menjawab semua soalan, tetapi contoh yang diberikan juga sangat praktikal ."

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Menghadapi situasi ini, pembangun Google, pakar perkakasan, penyedia awan dan sesiapa sahaja yang berkaitan dengan pembelajaran mesin Google semuanya berkata perkara yang sama dalam temu bual. Mereka percaya bahawa TensorFlow telah kehilangan hati pembangun.

Selepas beberapa siri perjuangan terbuka dan terselindung, Meta akhirnya berjaya mengatasi masalah tersebut.

Sesetengah pakar mengatakan bahawa peluang Google untuk terus menerajui pembelajaran mesin pada masa hadapan semakin hilang.

PyTorch secara beransur-ansur menjadi alat pilihan untuk pembangun dan penyelidik biasa.

Berdasarkan data interaksi yang disediakan oleh Stack Overflow, terdapat lebih banyak soalan tentang PyTorch pada forum pembangun, manakala soalan mengenai TensorFlow telah terhenti sejak beberapa tahun kebelakangan ini.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Malah syarikat seperti Uber yang disebut pada awal artikel juga telah beralih kepada PyTorch.

Malah, setiap kemas kini PyTorch yang seterusnya nampaknya menjadi tamparan di hadapan TensorFlow.

Masa depan pembelajaran mesin Google - JAX

Tepat apabila TensorFlow dan PyTorch sedang giat dijalankan, "pasukan penyelidik kuda hitam kecil" dalam Google mula berusaha membangunkan rangka kerja serba baharu. TPU boleh digunakan dengan lebih mudah.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Pada tahun 2018, kertas kerja bertajuk "Menyusun program pembelajaran mesin melalui pengesanan peringkat tinggi" membawa projek JAX ke permukaan dan Chris Leary.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Dari kiri ke kanan adalah ketiga-tiga tuan ini

Kemudian, Adam Paszke, salah seorang pengarang asal PyTorch, turut menyertai JAX sepenuh masa pada awal pasukan 2020.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

JAX menyediakan cara yang lebih langsung untuk menangani salah satu masalah paling kompleks dalam pembelajaran mesin: masalah penjadualan pemproses berbilang teras.

Bergantung pada situasi aplikasi, JAX akan secara automatik menggabungkan beberapa cip ke dalam kumpulan kecil, dan bukannya membiarkan satu cip berfungsi sendiri.

Kelebihan ini ialah sebanyak mungkin TPU boleh bertindak balas dalam seketika, sekali gus membakar "alam semesta alkimia" kita.

Akhirnya, berbanding TensorFlow yang kembung, JAX menyelesaikan masalah utama dalam Google: cara mengakses TPU dengan cepat.

Berikut ialah pengenalan ringkas kepada Autograd dan XLA yang membentuk JAX.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Autograd digunakan terutamanya untuk pengoptimuman berasaskan kecerunan dan secara automatik boleh membezakan kod Python dan Numpy.

Ia boleh digunakan untuk mengendalikan subset Python, termasuk gelung, rekursi dan penutupan, dan ia juga boleh melakukan derivatif terbitan.

Selain itu, Autograd menyokong perambatan belakang kecerunan, yang bermaksud bahawa ia boleh memperoleh kecerunan fungsi bernilai skalar dengan berkesan berkenaan dengan parameter nilai tatasusunan, serta pembezaan mod hadapan, dan kedua-duanya boleh digunakan sewenang-wenangnya kombinasi.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

XLA (Algebra Linear Dipercepat) boleh mempercepatkan model TensorFlow tanpa menukar kod sumber.

Apabila program berjalan, semua operasi dilakukan secara individu oleh pelaksana. Setiap operasi mempunyai pelaksanaan kernel GPU yang telah disusun terlebih dahulu yang mana pelaksana dihantar.

Contohnya:

<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">model_fn</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">x</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">y</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">z</span>):<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">tf</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">reduce_sum</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">x</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">y</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">*</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">z</span>)

Berlari tanpa XLA, bahagian ini melancarkan tiga teras: satu untuk pendaraban, satu untuk penambahan dan satu untuk penolakan.

XLA boleh mencapai pengoptimuman dengan "menggabungkan" penambahan, pendaraban dan penolakan ke dalam teras GPU tunggal.

Operasi gabungan ini tidak akan menulis nilai perantaraan yang dihasilkan oleh memori ke dalam memori y*z x+y*z sebaliknya, ia akan "menstrim" hasil pengiraan perantaraan ini terus kepada pengguna , manakala Mereka disimpan sepenuhnya dalam GPU.

Dalam amalan, XLA boleh mencapai kira-kira 7x peningkatan prestasi dan kira-kira 5x peningkatan saiz kelompok.

Selain itu, XLA dan Autograd boleh digabungkan dalam apa jua cara, malah anda boleh menggunakan kaedah pmap untuk memprogramkan dengan berbilang teras GPU atau TPU sekaligus.

Dengan menggabungkan JAX dengan Autograd dan Numpy, anda boleh mendapatkan sistem pembelajaran mesin yang mudah diprogram dan berprestasi tinggi untuk CPU, GPU dan TPU.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Jelas sekali, Google telah belajar satu pengajaran kali ini Selain melancarkan sepenuhnya produknya sendiri, ia juga sangat aktif dalam mempromosikan pembinaan ekosistem sumber terbuka.

DeepMind secara rasmi menerima JAX pada tahun 2020, yang juga mengumumkan pengakhiran Google sendiri Sejak itu, pelbagai perpustakaan sumber terbuka telah muncul tanpa henti.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Melihat keseluruhan "perselisihan", Jia Yangqing berkata bahawa dalam proses mengkritik TensorFlow, sistem AI percaya bahawa Penyelidikan saintifik Pythonic adalah semua keperluan.

Tetapi di satu pihak, Python tulen tidak dapat mencapai reka bentuk bersama perisian dan perkakasan yang cekap, sebaliknya, sistem teragih peringkat atas masih memerlukan pengabstrakan yang cekap.

JAX sedang mencari keseimbangan yang lebih baik daripada pragmatisme Google, yang sanggup menumbangkan dirinya sendiri, patut dipelajari.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Pengarang pakej R causact dan buku teks analisis Bayesian yang berkaitan berkata bahawa dia gembira melihat peralihan Google daripada TF kepada JAX, penyelesaian yang lebih bersih.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Cabaran Google

Sebagai seorang pemula, walaupun Jax boleh belajar daripada kelebihan dua orang senior, PyTorch dan TensorFlow, kadangkala dia mungkin lambat datang juga membawa keburukan.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Pertama sekali, JAX masih terlalu "muda". Sebagai rangka kerja percubaan, ia masih jauh daripada mencapai standard produk Google yang matang.

Selain pelbagai pepijat tersembunyi, JAX masih bergantung pada rangka kerja lain untuk beberapa isu.

Untuk memuatkan dan prapemprosesan data, anda perlu menggunakan TensorFlow atau PyTorch untuk mengendalikan kebanyakan tetapan.

Jelas sekali, ini masih jauh daripada rangka kerja "sehenti" yang ideal.

Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX

Kedua, JAX sangat dioptimumkan terutamanya untuk TPU, tetapi apabila ia datang kepada GPU dan CPU, ia lebih teruk.

Di satu pihak, kekeliruan organisasi dan strategik Google dari 2018 hingga 2021 telah mengakibatkan dana yang tidak mencukupi untuk penyelidikan dan pembangunan untuk menyokong GPU, dan keutamaan yang rendah dalam menangani isu berkaitan.

Pada masa yang sama, mereka mungkin terlalu tertumpu untuk menjadikan TPU mereka sendiri mendapat lebih banyak kek dalam pecutan AI, jadi kerjasama dengan NVIDIA sememangnya sangat kurang, apatah lagi menambah baik butiran seperti masalah sokongan GPU.

Sebaliknya, penyelidikan dalaman Google sendiri sudah pasti tertumpu pada TPU, yang menyebabkan Google kehilangan gelung maklum balas yang baik tentang penggunaan GPU.

Selain itu, masa penyahpepijatan yang lebih lama, tidak serasi dengan Windows, risiko tidak menjejaki kesan sampingan, dsb., semuanya meningkatkan ambang penggunaan dan kemesraan Jax.

Kini, PyTorch berusia hampir 6 tahun, tetapi ia tidak mengalami penurunan seperti yang ditunjukkan TensorFlow ketika itu.

Nampaknya perjalanan Jax masih jauh jika dia mahu mengejar mereka yang lewat.


Atas ialah kandungan terperinci Dipukul oleh PyTorch! Google membuang TensorFlow, bertaruh pada JAX. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam