Membangun Labeler NearBy

Table of Contents

Hackathon Pertama Saya

Pada bagian akhir musim panas 2022, saya sangat ingin mengerjakan sebuah proyek yang menarik. Saya baru saja menyelesaikan pendidikan sarjana saya dan bekerja penuh waktu sebagai seorang insinyur perangkat lunak. Saya sangat ingin berkomitmen pada proyek sampingan dan pada saat itu, saya memiliki cukup waktu luang untuk melakukannya. Saya benar-benar tidak tahu harus mengerjakan apa, sampai saya menemukan sebuah situs web bernama Devpost pada Agustus 2022. Devpost adalah situs web yang menyelenggarakan kompetisi perangkat lunak yang disebut hackathon. Saat menjelajahi Devpost, saya menemukan sebuah hackathon bernama NEAR MetaBUILD III yang diselenggarakan oleh organisasi NEAR Protocol.

Apa itu NEAR?

NEAR Protocol adalah sebuah blockchain yang mendukung smart contract dan mata uang kripto NEAR. Ini terutama dikenal karena memiliki biaya transaksi yang sangat rendah, mendukung smart contract, memiliki jaringan uji resmi sendiri, dan lingkungan pengembang yang hebat karena Anda dapat menulis smart contract dalam Rust dan/atau JavaScript. Anda bisa mendapatkan gambaran yang lebih baik tentang NEAR Protocol melalui video luar biasa CoinGecko:

Selama waktu ini, Coinbase secara resmi mulai mendukung NEAR Protocol sebagai koin yang dapat diperdagangkan di platform mereka. Ini merupakan hal besar karena Coinbase dikenal sangat selektif ketika memilih koin yang mereka dukung di platform mereka. Hal ini membantu menjadikan NEAR sebagai platform yang lebih dapat dipercaya. Anda masih bisa memperdagangkan NEAR on Coinbase hingga hari ini.

Mengapa Berkomitmen?

Setelah menghabiskan beberapa waktu untuk berpikir, saya memutuskan untuk menginvestasikan waktu saya untuk ikut serta dalam hackathon NEAR MetaBUILD III. Alasan saya adalah sebagai berikut:

  • Crypto tidak akan pergi dan merupakan teknologi yang akan tetap ada. Jadi masuk akal untuk menginvestasikan sedikit waktu untuk mempelajari teknologinya.
  • Hackathon tersebut memiliki hadiah yang besar, antara $20.000 hingga $100.000 dalam NEAR jika Anda menjadi salah satu pemenang.
  • Hackathon memiliki batas waktu tertentu, yang berarti proyek tidak bisa ditunda berbulan-bulan seperti banyak proyek sampingan pada umumnya.
  • Proyek ini akan menjadi pengalaman belajar yang hebat dan pengenalan yang baik terhadap hackathon.
  • Dalam skenario terburuk, hackathon ini akan memungkinkan saya membuat proyek yang bagus untuk ditampilkan di resume saya.

Dengan semua hal ini dalam pikiran, saya menghubungi teman dekat saya dari kampus pada 26 Agustus 2022 dan kami mulai merencanakan untuk hackathon ini. Hackathon dijadwalkan dimulai pada 23 September 2023 dan berakhir pada 21 November 2022. Meskipun tenggat waktu sempat diperpanjang hingga 24 November 2023 menjelang akhir hackathon. Karena kami 1 bulan lebih awal, kami memutuskan untuk menghabiskan waktu ini untuk belajar dan melakukan brainstorming tentang apa yang akan kami kerjakan selama hackathon 2 bulan ini. Selama bulan pertama itu, kami mendapatkan gambaran umum tentang crypto dan blockchain. Kami meninjau dan berlatih di testnet NEAR, menelaah NEAR SDK, dan menerapkan beberapa smart contract.

Ide

Setelah mendapatkan pengenalan yang baik tentang segala hal terkait blockchain dan NEAR, kami mulai melakukan brainstorming ide-ide. Saya ingin proyek ini menjadi sesuatu yang bukan sekadar “proyek hackathon”, tetapi sesuatu yang bisa menjadi produk yang bisa digunakan orang lain dan bertindak sebagai contoh bagaimana crypto bisa berguna untuk hal-hal di luar sekadar perdagangan.

