Mengapa Swift Dapat Menjadi Acara Besar dalam Pembelajaran Jauh

Halo, Habr! Saya mempersembahkan kepada Anda terjemahan artikel "Mengapa Swift Mungkin Menjadi Hal Besar Selanjutnya dalam Pembelajaran Mendalam" oleh Max Pechyonkin, yang membuat saya tertarik, di mana penulis membahas bahasa di mana pelatihan mendalam akan dilakukan di tahun-tahun mendatang.

Jika Anda melakukan pelatihan mendalam, maka kemungkinan besar Anda harus mulai belajar Swift

Entri


Jika Anda pemrograman, maka kemungkinan besar ketika Anda mendengar Swift, Anda berpikir tentang mengembangkan aplikasi di iOS dan MacOS. Jika Anda pelatihan mendalam, maka Anda seharusnya sudah mendengar Swift for Tensorflow (S4TF). Maka Anda mungkin bertanya-tanya, “Mengapa Google membuat versi TensorFlow untuk Swift? Lagi pula, sudah ada versi untuk Python dan C ++, lalu mengapa bahasa lain? " Dalam posting ini, saya akan mencoba menjawab pertanyaan ini dan menyatakan alasan mengapa Anda harus memonitor S4TF, serta bahasa Swift itu sendiri. Saya tidak akan mencoba membuat analisis rinci, saya hanya akan mencoba menggambarkan gambaran besar dengan banyak tautan, jika Anda tertarik, Anda bisa menggali lebih dalam.

Swift memiliki dukungan yang sangat kuat


Swift diciptakan oleh Chris Luttner ketika dia bekerja di Apple. Sekarang Chris bekerja untuk Google Brain (salah satu tim peneliti kecerdasan buatan terbaik di dunia). Fakta bahwa pencipta bahasa Swift sekarang bekerja di laboratorium, yang terlibat dalam pelatihan mendalam, berbicara tentang keseriusan proyek ini.

Beberapa waktu yang lalu, orang-orang di Google menyadari bahwa meskipun Python dan bahasa yang luar biasa, masih memiliki banyak batasan yang sulit untuk diatasi. Bahasa baru diperlukan untuk TensorFlow, dan setelah banyak pertimbangan, Swift terpilih sebagai kandidat. Saya tidak akan merinci di sini, tetapi di sini ada dokumen yang menjelaskan kekurangan Python, serta apa bahasa lain yang dipertimbangkan dan bagaimana semua itu muncul bersamaan di Swift.

Swift for TensorFlow jauh lebih dari sekedar perpustakaan


Swift for TensorFlow bukan hanya TF untuk bahasa lain. Ini pada dasarnya adalah cabang lain (dalam arti git ) dari bahasa Swift itu sendiri. Ini berarti bahwa S4TF bukan perpustakaan; itu adalah bahasa dengan aturannya sendiri, dengan fungsi bawaannya sendiri yang mendukung semua fungsi yang diperlukan oleh TensorFlow. Sebagai contoh, S4TF memiliki sistem diferensiasi otomatis yang sangat kuat: ini adalah salah satu hal mendasar dalam pembelajaran mendalam, diperlukan untuk menghitung gradien. Bandingkan ini dengan Python, di mana diferensiasi otomatis bukan komponen utama bahasa. Beberapa fitur yang awalnya dikembangkan sebagai bagian dari S4TF kemudian diintegrasikan ke dalam bahasa Swift itu sendiri.

Cepat cepat


Ketika saya pertama kali mengetahui bahwa Swift secepat C, saya kagum. Saya tahu bahwa C sangat dioptimalkan dan memungkinkan untuk mencapai kecepatan yang sangat tinggi, tetapi ini karena manajemen memori mikro, dan karena itu C memiliki masalah dengan keamanan memori. Selain itu, C tidak mudah dipelajari.

Swift sekarang berjalan secepat C dalam perhitungan numerik, ia tidak memiliki masalah dengan keamanan memori, dan jauh lebih mudah dipelajari. Kompiler LLVM Swift sangat kuat dan memiliki optimasi yang sangat efisien, ia akan memberikan kecepatan kode yang sangat cepat.

Anda dapat menggunakan Python, C dan C ++ di Swift


