Highlights dari TensorFlow Dev Summit 2020

— 11 minute read

Also available in English

TensorFlow Dev Summit yang keempat telah diadakan pada tanggal 11 Maret 2020. Acara ini sepenuhnya disiarkan secara langsung, yang berarti saya bisa menonton semua pembicaraan dari rumah saya. Dalam tulisan ini saya akan menyoroti beberapa perkembangan TensorFlow yang menurut saya paling menarik. Anda juga dapat menemukan rekap lengkap acara di sini.

Lompat ke bagian:


Fairness Indicators permalink

Bias dapat terjadi pada setiap langkah dari pipeline ML, jadi penting untuk mengevaluasi bias manusia pada setiap langkah. Kesalahan yang disebabkan oleh bias ini bisa lebih berdampak ke satu kelompok pengguna tertentu daripada kelompok lainnya. Dengan pemikiran ini, kita perlu melakukan evaluasi atas berbagai irisan individu, atau kelompok pengguna, alih-alih mengandalkan metrik secara keseluruhan.

Bias dan pipeline ML
Bias pipeline ML

Talk ini dibuka dengan contoh yang cukup mudah dipahami tentang mengapa mengevaluasi model dari berbagai irisan itu penting. Contoh yang digunakan berasal dari QuickDraw dataset. Dataset ini diperoleh dari gambar-gambar yang disumbangkan oleh lebih dari 15 juta pemain dari permainan Quick, Draw. Model di permainan tersebut kerap kali gagal mengenali sepatu yang memiliki heels, karena pengguna sering menggambar sepatu yang tidak memiliki heels, seperti sepatu sneakers.

Sepatu di QuickDraw dataset
Sepatu di QuickDraw dataset

Itu hanya satu contoh, dan mungkin itu adalah sebuah contoh dengan dampak kecil. Tetapi bagaimana jika itu terjadi pada kasus-kasus seperti sistem klasifikasi toxic comments, di mana kalimat seperti "saya seorang wanita tuli" dianggap sebagai komentar yang bersifat toxic (padahal tentu nggak seharusnya seperti itu)?

Fairness Indicators adalah seperangkat tools yang membantu developer untuk mengevaluasi fairness metrics, seperti False Positive Rate (FPR) dan False Negative Rate (FNR), untuk klasifikasi biner dan multi-kelas. Fairness Indicators dapat menjawab pertanyaan seperti, "kelompok apa yang performance-nya paling buruk atau penting untuk dilihat?". Tool ini memungkinkan developer untuk menyelami lebih dalam irisan individual, mengeksplorasi akar penyebab perbedaan yang terjadi, dan menunjukkan peluang untuk perbaikan. Repositori Fairness Indicators tersedia di GitHub.

Talk ini menunjukkan beberapa kasus penggunaan: pertama, bagaimana kita dapat menggunakan Fairness Indicators untuk melakukan remediasi berbasis model melalui constraint-based optimization yang diimplementasikan menggunakan TFCO. Misalnya, Anda memiliki model yang terlatih untuk mendeteksi apakah seseorang sedang tersenyum atau tidak menggunakan unconstrained tf.keras.Sequential model. Anda mengevaluasi performance model Anda dengan mengiris data menjadi "Muda" dan "Tidak Muda" berdasarkan usia. FPR untuk kelompok umur "Tidak Muda" lebih tinggi (0,109) daripada "Muda" (0,039), seperti yang dapat Anda lihat dari visual yang disediakan oleh Fairness Indicators:

Hasil menggunakan unconstrained model
Hasil menggunakan unconstrained model

Dengan TFCO, Anda dapat menetapkan batasan pada subset yang Anda tentukan (dalam hal ini, kelompok usia). TFCO memastikan bahwa ia memilih model dengan FPR di mana overall FPR-nya tetap sama, sehingga kami tahu bahwa modelnya memang lebih baik dan kami nggak hanya memindahkan decision threshold. Dari visual yang disediakan oleh Fairness Indicator, Anda dapat melihat bahwa FPR untuk kelompok "Tidak Muda" berkurang:

Hasil menggunakan constrained model
Hasil menggunakan constrained model