Dengan pemikiran ini, awalnya kami memutuskan untuk membuat sesuatu yang mirip dengan Unreal Engine Blueprint, tetapi untuk pembuatan dan penerapan smart contract di NEAR blockchain dengan mudah tanpa perlu pengkodean. Namun, satu minggu sebelum hackathon dimulai, kami meninggalkan ide itu karena itu tidak masuk akal. Mengapa seseorang akan menggunakan alat kami untuk membuat smart contract NEAR jika belum ada kasus penggunaan praktis untuknya? Itu akan seperti mengembangkan alat yang tidak dibutuhkan banyak orang.

Dengan hanya satu minggu tersisa sebelum hackathon dimulai, kami mulai melakukan brainstorming lagi dan memutuskan ide ini:

A decentralized platform where AI researchers can outsource
data labeling to labelers around the world

Kami menamai proyek ini “Labeler NearBy.” Keputusan kami untuk memilih ide ini didasarkan pada alasan-alasan berikut:

  • Pengembangan AI membutuhkan pelabelan data oleh manusia untuk pelatihan.
  • Menemukan dan mengelola individu yang terampil untuk melabeli dataset tertentu merupakan tantangan.
  • Ide ini sudah berhasil diimplementasikan oleh sebuah perusahaan bernama Scale AI, sebagaimana dibuktikan oleh bagaimana mereka menemukan product-market fit.
  • Layanan terpusat seperti Scale AI menimbulkan kekhawatiran karena organisasi harus mengirimkan data mereka ke perusahaan pelabel, yang kemudian mengalihdayakan pelabel manusia secara global. Setelah proses pelabelan selesai, perusahaan tersebut mengembalikan data yang telah dilabeli ke organisasi. Ini melepaskan kendali atas data pelatihan yang berharga, yang dapat digunakan oleh perusahaan pelabel untuk melatih model mereka sendiri. Mendesentralisasi layanan ini tampak seperti solusi logis.
  • Kami menemukan sangat sedikit proyek di ruang aplikasi terdesentralisasi (dApp) yang mengerjakan ide ini, memberi kami kesempatan untuk berinovasi dan menjadi pelopor di area ini.

Untuk membantu mengurangi kompleksitas, kami memutuskan bahwa Labeler NearBy hanya akan mendukung data gambar untuk sementara waktu.

Pengiriman

Setelah ide dipilih dan hackathon resmi dimulai, teman saya dan saya mulai membangun Labeler NearBy. Kami mengerjakan proyek kami selama 2 bulan hingga kami mengirimkan draf akhir proyek kami ke Devpost pada 24 November 2022. Kami mengirimkan proyek kami di Devpost dan juga membuat salinan pengiriman kami di Github. Blog ini tidak mencakup setiap aspek teknis dan proses pengembangan Labeler NearBy. Dengan mengetahui hal ini, untuk mempelajari lebih lanjut tentang bagaimana Labeler NearBy bekerja atau untuk melihat pengiriman akhir kami, silakan kunjungi salah satu tautan berikut:

Labeler NearBy terdiri dari dua basis kode: ln-researcher dan ln-labeler. Basis kode ini sepenuhnya bersifat open source di bawah lisensi MIT dan dapat dilihat melalui tautan berikut:

Berikut adalah gambaran umum tentang bagaimana Labeler NearBy (LN) akan bekerja:

Seorang peneliti membutuhkan gambar yang telah dilabeli untuk melatih model AI mereka. Untuk mencapai ini, peneliti menggunakan LN untuk meng-host data mereka dan menyediakan sarana bagi pelabel untuk melabeli data mereka. Ini dicapai melalui ln-researcher, sebuah layanan web yang di-host sendiri yang terdiri dari sebuah API, smart contract peneliti, dan database Postgres lokal. Untuk pelabel, sebuah antarmuka web disediakan, memungkinkan mereka mengakses dan melabeli gambar peneliti. Saat proses pelabelan berlangsung, satu gambar dilabeli tiga kali oleh pelabel berbeda. Hanya pelabel dengan label terbaik, yang ditentukan melalui sistem voting, yang diberi imbalan dengan koin NEAR. Aplikasi web yang bertanggung jawab atas proses ini disebut ln-labeler. Peneliti mendanai setiap operasi pelabelan, dan koin NEAR dapat dengan mudah dikonversi menjadi dolar melalui Coinbase. Semua logistik transaksi ditangani oleh smart contract yang di-host di blockchain NEAR Protocol.