Karena Swift untuk pembelajaran mesin berada pada tahap yang sangat awal pengembangannya, maka banyak perpustakaan untuk MO belum diciptakan untuk itu. Anda tidak perlu terlalu khawatir tentang ini karena Swift memiliki kompatibilitas Python yang luar biasa dengan Python. Anda cukup mengimpor pustaka Python apa pun ke Swift, dan itu berfungsi. Anda juga dapat mengimpor pustaka C dan C ++ ke Swift (untuk C ++ Anda perlu memastikan bahwa file header ditulis dalam C murni, tanpa fungsi C ++).

Untuk meringkas, jika Anda memerlukan fungsionalitas tertentu, tetapi belum diimplementasikan dalam Swift, Anda dapat mengimpor paket Python, C atau C ++ yang sesuai.
Mengesankan!

Swift bisa menjadi sangat rendah


Jika Anda pernah menggunakan TensorFlow, kemungkinan besar Anda melakukannya dengan paket Python. Di bawah tenda, versi Python dari perpustakaan TensorFlow menggunakan kode C pada tingkat yang sangat rendah. Jadi ketika Anda memanggil fungsi dalam TensorFlow, pada tingkat tertentu Anda menggunakan beberapa kode C. Ini berarti ada batas seberapa dalam Anda dapat memeriksa kode sumber. Misalnya, jika Anda ingin melihat bagaimana konvolusi diimplementasikan, Anda tidak akan melihat kode Python karena diimplementasikan dalam C.

Swift berbeda. Chris Luttner menyebut Swift " gula sintaksis untuk LLVM [bahasa assembly]". Ini berarti, pada kenyataannya, Swift bekerja hampir secara langsung dengan perangkat keras, dan di antara tidak ada baris kode lain yang ditulis dalam C. Ini juga berarti bahwa Swift sangat cepat, seperti yang saya jelaskan di atas. Ini semua mengarah pada fakta bahwa Anda, sebagai pengembang, dapat memeriksa kode di level yang sangat tinggi dan sangat rendah, tanpa perlu menggunakan C.

Apa selanjutnya


Swift hanyalah salah satu bagian dari inovasi pembelajaran mendalam yang berlangsung di Google. Ada komponen lain yang juga sangat terhubung: MLIR , yang berarti representasi tingkat menengah. MLIR akan menjadi infrastruktur kompilator pemersatu yang akan memungkinkan Anda untuk menulis kode dalam Swift (atau bahasa lainnya) dan mengompilasinya pada perangkat keras pendukung apa pun. Sekarang ada banyak kompiler untuk peralatan target yang berbeda, tetapi MLIR mampu mengubah ini, itu akan memungkinkan tidak hanya menggunakan kembali kode, tetapi juga menulis komponen kompiler tingkat rendah Anda sendiri. Ini juga akan memungkinkan para peneliti untuk menggunakan pembelajaran mesin untuk mengoptimalkan algoritma tingkat rendah.

Sementara MLIR bertindak sebagai kompiler untuk pembelajaran mesin, kami juga melihat kemungkinan menggunakan metode pembelajaran mesin dalam kompiler. Ini sangat penting karena jumlah insinyur yang mengembangkan perpustakaan numerik tidak tumbuh secepat variasi model atau perangkat keras untuk pembelajaran mesin.

Bayangkan menggunakan pembelajaran mendalam untuk mengoptimalkan algoritme tingkat rendah untuk mempartisi memori menjadi data ( Halide berusaha memecahkan masalah serupa). Dan ini baru permulaan, kami menunggu lebih banyak aplikasi kreatif lainnya menggunakan pembelajaran mesin dalam kompiler.

Ringkasan


Jika Anda berada di bidang pembelajaran mendalam, maka Anda mungkin harus mulai belajar Swift. Ini akan membawa banyak keunggulan dibandingkan Python. Google serius berinvestasi dalam menjadikan Swift komponen utama infrastruktur TensorFlow ML mereka, dan kemungkinan besar Swift akan menjadi bahasa pembelajaran yang mendalam. Jika Anda sudah mulai belajar dan menggunakan Swift, ini akan memberi Anda keunggulan perintis.

Source: https://habr.com/ru/post/id457954/


All Articles