Alat Saya untuk Meningkatkan Produktivitas Pengembangan Model ML – Menuju AI – Teknologi, Sains, dan Teknik Terbaik

Author(s): Haryo Akbarianto Wibowo

Pembelajaran Mesin, Pembelajaran Mendalam

Alat Saya untuk Meningkatkan Produktivitas Pengembangan Model ML

Berfokus pada Pengembangan ML dalam teks

Foto oleh Mike Kotsch di Unsplash

Halo semuanya, selamat datang di artikel medium saya. Pada artikel kali ini, saya ingin berbagi tentang alat yang saya gunakan saat mengembangkan model Machine Learning (ML) berdasarkan pengalaman saya. Secara khusus, saya akan fokus pada beberapa alat Natural Language Project (NLP) karena saya saat ini kebanyakan menangani proyek NLP.

pengantar

Foto oleh Reza Namdari di Unsplash

Menurut pengalaman saya, ada banyak masalah produktivitas saat mengembangkan model ML. Terutama, saya menemukan apa yang saya lakukan tidak produktif. Misalnya, ketika saya mencatat hasil percobaan, saya sering bolak-balik dari folder keluaran untuk melihat hasil percobaan dan menulisnya secara manual ke file spreadsheet. Butuh banyak waktu.

Masalah lain datang dari kode yang dapat digunakan kembali. Saya, seorang lulusan dengan gelar ilmu komputer, peduli dengan kode dapat digunakan kembali. Ketika saya ingin menskalakan model ML sebelumnya, saya sering mengalami kesulitan untuk memperpanjang kodenya. Pada akhirnya, saya menulis ulang kodenya agar lebih rapi. Sekali lagi, itu juga memakan banyak waktu.

Dengan menggunakan beberapa tools ML dibawah ini, saya bisa mengatasi beberapa masalah yang muncul lebih dulu, terutama masalah waktu. Pada awalnya, perlu waktu untuk mempelajari alat-alat tersebut. Setelah saya merasa nyaman dengan mereka, saya dapat melihat bahwa saya memiliki produktivitas yang lebih tinggi dari sebelumnya.

Anda mungkin tertarik dengan artikel ini untuk seseorang yang ingin meningkatkan produktivitas dalam mengembangkan model ML, terutama di NLP. Perhatikan bahwa ini sesuai dengan preferensi saya dan mungkin tidak cocok untuk Anda. Alat-alat ini gratis untuk digunakan.

Saya akan membahas daftar yang berfokus pada pengembangan model, bukan penerapan.

Daftar isi

Pendahuluan Perpustakaan Pembelajaran Mesin Lingkungan Pengembangan Terpadu (IDE) Perpustakaan Pemrosesan Teks NLP Perpustakaan Pemrosesan Teks Data Eksplorasi Perpustakaan Eksperimen Logger & Alat Pengoptimalan Hyperparameter Kesimpulan Versi

Lingkungan Pengembangan Terintegrasi (IDE)

Saat ini merupakan bahasa pemrograman yang populer untuk melakukan tugas-tugas ML dengan Python. Karena popularitasnya, saya menggunakan Python untuk membuat kode sumber guna mengembangkan model ML. Di bawah ini adalah beberapa IDE yang saya gunakan.

PyCharm

Mengapa saya menggunakan Pycharm?

Saat mengembangkan kode, saya cenderung melakukan Pemrograman Berorientasi Objek (OOP) untuk membuat kode dapat digunakan kembali dan mengikuti prinsip KERING. Saat saya membuat kelas untuk sesuatu (mis., Model Pembelajaran Mendalam), Pycharm dapat membantu saya menentukan fungsi yang saya butuhkan dengan dokumentasinya. Ini sangat membantu saya saat mengembangkan kode. Selain itu, ia memiliki peringatan gaya kode yang sangat membantu saya untuk membuat kode saya lebih rapi. Pycharm juga membuat kode saya tidak terlalu rentan terhadap kesalahan. Tanpa petunjuk kesalahan ini, saya mungkin membutuhkan waktu lebih lama untuk membuat kode berfungsi.

Kapan saya menggunakan Pycharm?

Mengembangkan kode OOP (pengelompokan). Mengembangkan modul rumit yang memiliki beberapa dependensi.

Kode Visual Studio