Anda dapat melihat video demo Labeler NearBy kami untuk hackathon di sini:

Pencapaian Terbesar

Fitur yang paling saya banggakan untuk diimplementasikan adalah sebuah fungsi bernama getImage(). Fungsi ini berfungsi sebagai endpoint API di ln-researcher dan memainkan peran krusial dalam aliran data antara peneliti dan pelabel dalam Labeler NearBy (LN).

Endpoint API ini memungkinkan peneliti untuk mendistribusikan gambar mereka untuk pelabelan dengan aman dan andal. Penugasan pelabelan dikelola melalui smart contract NEAR di blockchain NEAR Protocol sementara data gambar di-host oleh peneliti melalui ln-researcher.

Endpoint melakukan serangkaian pemeriksaan keamanan untuk memastikan bahwa hanya pelabel yang ditugaskan yang dapat mengakses gambar tersebut. Ini termasuk memverifikasi tanda tangan dari permintaan dan memeriksa smart contract terkait untuk mengonfirmasi keberadaan tugas dan penugasannya kepada pelabel yang meminta.

Setelah permintaan divalidasi di API ln-researcher yang di-host sendiri oleh peneliti, fungsi ini mengambil gambar dari database Postgres lokal, mengenkripsi gambar tersebut, dan mengirimkannya ke pelabel yang berwenang yang kemudian dapat mendekripsi gambar tersebut untuk dilabeli. Secara bersamaan, fungsi ini memperbarui status gambar di database, menunjukkan kemajuan proses pelabelan gambar. Sepanjang proses ini, kunci RSA dari peneliti dan pelabel digunakan untuk otentikasi. Sementara enkripsi AES digunakan untuk mengenkripsi gambar.

Endpoint ini memainkan peran penting dalam mengelola distribusi gambar yang aman dan terkontrol dari peneliti ke pelabel. Ini memastikan transfer data yang aman dan secara efektif melacak serta mengelola proses pelabelan gambar. Selain itu, proses ini berpotensi menghilangkan kebutuhan penggunaan HTTPS, setidaknya untuk endpoint ini.

Endpoint/fungsi spesifik ini telah diuji dan terbukti berfungsi. Di bawah ini adalah diagram yang menggambarkan keseluruhan fungsionalitas Labeler NearBy, termasuk gambaran jelas tentang bagaimana endpoint/fungsi yang disebutkan bekerja:

Hasil

Sayangnya, realita yang menyedihkan adalah bahwa kami tidak dapat menyelesaikan proyek ini sepenuhnya sebelum batas waktu hackathon. Sebagian besar proyek telah diselesaikan, seperti ln-researcher, tetapi frontend (ln-labeler) belum selesai dan kami tidak dapat menyebarkan demo langsung. Meskipun backend (ln-researcher) pada dasarnya selesai, tanpa frontend yang berfungsi dengan baik dan tanpa demo langsung, tidak ada yang bisa mencoba gagasan Labeler NearBy. Selain itu, para juri tidak dapat mencoba proyek ini dan sebaliknya harus membaca pengajuan, menelusuri kode, dan/atau mencoba menjalankannya sendiri. Hal ini membuat peluang kami untuk menang turun menjadi pada dasarnya nol persen. Hal ini dikonfirmasi pada 15 Desember 2022 ketika pemenang hackathon diumumkan, dan kami tidak termasuk di antara mereka.

Kekalahan

Saya tidak akan menyembunyikan fakta bahwa hasil akhir dari hackathon ini mengecewakan. Berbulan-bulan diinvestasikan ke dalam proyek ini dan saya memiliki visi besar untuk proyek ini karena saya berpikir itu akan memberikan alat yang sangat berguna bagi peneliti.