Anda juga dapat membandingkan model yang berbeda dengan decision threshold yang berbeda pula, serta irisan yang telah ditentukan sebelumnya — dalam hal ini Tidak Muda vs Muda, dengan metrik FPR, dan beberapa decision threshold seperti 0,5 dan 0,3:

Model comparison using Fairness Indicators
Model comparison using Fairness Indicators

Anda dapat dengan melihat bahwa CNN mengungguli SVM di semua threshold.

Ini menarik karena sehari-hari, saya banyak melakukan slicing dengan berbagai kelompok dan beberapa decision threshold pada beberapa model selama evaluasi. Sejauh ini saya selalu melakukannya secara manual dan itu benar-benar membuat saya pusing. Fairness Indicators membuat proses ini menjadi jauh lebih sederhana sehingga saya nggak sabar untuk mencobanya sendiri di proyek saya.

Anda dapat melihat talk-nya di sini sini (sampai menit ke-12:41).

TensorFlow Privacy permalink

Data adalah kunci ML, jadi nggak mengherankan bahwa kita perlu menjawab pertanyaan tentang privasi saat membangun sistem ML. TensorFlow saat ini sedang mengerjakan beberapa proyek yang berkaitan dengan privasi. Salah satunya adalah TensorFlow Privacy, yang merupakan library TensorFlow optimizers untuk melatih model ML dengan differential privacy. Namun, ada beberapa tradeoff yang ditekankan dalam talk tersebut. Proses pelatihan dengan privacy dapat mengurangi akurasi dan menambah waktu pelatihan. Jika model sudah bias, differential privacy juga malah bisa jadi membuatnya lebih bias juga. Talk-nya nggak membahas ini lebih dalam, tetapi poin-poin ini ditegaskan lagi di akhir talk: ML dan privasi adalah bidang yang relatif baru, penelitian sedang berlangsung dan orang-orang juga masih belajar. Menjaga data pribadi tetap penting, tetapi tradeoff antara performance dan privasi itu nyata, jadi kita semua perlu menemukan keseimbangan yang tepat.

Talk ini juga menyebutkan TensorFlow Federated yang dirilis tahun lalu (juga sudah disebutkan dalam TF Dev Summit tahun lalu). TensorFlow Federated memungkinkan developer untuk melatih model tanpa mengumpulkan data mentah, berbeda dengan ML tradisional yang mengharuskan developer untuk menaruh data di tempat yang sama (misalnya di cloud) yang dapat menciptakan masalah privasi (apalagi ditambah masalah resource!). Cara kerjanya adalah sebuah model global yang dibagikan bersama akan dilatih di banyak klien yang menyimpan data pelatihan mereka secara lokal. Contoh use case-nya adalah prediksi next-word di keyboard tanpa harus mengunggah data sensitif pengguna.

Anda dapat melihat talk-nya di sini sini (mulai menit ke-12:41).

Performance Profiling in TensorFlow 2.x permalink

Model machine learning butuh resource yang banyak, jadi penting untuk memastikan bahwa Anda menjalankan model yang telah dioptimalkan. Google mengumumkan TensorFlow Performance Profiling yang memungkinkan Anda untuk membuat melakukan model profiling Anda secara sistematis. Profiler ini terdiri dari beberapa tool, seperti:

  • Overview Page: halaman ini menunjukkan ringkasan kinerja model Anda, grafik step-time, dan rekomendasi untuk langkah selanjutnya

  • Input pipeline analyzer: ini khusus untuk masalah terkait input. Analyzer akan memandu Anda melalui langkah-langkah yang rinci tentang apa yang harus dilakukan untuk menyelesaikan permasalahan di input pipeline

  • TensorFlow stats: menampilkan performance setiap op TensorFlow selama sesi profiling

  • Trace Viewer: menunjukkan timeline berisi aktivitas-aktivitas yang terjadi pada CPU dan GPU selama profiling

  • GPU Kernel Stats: ini khusus untuk statistik performance untuk setiap GPU accelerated kernel

Saya mencobanya sendiri dengan menjalankan model yang dilatih pada dataset MNIST yang berjalan pada GPU. Dengan menggunakan Tensorboard, Anda dapat membuka tab "Profil":

Navigate to the Profile page
Navigate to the Profile page

You can navigate between the four tools using the dropdown on the left:

