Halo semuanya. Jumat ini, kami berbagi publikasi pertama tentang peluncuran kursus
Data Scientist dengan Anda . Selamat membaca.
Banyak organisasi telah berusaha untuk menggunakan kecerdasan buatan dalam keputusan mereka untuk memperluas ruang lingkup kegiatan atau mengembangkan start-up mereka, tetapi satu hal penting untuk dipahami: teknologi pengembangan yang dipilih harus sejalan dengan kerangka kerja yang baik untuk pembelajaran yang mendalam, terutama karena setiap kerangka berfungsi untuk semacam tujuan yang terpisah. Pencarian untuk tandem sempurna dalam hal ini adalah prasyarat untuk pengembangan bisnis yang lancar dan cepat dan keberhasilan penyebaran proyek.

Daftar kerangka kerja untuk pembelajaran mendalam berikut dapat membantu dalam proses memilih alat yang tepat untuk memecahkan masalah spesifik yang Anda hadapi dalam proses mengerjakan proyek. Anda dapat membandingkan pro dan kontra dari berbagai solusi, mengevaluasi batasannya dan mempelajari kasus penggunaan terbaik untuk setiap solusi!
1. TensorflowDibuat oleh Google dan ditulis dalam Python dan C ++, TensorFlow adalah salah satu perpustakaan open source terbaik untuk komputasi numerik. Itu harus bagus, karena bahkan raksasa seperti DeepMind, Uber, AirBnB atau Dropbox telah memilih kerangka kerja ini untuk kebutuhan mereka.
TensorFlow baik untuk proyek-proyek kompleks seperti jaringan saraf multi-layer. Ini digunakan untuk pengenalan suara atau gambar dan aplikasi teks seperti Google Translate, misalnya.
Tentu saja, para ahli menyebut banyak keunggulannya:
- Sejumlah besar manual dan dokumentasi telah ditulis untuknya;
- Ini menawarkan alat yang kuat untuk memantau proses pembelajaran model dan visualisasi (Tensorboard);
- Ini didukung oleh komunitas besar pengembang dan perusahaan teknologi;
- Ini menyediakan model layanan;
- Ini mendukung pembelajaran terdistribusi;
- TensorFlow Lite memberikan output ke perangkat latensi rendah untuk perangkat seluler;
Dan kontra:
Ini kehilangan kecepatan dalam benchmark, dibandingkan dengan CNTK dan MXNet, misalnya;
Ini memiliki ambang masuk yang lebih tinggi untuk pemula daripada PyTorch atau Keras. Naked Tensorflow adalah level yang cukup rendah dan membutuhkan banyak kode boilerplate, dan mode "deteksi dan jalankan" untuk Tensorflow sangat menyulitkan proses debugging.
Ada batasan signifikan lainnya: satu-satunya bahasa yang didukung sepenuhnya adalah Python.
2. PyTorchPyTorch adalah penerus Python ke perpustakaan Lua Torch, dan merupakan pesaing besar bagi TensorFlow. Ini dikembangkan oleh Facebook dan digunakan oleh Twitter, Salesforce, Universitas Oxford dan banyak perusahaan lainnya.
PyTorch terutama digunakan untuk melatih model dengan cepat dan efisien, jadi
ini adalah pilihan sejumlah besar pengembang.
Ini memiliki banyak keuntungan penting:
- Berkat arsitektur kerangka kerja, proses pembuatan model cukup sederhana dan transparan;
- Mode "define-by-run" default adalah referensi ke pemrograman tradisional. Kerangka kerja ini mendukung alat debugging populer seperti pdb, ipdb, atau PyCharm debugger;
- Ini mendukung konkurensi data deklaratif;
- Ini memiliki banyak model pra-terlatih dan bagian modular prefabrikasi yang mudah digabungkan;
Pelatihan yang didistribusikan tersedia sejak versi 0.4.
Tetapi kerangka kerja ini memiliki beberapa kekurangan yang tidak dapat disangkal:
- Kurangnya dukungan model;
- Dia belum siap untuk rilis penuh dalam produksi, tetapi peta jalan ke versi 1.0 terlihat sangat mengesankan;
- Ada kekurangan antarmuka untuk pemantauan dan visualisasi, seperti TensorBoard - namun, ia memang memiliki koneksi eksternal ke Tensorboard.
3.
KerasKeras adalah pustaka berbasis Python minimal yang dapat berjalan di atas TensoFlow, Theano, atau CNTK. Ini dikembangkan oleh seorang insinyur Google, FranΓ§ois Schollet, untuk mempercepat percobaan. Keras mendukung berbagai lapisan jaringan saraf, seperti lapisan konvolusional, berulang atau padat.
Kerangka kerja ini baik untuk terjemahan, pengenalan gambar, ucapan, dll.
Keuntungan:
- Prototipe sangat cepat dan mudah;
- Cukup kecil untuk membangun model pembelajaran yang mendalam untuk banyak lapisan;
- Memiliki modul yang sepenuhnya dapat dikonfigurasi;
- Ini memiliki antarmuka yang sederhana dan intuitif, masing-masing, baik untuk pemula;
- Memiliki dukungan bawaan untuk pelatihan pada banyak GPU;
- Itu dapat dikonfigurasikan sebagai evaluator untuk TensorFlow dan dilatih pada kelompok GPU di platform Google Cloud;
- Berjalan pada Spark;
- Mendukung GPU NVIDIA, Google TPUs, GPU Open-CL seperti AMD.
Dan beberapa kelemahan:
- Ini mungkin berubah menjadi terlalu tinggi dan tidak selalu mudah untuk disesuaikan;
- Ini terbatas pada backend Tensorflow, CNTK, dan Theano.
Keras tidak berfungsi seperti TensorFlow dan menyediakan lebih sedikit opsi untuk mengelola koneksi jaringan, yang bisa menjadi batasan serius jika Anda akan membuat beberapa model pembelajaran mendalam khusus.
4. MXNet
Ini adalah kerangka pembelajaran yang mendalam yang dibuat oleh Apache yang mendukung banyak bahasa seperti Python, Julia, C ++, R, atau JavaScript. Ini digunakan oleh Microsoft, Intel, dan Amazon Web Services.
Kerangka kerja MXNet dikenal dengan skalabilitasnya yang tinggi, itulah sebabnya mengapa ia digunakan oleh perusahaan besar terutama untuk pengenalan suara dan tulisan tangan, NLP dan peramalan.
Ini memiliki banyak keunggulan:
- Ini cukup cepat, fleksibel dan efektif dalam bekerja dengan algoritma pembelajaran yang mendalam;
- Ini memberikan dukungan GPU canggih;
- Itu dapat berjalan di perangkat apa pun;
- Ini memiliki API imperatif kinerja tinggi;
- Ini memberikan dukungan model yang mudah;
- Ini sangat scalable;
- Ini memberikan dukungan yang baik untuk banyak bahasa pemrograman, seperti Python, R, Scala, JavaScript dan C ++, dan banyak lainnya.
Sekarang untuk kerugian dari MXNet:
- Di sekitarnya tidak ada lagi komunitas seperti di sekitar TensorFlow;
- Tidak begitu populer di komunitas ilmiah.
Berdasarkan argumen di atas, MXNet adalah kerangka kerja yang baik untuk proyek-proyek industri besar, tetapi masih sangat muda, jadi ingatlah bahwa Anda mungkin tidak menerima dukungan teknis dalam menyelesaikan masalah Anda secepat yang Anda inginkan.
5. CNTKKerangka kerja ini sekarang disebut Microsoft Cognitive Toolkit. Ini adalah kerangka pembelajaran terbuka yang dirancang untuk bekerja dengan kumpulan data yang sangat besar dengan dukungan untuk Python, C ++, C # dan Java.
CNTK menyediakan pelatihan model yang efektif untuk pengenalan suara, tulisan tangan dan gambar, dan juga mendukung CNN dan RNN. Ini digunakan di Skype, Xbox dan Cortana.
Seperti biasa, para ahli telah menghargai manfaatnya:
- Menunjukkan kinerja dan skalabilitas yang baik;
- Menyediakan banyak komponen yang dioptimalkan dengan baik;
- Menawarkan dukungan untuk Apache Spark;
- Efektif dalam penggunaan sumber daya;
- Memiliki integrasi yang mudah dengan Azure Cloud;
Dan satu kelemahan:
- Dukungan komunitas terbatas.
6. Caffe and Caffe2Caffe adalah kerangka kerja C ++ yang memiliki antarmuka Python yang sangat berguna. Ini mendukung CNN dan jaringan distribusi langsung, dan juga baik untuk model pelatihan (tanpa menulis garis kode tambahan), memproses gambar, dan meningkatkan jaringan saraf yang ada. Di sisi lain, tidak terdokumentasi dengan baik dan sulit untuk dikompilasi. Tidak ada informasi tentang penggunaan Caffe oleh perusahaan besar mana pun. Pada 2017, Facebook merilis Caffe 2, yang menjadi penerus nyata Caffe, dan diciptakan untuk pengembangan mobile dan skala besar di lingkungan produksi.
Dia dikenal di Facebook sebagai,
"Platform siap produksi (...) yang berjalan di lebih dari 1 miliar smartphone, mencakup 8 generasi iPhone dan enam generasi arsitektur prosesor Android."Kerangka kerja ini bagus karena beberapa alasan:
- Ini menawarkan model pra-terlatih untuk membuat aplikasi demo;
- Cepat, terukur, dan hanya memakan sedikit ruang;
- Ini berfungsi baik dengan kerangka kerja lain seperti PyTorch, dan pada akhirnya akan diintegrasikan ke dalam PyTorch 1.0;
- Ini memberikan pekerjaan yang dioptimalkan dengan server.
Dan lagi, kelemahan utama:
- Dukungan komunitas terbatas.
Terlepas dari kenyataan bahwa Caffe2 lulus tes dengan baik dalam hal kecepatan dan memori yang ditempati, itu relatif baru dan cukup terbatas dalam hal penggelaran jaringan yang kompleks yang membutuhkan, setidaknya, alat yang nyaman untuk debugging dan dukungan teknis.
7. Deeplearning4jJika bahasa pemrograman utama Anda adalah Java, maka Anda harus melihat lebih dekat pada DL4J. Ini adalah platform komersial open source yang ditulis terutama untuk Java dan Scala yang memberikan dukungan yang baik untuk berbagai jenis jaringan saraf (seperti CNN, RNN, RNTN, atau LTSM).
Kerangka kerja ini akan menjadi pilihan yang baik karena memiliki potensi besar di bidang pengenalan gambar, pemrosesan bahasa alami, pencarian kerentanan dan analisis teks.
Pro:
- Dapat diandalkan, fleksibel dan efisien;
- Itu dapat memproses sejumlah besar data tanpa kehilangan kecepatan;
- Bekerja dengan Apache Hadoop dan Spark, pada CPU atau GPU yang didistribusikan;
- Memiliki dokumentasi yang baik;
- Memiliki versi komunitas dan perusahaan.
Apa yang mengejutkan, berbicara tentang kerangka kerja ini, para ahli tidak fokus pada kelemahan tertentu, seperti anggaplah pada debat umum tentang kesesuaian Java untuk pembelajaran mesin pada umumnya. Karena Java tidak sering digunakan dalam proyek-proyek pembelajaran mesin, kerangka kerja ini tidak dapat mengandalkan pertumbuhan basis data kode siap pakai untuk memecahkan masalah tertentu. Akibatnya, biaya proyek Anda bisa menjadi jauh lebih tinggi dan menyelesaikan satu masalah dapat secara signifikan memperlambat kemajuan keseluruhan proyek.
8. ChainerKerangka kerja pembelajaran mendalam Python lainnya didukung oleh raksasa seperti Intel, IBM, NVIDIA, dan AWS. Itu dapat dengan mudah menggunakan beberapa GPU.
Chainer terutama digunakan untuk pengenalan suara, terjemahan mesin, dan analisis kunci. Ini mendukung berbagai arsitektur jaringan, seperti CNN, fast-forward, RNN, dan memiliki beberapa keunggulan penting dibandingkan para pesaingnya:
- Ini jauh lebih cepat daripada kerangka kerja Python lainnya;
- Ini sangat fleksibel dan intuitif;
- Jaringan yang ada dapat dimodifikasi secara langsung saat runtime;
Di sisi lain:
- Sangat sulit dalam hal debug;
- Di sekitarnya adalah komunitas yang relatif kecil;
Karena kerangka kerja berbasis Python lainnya jauh lebih populer, Anda mungkin tidak mendapatkan bantuan secepat kerangka kerja lain seperti TensorFlow atau PyTorch.
Untuk meringkas
Memilih kerangka kerja terbaik untuk proyek pembelajaran yang mendalam bisa sangat sulit. Anda perlu mempertimbangkan faktor-faktor berikut:
- Jenis jaringan saraf yang akan Anda kembangkan;
- Bahasa pemrograman yang Anda gunakan;
- Jumlah alat dan opsi tambahan yang mungkin Anda butuhkan;
- Anggaran proyek;
- Sifat dan tujuan yang dikejar proyek.
Saya harap perbandingan kerangka kerja ini akan menjelaskan masalah ini dan membantu Anda memilih solusi yang paling cocok untuk proyek Anda.
Tulis komentar dan sampai jumpa di
hari terbuka , yang akan diadakan 19 Maret oleh
Alexander Nikitin .