Saya memiliki standar yang jelas untuk proyek yang saya jalani: entah mereka berhasil atau mereka gagal; tidak ada jalan tengah. Jadi proyek ini adalah kegagalan karena tidak selesai sepenuhnya sebelum batas waktu dan tetap tidak dapat diakses oleh pengguna potensial.

Tetapi penting untuk diingat bahwa kegagalan adalah bagian alami dari kehidupan. Keberhasilan kita dibangun di atas pelajaran yang kita pelajari dari kegagalan kita. Meskipun hasil hackathon ini mengecewakan, hal itu tetap memberikan wawasan berharga ketika berkaitan dengan mengembangkan dan membangun sebuah proyek/produk.

Pelajaran yang Dipetik

Pelajaran utama yang saya ambil dari pengalaman ini adalah sebagai berikut:

  1. Proyek yang kami pilih membutuhkan banyak fitur dibangun di muka sebelum kami dapat mengiterasinya. Apa yang saya maksud dengan ini? Nah, proyek ini membutuhkan hampir semua komponen dari gagasan untuk dibangun terlebih dahulu sebelum kami bahkan bisa menguji idenya. Akan lebih masuk akal untuk memilih proyek yang memiliki lebih sedikit komponen esensial untuk berfungsi. Dengan melakukan itu, kami bisa membangun komponen esensial lebih cepat lalu mengiterasi proyek lebih cepat. Dengan melakukan itu, kami bisa memenuhi batas waktu lebih mudah dan membuat proyek yang mungkin lebih sederhana tetapi lebih lengkap. YC, sebuah akselerator startup teknologi, menekankan bahwa Anda harus luncurkan cepat, berbicara dengan pengguna, dan lakukan iterasi. Kami seharusnya melakukan itu dengan proyek kami untuk hackathon ini.
  2. Kami meremehkan berapa lama proyek ini akan memakan waktu untuk dibangun. Ini adalah hackathon pertama kami dan pertama kalinya kami membuat aplikasi terdesentralisasi (dapp). Selain itu, saya bekerja penuh waktu sebagai insinyur perangkat lunak dan teman saya sedang menyelesaikan Master-nya. Namun, kami berpikir 2 bulan akan cukup. Akan lebih masuk akal untuk mengurangi lingkup proyek dan/atau mencari satu anggota tim lagi yang bisa mengurangi beban kerja kami.
  3. Winston Churchill secara terkenal menyatakan: “Kesempurnaan adalah musuh kemajuan”. Saya memperlakukan proyek ini seperti produk bisnis-ke-konsumen (B2C), padahal kenyataannya ini hanyalah proyek hackathon dan paling banyak produk minimum yang layak (MVP). Jadi di awal, saya membuang terlalu banyak waktu pada detail kecil ketika saya seharusnya memfokuskan waktu saya untuk membuat fitur inti bekerja dengan memadai.

Selain pelajaran berharga ini, saya telah memperoleh keterampilan baru yang terbukti tak ternilai dalam proyek sampingan pribadi dan upaya profesional saya. Keterampilan ini meliputi:

  1. Mengembangkan API melalui Node.js, JavaScript, dan Express.js
  2. Menyiapkan dan menggunakan PostgreSQL untuk manajemen data
  3. Menggabungkan PostgresSQL ke dalam pengembangan API dengan menggunakan paket seperti PG.
  4. Menggunakan RSA (enkripsi asimetris) dan AES (enkripsi simetris) untuk meningkatkan keamanan data.

Kesimpulan

Secara keseluruhan, saya senang bahwa kami berpartisipasi dalam hackathon ini, meskipun kecewa dengan hasil akhirnya. Saya bersyukur atas pelajaran dan keterampilan berharga yang saya peroleh saat mengerjakan Labeler NearBy, karena hal-hal tersebut telah membuat saya menjadi pengembang yang lebih baik dan telah berkontribusi signifikan pada pengembangan proyek saya berikutnya: Notify-Cyber.

Catatan Lain

  • Saya mungkin akan kembali ke Labeler NearBy, tetapi untuk saat ini, proyek ini dalam “istirahat panjang”
  • Saat ini, Labeler NearBy seharusnya HANYA berjalan di testnet NEAR. Proyek ini membutuhkan pengembangan, pengujian, dan audit lebih lanjut.