Dropdown showing all the tools available
Dropdown showing all the tools available

Ada beberapa elemen pada Overview Page. Pertama adalah Performance Summary, yang menunjukkan kepada Anda Average Step Time yang dipecah menjadi informasi yang lebih terperinci seperti Compilation dan Input Time. Anda juga dapat melihat grafiknya.

Performance Summary
Performance Summary

Step-time Graph
Step-time Graph

Anda akan segera mengetahui bahwa program Anda sangat input bound, artinya program ini menghabiskan sebagian besar waktunya dalam data input pipeline. Berkat chart ini, Anda dapat memprioritaskan langkah-langkah debugging Anda — akan lebih masuk akal untuk menangani data input pipeline Anda terlebih dahulu sebelum Anda beralih ke aspek lain dari program Anda.

Yang menarik adalah Performance Profiler juga memberi Anda automated performance guide yang merekomendasikan Anda langkah-langkah selanjutnya yang perlu Anda lakukan:

Automated guide for the next steps
Automated guide for the next steps

Guide ini akan menunjukkan kepada Anda daftar tools yang relevan dengan masalah performance Anda. Jika Anda mengklik tautan ke Input Pipeline Analyzer, Anda akan melihat langkah-langkah terperinci yang dapat Anda ambil:

Input pipeline analyzer
Automated guide for the next steps

Menurut saya rekomendasi khusus ini sangat membantu. Anda dapat segera mencoba mendefinisikan num_parallel_calls jika Anda menggunakan Dataset.map () selama langkah preprocessing data, dan kemudian Anda dapat melihat apakah program Anda masih input bound.

Secara keseluruhan, performance profiler akan membantu Anda men-debug model performance Anda dengan cara yang lebih sistematis. Dengan cara ini Anda dapat fokus ke menerapkan perubahan yang perlu Anda lakukan alih-alih menghabiskan terlalu banyak waktu menganalisis dan menentukan apa langkah selanjutnya. Anda dapat menonton talk-nya di sini atau mencoba menerapkan profiler Anda sendiri ).

TensorFlow Runtime (TFRT) permalink

TensorFlow Runtime (atau kode nama TFRT) adalah runtime baru yang akan menggantikan runtime yang ada di TensorFlow. TFRT dibangun di atas MLIR. Mengapa membangun runtime baru? Alasannya sebagian besar didorong oleh feedback dan observasi dari ekosistem ML / TF saat ini. Sebagai contoh, kita mulai melihat model yang lebih cepat dan lebih besar, yang akhirnya membutuhkan lebih performance yang lebih baik untuk entah itu untuk eager maupun graph execution. Juga, kita menginginkan agar model ML dapat digunakan di mana-mana di semua platform. Hal ini sudah mulai kita lihat dari perkembangan menarik TensorFlow.js dan TF Lite yang memungkinkan masing-masing model ML di web dan perangkat seluler / IoT. Berdasarkan pengamatan-pengamatan ini, visi TFRT adalah menjadi unified, extensible runtime yang memberikan kinerja terbaik di kelasnya di berbagai perangkat keras.

Ya, TFRT bukanlah sesuatu yang kita dapat "gunakan" langsung seperti ketika kita menggunakan Tensorboard atau performance profiler, tapi ini adalah salah satu hal yang paling membuat saya senang karena akan berdampak pada banyak use case yang penting. Kita akan memiliki performance dan error reporting yang lebih baik selama pelatihan, sehingga akan lebih mudah untuk kita melakukan debug selama proses pelatihan. Dalam tahap serving di production, kita juga akan mendapat manfaat dari peningkatan performance dan pengurangan penggunaan CPU. TFRT juga memungkinkan deployment di berbagai platform.

Tim TFRT telah menjalankan benchmark dan hasilnya menunjukkan bahwa TFRT 28% lebih cepat dibandingkan dengan runtime TF saat ini (dengan lebih banyak optimasi yang masih akan datang). TFRT akan segera tersedia sebagai opt in agar tim TFRT punya waktu untuk memperbaiki masalah yang ada dan menyempurnakan performance-nya. Nantinya, TFRT akan menjadi runtime default untuk TensorFlow. Rencananya, TFRT juga ada menjadi proyek open-source.