Mengapa saya menggunakan kode Visual Studio?

Saya menggunakan Visual Studio Code, dimana kode yang ingin saya kembangkan tidak terlalu rumit (misal menulis beberapa fungsi pembersihan data). Saya menemukan bahwa Visual Studio Code lebih ringan daripada Pycharm (di PC saya) saat mengambil CPU dan RAM saya. Sayangnya, tidak ada pemeriksaan kesalahan yang lebih baik daripada Pycharm. Meskipun, Ini masih berguna dalam beberapa kasus, seperti mengisyaratkan deklarasi variabel yang hilang. Apa yang saya suka tentang menggunakan Visual Studio Code ketika ada konflik gabungan saat menggunakan Git. Ini menyoroti kode saya di mana konfliknya, dan saya dapat mengambil tindakan terhadapnya. Menurut pendapat saya, Ini memiliki Pengalaman Pengguna (UX) yang lebih baik daripada Pycharm (dari sudut pandang saya) ketika saya melakukan beberapa versi kode dan melakukan kode jarak jauh (ssh ke server jarak jauh).

Kapan saya menggunakan kode Visual Studio?

Koreksi kecil pada kode saya Kembangkan kode kecil (misalnya, menulis fungsi) Periksa kode sumber dengan cepat. Membuka Pycharm membutuhkan lebih banyak waktu daripada Visual Studio Code.

JupyterLab

Mengapa saya menggunakan JupyterLab?

Jupyter Lab, Jupyter’s “Next-Generation” Notebook Interface, adalah IDE populer di Komunitas Ilmu Data. Ini memiliki antarmuka yang indah dan mudah digunakan. Saya ingin menekankan fitur kode langsungnya, di mana Anda dapat membuat kode dan melihat hasilnya. Itu juga dapat menghasilkan visualisasi plot, yang terkadang saya perlukan untuk Data dan Analisis Eksplorasi (EDA).

Saya menggunakan JupyterLab saat melakukan EDA. Misalnya, saat menganalisis teks, saya terkadang memetakan frekuensi kata mereka dan menunjukkan hasilnya. Saya juga menggunakan Jupyterlab sebagai kode taman bermain. Saat saya mengembangkan model Deep Learning, saya sering membuat setiap lapisan model selangkah demi selangkah dan memeriksa keluaran model di notebook (file jupyterLab). Saya memisahkan setiap lapisan model dan memeriksa apakah outputnya benar atau tidak. Ketika saya pikir kodenya benar, saya menempatkan kode ke file ‘.py’ menggunakan IDE lain untuk mengurangi kesalahan kode.

Saya menghindari menulis kode yang dapat digunakan kembali di buku catatan. Menurut Joel Grus, mantan peneliti senior di AllenNLP, ia menunjukkan bahwa notebook memiliki reproduktifitas yang lebih rendah dalam slide ‘I Hate Notebook’ -nya. Itulah mengapa, saat mengembangkan kode yang dapat dijalankan yang dapat digunakan kembali, saya menuliskannya dalam sebuah modul, sehingga orang dapat dengan mudah menggunakan kode saya untuk melatih atau menguji model tersebut.

Kapan saya menggunakan JupyterLab?

Taman bermain untuk menguji data kode EDA dan hasil keluaran model

Perpustakaan Pembelajaran Mesin

Ini adalah beberapa pustaka yang saya gunakan saat membuat dan melatih model.

scikit-learn

Mengapa saya menggunakan scikit-learn?

Library yang populer dan harus digunakan jika saya mengembangkan model ML klasik dengan Python. Ini mudah digunakan dan sebagian besar mencakup beberapa algoritme pembelajaran mesin dangkal yang biasanya saya gunakan. Ini juga menyediakan beberapa hal preprocessing seperti TfIdfVectorizer (Pengolahan teks dengan menggunakan algoritma TF-IDF), MinMaxScaling (penskalaan numerik), dan train_test_split (membagi data menjadi tes kereta api) yang membuat hidup saya lebih mudah.

Daripada mengkodekan model dari awal, saya dapat menggunakan pustaka ini.

Kapan saya menggunakan scikit-learn?

Mengembangkan model klasik / dangkal Pemrosesan data Latihan pemisahan, validasi, pengujian

Pytorch

Mengapa saya menggunakan Pytorch?

