Swift untuk TensorFlow (Dalam Mode Arsip)

Swift untuk TensorFlow adalah eksperimen dalam platform pembelajaran mesin generasi berikutnya, yang menggabungkan penelitian terbaru di seluruh pembelajaran mesin, compiler, pemrograman terdiferensiasi, desain sistem, dan seterusnya. Diarsipkan pada Februari 2021. Beberapa pencapaian signifikan dari proyek ini antara lain:

Situs ini tidak akan menerima pembaruan lebih lanjut. Dokumentasi API dan download biner akan terus dapat diakses serta rekaman pertemuan Tinjauan Desain Terbuka .

Cepat

Swift adalah bahasa pemrograman tujuan umum open source , yang memiliki basis pengguna yang besar dan terus berkembang. Kami memilih Swift karena memiliki proses desain bahasa terbuka dan karena alasan teknis tertentu yang dirinci dalam dokumen " Mengapa Swift untuk TensorFlow ". Kami berasumsi bahwa sebagian besar pembaca belum mengenalnya, jadi kami akan membahas secara singkat beberapa hal penting tambahan tentangnya di sini.

Pengembangan Swift dimulai pada tahun 2010, dan bertujuan untuk menyatukan praktik terbaik dalam desain bahasa pemrograman ke dalam satu sistem daripada mencoba hal baru secara akademis atau menyebarkan metodologi pemrograman secara religius. Hasilnya, mendukung pengembangan multi-paradigma (misalnya fungsional, OOP, generik, prosedural, dll) semuanya dalam satu sistem, dan membawa banyak konsep terkenal dari bahasa akademis (misalnya pencocokan pola , tipe data aljabar , dan kelas tipe) ke garis depan. Alih-alih mendorong pengembang untuk menulis ulang semua kode mereka di Swift, hal ini secara pragmatis berfokus pada interoperabilitas dengan bahasa lain, misalnya, memungkinkan Anda mengimpor file header C secara langsung dan menggunakannya tanpa FFI dan (sekarang) kemampuan untuk menggunakan API Python tanpa pembungkus .

Swift memiliki tujuan yang berani mulai dari pemrograman sistem tingkat rendah hingga skrip tingkat tinggi, dengan fokus agar mudah dipelajari dan digunakan . Karena Swift harus mudah dipelajari dan digunakan namun juga kuat, Swift bergantung pada prinsip pengungkapan kompleksitas secara progresif , yang secara agresif memperhitungkan dampak kompleksitas pada orang-orang yang mendapat manfaat dari kompleksitas tersebut. "Rasa bahasa skrip" yang dipadukan dengan performa tinggi sangat berguna untuk pembelajaran mesin.

Aspek penting terakhir dari desain Swift adalah sebagian besar bahasa Swift sebenarnya diimplementasikan di perpustakaan standarnya. Tipe "Builtin" seperti Int dan Bool sebenarnya hanyalah struct yang didefinisikan di perpustakaan standar yang menggabungkan tipe dan operasi ajaib. Karena itu, terkadang kami bercanda bahwa Swift hanyalah "gula sintaksis untuk LLVM".

Masih banyak lagi hal keren tentang Swift dan banyak sekali konten yang tersedia online. Jika Anda tertarik untuk mempelajari lebih lanjut tentang konsep umum pemrograman Swift, berikut beberapa tautan untuk memulai:

Satu peringatan: Swift berkembang pesat di tahun-tahun awalnya, jadi Anda harus berhati-hati dengan apa pun sebelum Swift 3 (dirilis pada tahun 2016).

Mengapa Swift untuk TensorFlow?

Swift untuk TensorFlow adalah cara baru untuk mengembangkan model pembelajaran mesin. Ini memberi Anda kekuatan TensorFlow yang terintegrasi langsung ke dalam bahasa pemrograman Swift . Kami percaya bahwa paradigma pembelajaran mesin sangat penting sehingga layak mendapatkan dukungan bahasa dan compiler kelas satu .

Primitif mendasar dalam pembelajaran mesin adalah pengoptimalan berbasis gradien: menghitung turunan fungsi untuk mengoptimalkan parameter. Dengan Swift untuk TensorFlow, Anda dapat dengan mudah membedakan fungsi menggunakan operator diferensial seperti gradient(of:) , atau membedakannya terhadap keseluruhan model dengan memanggil metode gradient(in:) . API diferensiasi ini tidak hanya tersedia untuk konsep terkait Tensor —API ini juga digeneralisasikan untuk semua jenis yang sesuai dengan protokol Differentiable , termasuk vektor Float , Double , SIMD, dan struktur data Anda sendiri.

// Custom differentiable type.
struct Model: Differentiable {
    var w: Float
    var b: Float
    func applied(to input: Float) -> Float {
        return w * input + b
    }
}

// Differentiate using `gradient(at:_:in:)`.
let model = Model(w: 4, b: 3)
let input: Float = 2
let (𝛁model, 𝛁input) = gradient(at: model, input) { model, input in
    model.applied(to: input)
}

print(𝛁model) // Model.TangentVector(w: 2.0, b: 1.0)
print(𝛁input) // 4.0

Selain turunannya, proyek Swift untuk TensorFlow hadir dengan toolchain canggih untuk membuat pengguna lebih produktif. Anda dapat menjalankan Swift secara interaktif di notebook Jupyter, dan mendapatkan saran pelengkapan otomatis yang berguna untuk membantu Anda menjelajahi permukaan API yang sangat besar dari perpustakaan pembelajaran mendalam modern. Anda dapat memulai langsung di browser Anda dalam hitungan detik !

Bermigrasi ke Swift untuk TensorFlow sangat mudah berkat integrasi Python Swift yang kuat. Anda dapat memigrasikan kode Python Anda secara bertahap (atau terus menggunakan pustaka Python favorit Anda), karena Anda dapat dengan mudah memanggil pustaka Python favorit Anda dengan sintaks yang familier:

import TensorFlow
import Python

let np = Python.import("numpy")

let array = np.arange(100).reshape(10, 10)  // Create a 10x10 numpy array.
let tensor = Tensor<Float>(numpy: array)  // Seamless integration!