Anda dapat menonton talk-nya di sini.

TensorFlow.js permalink

Alasan mengapa saya masuk ke bidang teknologi adalah pengembangan web, jadi saya senang sekali melihat perkembangan yang melibatkan web dan ML. TensorFlow.js telah berkembang banyak sejak pertama kali dirilis tiga tahun lalu sebagai deeplearn.js. Talk tentang TensorFlow.js membawa kita ke pembahasan tentang perkembangan TensorFlow.js mulai dari tahun 2019 sampai 2020 sejauh ini.

Pada tahun 2019, TensorFlow.js telah diadopsi oleh perusahaan seperti Airbnb dan Uber. Google juga merilis Teachable Machine 2.0 yang memungkinkan Anda untuk melatih model untuk mengenali gambar, suara, & pose Anda sendiri di situs web secara langsung. Saya telah menggunakan Teachable Machine 1.0, tetapi versi yang lebih baru ini memiliki UX yang lebih baik. Pada gambar di bawah, saya membuat aplikasi Don't Touch Your Face versi saya sendiri. Anda juga dapat mencobanya langsung di Teachable Machine 2.0!

Don't Touch Your Face with Teachable Machine
Don't Touch Your Face with Teachable Machine

Apa lagi? TensorFlow.js telah merilis model seperti Facemesh, Handtrack, dan Mobile BERT. Saya pribadi paling bersemangat tentang MobileBERT. BERT adalah model pra-pelatihan yang dikembangkan oleh Google yang telah menghasilkan hasil terbaik untuk tugas-tugas seperti Question Answering. BERT itu sendiri cukup besar, jadi senang melihat versi kompresinya yang berjalan 4x lebih cepat dan memiliki ukuran model 4x lebih kecil. MobileBERT mengambil paragraf/bagian sebuah teks dan pertanyaan sebagai input-nya. Ia kemudian akan mengembalikan paragraf/bagian yang kemungkinan besar dapat menjawab pertanyaan yang diberikan sebagai inputn. Anda bisa mendapatkan model dari TensorFlow Hub.

Update lain: Selain dari WebGL, TensorFlow.js sekarang memiliki backend WebAssembly (WASM)! Mengapa ini seru? Meskipun dalam beberapa kasus WebGL masih mengungguli WASM, WASM dapat mengungguli WebGL untuk model yang berukuran sangat kecil WASM juga lebih mudah diakses di perangkat kelas bawah — WASM dapat melayani 90% perangkat dibandingkan dengan 53% perangkat untuk WebGL. TensorFlow.js saat ini sedang mengembangkan TensorFlow.js dengan backend WebGPU yang diharapkan lebih baik dari WebGL.

Jika Anda ingin melihat semua hal keren yang dibuat menggunakan TensorFlow.js, lihat tagar #MadeWithTFJS di Twitter. Anda juga dapat menonton talk-nya di sini.

Catatan Akhir permalink

Saya pikir semua talk memiliki benang merah, yaitu membuat ML tersedia di lebih banyak platform untuk lebih banyak use case. Ini terlihat dari hal-hal seperti use case TF.js yang beragam, membangun runtime baru yang membuat model ML lebih performant di mana pun mereka berjalan, profiler yang memudahkan orang untuk mengoptimalkan model ML mereka, & yang paling penting bagaimana kita dapat meningkatkan pengembangan ML untuk berbagai use case (yang berarti akan lebih banyak orang yang terkena dampaknya) tanpa memasukkan dan menambah bias.

ML saat ini mempunyai performance yang semakin baik & membuat dampak yang semakin besar, tetapi pada saat yang sama tak dapat disangkal bahwa ML juga menjadi semakin kompleks — nggak hanya dari perspektif teknologi, tetapi juga dari sisi manusiawi. Penting bagi tools dan platform untuk berevolusi sesuai dengan hal tersebut & membuat ML tetap mudah diakses meski terdapat berbagai kompleksitas ini, dan saya pikir itulah yang sedang kita lihat dari TensorFlow sekarang.

Terima kasih tim TensorFlow untuk live streaming TensorFlow Dev Summit 2020 online. Saya menantikan semua rilis dan perkembangan TensorFlow selanjutnya di tahun 2020!