Alasan utama saya menggunakan Pytorch karena Pytorch adalah Pythonic dan mudah dipelajari. Ini juga merupakan Kerangka Pembelajaran Dalam sumber terbuka populer yang secara aktif dikembangkan oleh komunitas. Dengan dukungan grafik dinamisnya, saya dapat dengan mudah men-debug kode saya. Ada banyak ekstensi yang dibangun komunitas agar produktif saat mengembangkan dengan menggunakan Pytorch. Dengan kemudahan penggunaan Pytorch, saya dapat membuat model prototipe dengan cepat.

Kapan saya menggunakan Pytorch?

Mengembangkan model Pembelajaran Mendalam Bereksperimen dengan beberapa arsitektur model

Pytorch Lightning

Mengapa saya menggunakan Pytorch Lightning?

Pytorch Lightning adalah pembungkus Pytorch untuk membuat kode terorganisir. Saat mengembangkan model Pytorch, saya menemukan bahwa ketika saya sering membuat kode yang tidak terorganisir. Ketika saya meneliti model, saya biasanya fokus pada membuat kode yang benar daripada kerapian kode. Itu membuat kode berantakan dan sulit untuk diskalakan. Selain itu, ketika saya melakukan proyek pengembangan model lain, saya sering melihat beberapa ‘pola’ dalam kode yang menurut saya tidak berulang kali dikodekan.

Pytorch Lightning datang untuk menyelamatkan. Saya suka perpustakaan ini karena membuat kode saya teratur. Ini menciptakan beberapa antarmuka yang harus saya ikuti. Beberapa fitur dapat dengan mudah digunakan, seperti Early Stopping dan Model Checkpointing. Fitur-fitur ini membuat kode saya lebih rapi, dan saya dapat menskalakan kode saya dengan cepat saat diperlukan.

Kapan saya menggunakan Pytorch Lightning?

Ketika saya Mengembangkan Pembelajaran Mendalam menggunakan Pytorch, saya membungkus kode menggunakan perpustakaan ini.

Transformers HuggingFace

Mengapa saya menggunakan Transformers HuggingFace?

Transformer Hugginface membuat hidup saya lebih mudah saat mengembangkan model NLP berbasis Transformer. Saat memuat model terlatih, saya dapat dengan mudah mengetik nama model, dan itu akan diunduh dan dimuat secara otomatis. Setelah saya memuat model, saya dapat melatih model atau menyesuaikan model sesuai kebutuhan saya.

Saya sering membungkus model terlatih HuggingFace ke modul Pytorch Lightning.

Kapan saya menggunakan HuggingFace’s Transformers?

Mengembangkan model NLP Deep Learning berbasis Transformer

Pustaka Pemrosesan Teks NLP

Ini adalah beberapa perpustakaan yang saya gunakan untuk memproses data teks.

Spacy

Mengapa saya menggunakan Spacy?

Saya terutama menggunakan Spacy untuk membuat token teks saya untuk memproses teks saya. Saya menggunakan spacy untuk dengan mudah mengekstrak beberapa fitur teks seperti Part of Speech dan lemmatisasi sebuah kata.

Kapan saya menggunakan Spacy?

Tokenisasi Teks Ekstraksi Fitur Teks

NLTK

Mengapa saya menggunakan NLTK?

Mirip dengan Spacy. Saya menggunakan fitur yang tidak tersedia di Spacy, seperti tokenizing teks Twitter.

Kapan saya menggunakan NLTK?

Tokenisasi Teks Ekstraksi Fitur Teks

Tokenizer HuggingFace

Mengapa saya menggunakan tokenizers HuggingFace?

Saat mengembangkan model NLP, terkadang kami ingin mencoba algoritme tokenizer sub-kata (mis. ‘Eating → [‘eat’ — ‘ing’]). Saya menggunakan perpustakaan ini untuk membuat representasi sub-kata. Dengan library ini, saya dapat melatih tokenizer dan menggunakannya sebagai tokenizer. Ini dikembangkan di Rust, jadi cepat.

Kapan saya menggunakan tokenizers HuggingFace?

Alat Logger Eksperimen & Pengoptimalan Hyperparameter

Ini adalah beberapa alat yang saya gunakan untuk mencatat dan menyetel saat mengembangkan model.

WANDB

Mengapa saya menggunakan WandB?

Saya hanya menggunakan WandB karena menurut saya mudah digunakan untuk mencatat percobaan saya. WandB juga dapat diintegrasikan dengan mudah saat saya menggunakan Pytorch Lightning. Ini sangat membantu saya dalam mencatat dan memvisualisasikan hasil eksperimen saya. Dengan WANDB, saya dapat melacak kembali eksperimen lama saya. Saya suka antarmukanya yang sederhana untuk mengumpulkan log percobaan.

Mereka juga memiliki alat pengoptimalan Hyperparameter yang disebut ‘sapuan’ di mana saya dapat melakukan beberapa strategi pengoptimalan hyperparameter. Ini memiliki pencarian grid, pencarian acak, dan Optimasi Bayesian. Ini juga mencatat hasil pengoptimalan hyperparameter dan menunjukkan pentingnya fitur.

Kapan saya menggunakan WandB?

Pengoptimalan Hyperparameter Pencatatan Eksperimen

Pembuatan Versi

Ini adalah beberapa alat yang saya gunakan untuk membuat versi kode, data, dan model saya.

Git

Mengapa saya menggunakan Git?

Ketika saya mengembangkan dengan kode sumber, saya memastikan untuk membuat versi kode saya agar dapat dilacak. Karena saya sering bekerja sama dengan orang lain, git dapat membuat kolaborasi menjadi mulus. Bahkan ketika saya melakukan beberapa proyek mandiri, saya juga terbiasa menggunakan git untuk membuat versi kode saya.

Kapan saya menggunakan Git?

Saat saya membuat kode sumber pada sebuah proyek. Berkolaborasi dengan orang lain.

DVC

Mengapa saya menggunakan DVC?

Untuk membuat eksperimen model dapat direproduksi, saya juga mengontrol versi data dan model untuk setiap commit di Git. Kasus penggunaan Git tidak cocok untuk menangani file besar (keluaran atau data model), jadi saya membutuhkan alat lain. Salah satu alat yang saya gunakan untuk versi file besar adalah DVC. Saya dapat menentukan di mana saya dapat menyimpan file, seperti Virtual Private Server, Google Cloud Storage, dan bahkan Google Drive. Saya dapat mendorong ke penyimpanan dan menariknya sesuai dengan versi komit di repositori git.

Kapan saya menggunakan DVC?

Lakukan proyek ML saat menggunakan file besar.

Perpustakaan Eksplorasi Data

Ini adalah beberapa alat yang saya gunakan untuk melakukan manipulasi dan analisis data.

Panda

Mengapa saya menggunakan panda?

Saya menggunakan panda untuk memanipulasi dan menganalisis data yang akan digunakan untuk melatih model ML. Saat melakukan EDA, saya selalu menggunakan panda untuk melihat data sesuai dengan rasa penasaran saya. Saya juga memanfaatkan panda untuk melakukan pemrosesan dan pembersihan data. Selain itu, pustaka pandas mudah dan fleksibel untuk digunakan.

Saat menganalisis data, terkadang saya memplotnya menggunakan matplotlib yang dapat dipanggil menggunakan fungsi ‘.plot’ di Dataframe panda. Jika saya ingin yang mewah, saya menggunakan Plotly untuk melakukannya.

Kapan saya menggunakan Pandas?

Pembersihan Data dan Pemrosesan Awal Analisis dan Visualisasi Data

Kesimpulan

Itulah beberapa alat yang sering saya gunakan saat mengembangkan model ML. Perhatikan bahwa alat ini dipilih hanya berdasarkan preferensi saya. Mungkin ada beberapa alat yang tidak cocok untuk Anda. Setiap orang memiliki cita rasa yang unik dalam meningkatkan produktivitasnya. Jika Anda ingin menyarankan beberapa alat bagus untuk meningkatkan produktivitas, Anda dapat membagikannya di bagian komentar 😉.

Terima kasih telah membaca artikel saya. Semoga artikel saya bermanfaat untuk anda 🙂. Sampai jumpa di artikel saya selanjutnya!

Sumber: Pixabay dengan Lisensi Pixabay

Alat Saya untuk Meningkatkan Produktivitas Pengembangan Model ML awalnya diterbitkan di Towards AI on Medium, tempat orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Towards AI