Pagbuo ng Labeler NearBy
Table of Contents
Ang Aking Unang Hackathon
Sa huling bahagi ng tag-araw ng 2022, talagang gusto kong magtrabaho sa isang kapanapanabik na proyekto. Kakatapos ko lang ng aking undergraduate at nagtatrabaho ng full time bilang isang software engineer. Talaga akong gustong mag-commit sa isang side project at noong panahong iyon, may sapat akong libreng oras para gawin ito. Hindi ko talaga alam kung ano ang pagtatrabahuhan, hanggang natuklasan ko ang isang website na tinatawag na Devpost noong Agosto 2022. Ang Devpost ay isang website na nagho-host ng mga software competition na tinatawag na hackathons. Habang nagba-browse sa Devpost, natuklasan ko ang isang hackathon na tinatawag na NEAR MetaBUILD III na in-host ng organisasyong NEAR Protocol.
Ano ang NEAR?
Ang NEAR Protocol ay isang blockchain na sumusuporta sa smart contracts at ang cryptocurrency na NEAR. Kilala ito lalo na sa pagkakaroon ng napakababang transaction fees, pagsuporta sa smart contracts, pagkakaroon ng sarili nitong opisyal na test network, at magandang developer environment dahil maaari kang magsulat ng smart contracts sa Rust at/o JavaScript. Maaari kang magkaroon ng mas magandang pangkalahatang-ideya ng NEAR Protocol sa pamamagitan ng kahanga-hangang video ng CoinGecko:
Noong panahong iyon, opisyal na sinimulang suportahan ng Coinbase ang NEAR Protocol bilang isang tradable coin sa kanilang platform. Malaking bagay ito dahil kilala ang Coinbase sa pagiging napili kapag pinagpapasyahan kung aling mga coin ang susuportahan nila sa kanilang platform. Nakapagbigay ito ng mas maraming tiwala sa NEAR bilang isang platform. Maaari mo pa ring i-trade ang NEAR on Coinbase hanggang ngayon.
Bakit Maglaan?
Pagkatapos ng ilang oras ng pag-iisip, nagpasya akong ilaan ang aking oras para makipagkompetensya sa NEAR MetaBUILD III hackathon. Ang dahilan ko ay ang mga sumusunod:
- Hindi mawawala ang crypto at ito ay isang teknolohiya na mananatili. Kaya makatuwiran na maglaan ng oras upang matutunan ang teknolohiya.
- Magagandang premyo ang inaalok sa hackathon, nasa pagitan ng $20,000 hanggang $100,000 sa NEAR kung ikaw ay isa sa mga nanalo.
- May tiyak na deadline ang hackathon, ibig sabihin hindi ito maaaring ipatagal ng mga buwan tulad ng maraming side projects.
- Ang proyekto ay magiging isang mahusay na karanasan sa pagkatuto at magandang pagpapakilala sa mga hackathon.
- Sa pinakamasama, papayagan ako ng hackathon na gumawa ng isang mahusay na proyekto na maaaring ipakita sa aking resume.
Dahil sa lahat ng ito, tinawagan ko ang malapit kong kaibigan mula sa kolehiyo noong Agosto 26, 2022 at nagsimula kaming magplano para sa hackathon na ito. Ang hackathon ay naka-iskedyul na magsimula noong Setyembre 23, 2023 at magtatapos noong Nobyembre 21, 2022. Bagama’t ang deadline ay na-extend hanggang Nobyembre 24, 2023 patungo sa katapusan ng hackathon. Dahil nauna kami ng 1 buwan, nagpasya kaming gugulin ang panahong ito sa pag-aaral at pagbuo ng mga ideya kung ano ang aming pagtatrabahuhan para sa 2-buwan na hackathon. Sa unang buwan na iyon, nakuha namin ang pangkalahatang-ideya tungkol sa crypto at mga blockchain. Sinuri at pinraktis namin ang testnet ng NEAR, sinuri ang NEAR SDK, at nag-deploy ng ilang smart contracts.
Ang Ideya
Matapos makakuha ng magandang pagpapakilala sa lahat ng bagay tungkol sa blockchain at NEAR, nagsimula kaming magbuo ng mga ideya. Gusto ko na ang proyektong ito ay hindi lang isang “hackathon project”, kundi isang bagay na maaaring maging produkto na magagamit ng iba at magsilbing halimbawa kung paano maaaring maging kapaki-pakinabang ang crypto sa mga bagay na lampas sa simpleng trading.
Dahil dito, unang nagpasya kaming gumawa ng isang bagay na katulad ng Unreal Engine Blueprint, ngunit para sa madaling paglikha at pag-deploy ng smart contracts sa NEAR blockchain nang hindi na kailangan ng pag-code. Gayunpaman, isang linggo bago magsimula ang hackathon, tinanggihan namin ang ideyang iyon dahil hindi ito katimbang. Bakit mag-aaksaya ng oras ang sinuman gamit ang aming tool para gumawa ng NEAR smart contracts kung wala namang praktikal na kaso ng paggamit para dito? Parang pag-develop ng tool na hindi kailangan ng maraming tao.
May natitirang isang linggo bago magsimula ang hackathon, muling nag-brainstorm kami at napili namin ang ideyang ito:
A decentralized platform where AI researchers can outsource
data labeling to labelers around the world
Pinangalanan namin ang proyekto na “Labeler NearBy.” Ang desisyon naming piliin ang ideyang ito ay nakabatay sa mga sumusunod na dahilan:
- Ang pag-develop ng AI ay nangangailangan ng manu-manong pag-label ng datos para sa pagsasanay.
- Mahirap maghanap at mag-manage ng mga may kakayahang indibidwal para sa pag-label ng mga partikular na dataset.
- Ang ideya ay matagumpay nang naipatupad ng isang kumpanya na tinatawag na Scale AI, na makikita sa kung paano nila natagpuan ang product-market fit.
- Ang mga sentralisadong serbisyo tulad ng Scale AI ay nagdudulot ng mga alalahanin dahil kailangang ipadala ng mga organisasyon ang kanilang datos sa kumpanya ng pag-label, na pagkatapos ay nag-o-outsource ng mga human labelers sa buong mundo. Pagkatapos ng proseso ng pag-label, ibinabalik ng kumpanya ang na-label na datos sa organisasyon. Ito ay nag-aalis ng kontrol sa mahalagang training data, na maaaring gamitin ng kumpanya ng pag-label para sanayin ang kanilang sariling mga modelo. Ang desentralisasyon ng serbisyong ito ay tila isang lohikal na solusyon.
- Nakakita kami ng napakakaunting proyekto sa decentralized app (dApp) space na nagtatrabaho sa ideyang ito, kaya may pagkakataon para sa amin na mag-innovate at maging mga pionero sa larangang ito.
Upang mabawasan ang kumplikasyon, nagpasya kami na ang Labeler NearBy ay susuporta lamang sa image data pansamantala.
Pagsusumite
Kapag napili na ang ideya at opisyal nang nagsimula ang hackathon, nagsimula kaming buuin ng kaibigan ko ang Labeler NearBy. Nagtrabaho kami sa aming proyekto nang 2 buwan hanggang isumite namin ang final draft ng aming proyekto sa Devpost noong Nobyembre 24, 2022. Isinumite namin ang aming proyekto sa Devpost at gumawa rin ng kopya ng aming pagsumite sa Github. Hindi sinasaklaw ng blog na ito ang bawat teknikal na aspeto at proseso ng pag-develop ng Labeler NearBy. Kung nais mong malaman pa kung paano gumagana ang Labeler NearBy o makita ang aming final submission, bisitahin ang isa sa mga sumusunod na link:
Ang Labeler NearBy ay binubuo ng dalawang codebases: ln-researcher at ln-labeler. Ang mga codebase na ito ay ganap na open source sa ilalim ng MIT license at maaaring makita sa mga sumusunod na link:
Narito ang pangkalahatang-ideya kung paano gagana ang Labeler NearBy (LN):
Isang researcher ang nangangailangan ng mga na-label na imahe para sa pagsasanay ng kanilang AI model. Upang maisagawa ito, ginagamit ng researcher ang LN upang i-host ang kanilang data at magbigay ng paraan para makapag-label ang mga labeler ng kanilang data. Ito ay isinasagawa sa pamamagitan ng [ln-researcher], isang self-hosted web service na binubuo ng isang API, ang mga smart contract ng researcher, at isang lokal na Postgres database. Para sa labeler, isang web frontend ang (dapat sana ay) ibinigay, na nagpapahintulot sa kanila na i-access at i-label ang mga imahe ng researcher. Habang isinasa-label ang mga imahe, ang isang imahe ay nilabel ng tatlong beses ng iba’t ibang labelers. Tanging ang labeler na may pinakamainam na mga label, na tinutukoy sa pamamagitan ng isang voting system, ang binibigyan ng gantimpala gamit ang NEAR coins. Ang web app na responsable para sa prosesong ito ay tinatawag na [ln-labeler]. Pinopondohan ng researcher ang bawat labeling operation, at ang NEAR coins ay madaling ma-convert sa dolyar sa pamamagitan ng Coinbase. Lahat ng logistics ng transaksyon ay pinamamahalaan ng mga smart contracts na naka-host sa NEAR Protocol blockchain.
Maaari mong panoorin ang aming demo video ng Labeler NearBy para sa hackathon dito:
Pinakamalaking Nakamit
Ang tampok na pinaka ipinagmamalaki kong na-implementa ay isang function na tinatawag na getImage(). Ang function na ito ay nagsisilbing isang API endpoint sa [ln-researcher] at may mahalagang papel sa data pipeline sa pagitan ng mga researchers at labelers sa Labeler NearBy (LN).
Pinahihintulutan ng API endpoint na ito ang mga researcher na ligtas at maasahang ipamahagi ang kanilang mga imahe para sa pag-label. Ang mga assignment ng pag-label ay pinamamahalaan sa pamamagitan ng mga NEAR smart contracts sa NEAR Protocol blockchain habang ang image data ay ini-host ng researcher sa pamamagitan ng [ln-researcher].
Ang endpoint ay nagsasagawa ng serye ng mga security checks upang matiyak na tanging ang naitalagang labeler lamang ang maaaring mag-access ng imahe. Kabilang dito ang pagpapatunay ng signature ng request at pagsuri sa kaugnay na smart contract upang kumpirmahin ang pag-iral ng task at ang pag-aassign nito sa humihiling na labeler.
Kapag na-validate ang request sa self-hosted na API ng researcher na [ln-researcher], kinukuha ng function ang imahe mula sa lokal na Postgres database, ine-encrypt ang imahe, at ipinapadala ito sa awtorisadong labeler na maaaring i-decrypt ang imahe para sa pag-label. Kasabay nito, ina-update ng function ang status ng imahe sa database, na nagsasaad ng progreso ng pag-label ng imahe. Sa buong prosesong ito, ginagamit ang RSA keys mula pareho ng researcher at labeler para mag-authenticate. Ginagamit naman ang AES encryption upang i-encrypt ang imahe.
Ang endpoint na ito ay may kritikal na papel sa pamamahala ng ligtas at kontroladong pamamahagi ng mga imahe mula sa mga researcher papunta sa mga labeler. Tinitiyak nito ang secure na pag-transfer ng data at epektibong nagta-track at namamahala sa proseso ng pag-label ng imahe. Dagdag pa, ang prosesong ito ay may potensyal na alisin ang pangangailangan sa paggamit ng HTTPS, kahit man lang para sa endpoint na ito.
Ang partikular na endpoint/function na ito ay nasubukan at napatunayan na gumagana. Nasa ibaba ang isang diagram na naglalarawan ng pangkalahatang functionality ng Labeler NearBy, kabilang ang malinaw na paglalarawan kung paano gumagana ang nabanggit na endpoint/function:
Kinalabasan
Sa kasamaang palad, ang malungkot na realidad ay hindi namin lubusang natapos ang proyektong ito bago ang takdang panahon ng hackathon. Karamihan ng proyekto ay natapos na, tulad ng ln-researcher, ngunit ang frontend (ln-labeler) ay hindi natapos at hindi kami nakapag-deploy ng isang live na demo. Bagaman ang backend (ln-researcher) ay halos natapos na, na walang maayos na gumaganang frontend at walang live na demo, walang sinuman ang nakapagsubok ng ideya ng Labeler NearBy. Hindi lang iyon, kundi ang mga hurado ay hindi rin nakapag-try ng proyekto at sa halip ay kinailangang basahin ang submission, silipin ang code, at/o subukang patakbuhin ito nang sila mismo. Na nagbaba ng aming tsansa na manalo sa halos zero porsyento. Ito ay nakumpirma noong Disyembre 15, 2022 nang inanunsyo ang mga nanalo sa hackathon, at hindi kami kabilang sa mga iyon.
Pagkatalo
Hindi ko itatago ang katotohanan na nakapanghihinayang ang panghuling kinalabasan mula sa hackathon na ito. Binalaan ang maraming buwan sa proyektong ito at mayroon akong malaking bisyon para sa proyekto dahil inakala kong magbibigay ito ng napaka-kapaki-pakinabang na kasangkapan sa mga mananaliksik.
Mayroon akong malinaw na pamantayan para sa mga proyektong aking sinisimulan: magtatagumpay ang mga ito o mabibigo; walang gitnang landas. Kaya ang proyektong ito ay isang kabiguan dahil hindi ito ganap na natapos bago ang takdang panahon at nanatiling hindi maaabot ng mga potensyal na gumagamit.
Ngunit mahalagang tandaan na ang kabiguan ay isang likas na bahagi ng buhay. Ang ating mga tagumpay ay nabubuo mula sa mga aral na natutunan natin mula sa ating mga kabiguan. Habang nakapanghihinayang ang kinalabasan ng hackathon na ito, nagbigay pa rin ito ng mahahalagang pananaw pagdating sa pag-develop at pagbuo ng isang proyekto/produkto.
Mga Natutunang Aralin
Ang pangunahing mga aral na nakuha ko mula sa karanasang ito ay ang mga sumusunod:
- Ang proyektong pinili namin ay nangailangan ng maraming mga feature na itinayo nang maaga bago pa man kami makapag-iterate dito. Ano ang ibig kong sabihin nito? Well, ang proyektong ito ay nangailangan ng halos lahat ng bahagi ng ideya na maitayo muna bago pa namin masubukan ang ideya. Mas makatuwiran sana na pumili ng proyektong may mas kaunting mahahalagang bahagi para gumana. Sa paggawa nito, maaari sana naming itinayo ang mahahalagang bahagi nang mas mabilis at pagkatapos ay ma-iterate ang proyekto nang mas maaga. Sa gayon, mas madali sana naming naabot ang deadline at nakagawa ng isang proyekto na maaaring mas simple ngunit mas kumpleto. Binibigyang-diin ng YC, isang tech startup accelerator, na dapat mong mabilis na maglunsad, makipag-usap sa mga gumagamit, at mag-iterate. Dapat sana ay ginawa namin iyon sa aming proyekto para sa hackathon na ito.
- Mina-underestimate namin kung gaano katagal aabutin para buuin ang proyektong ito. Ito ang aming unang hackathon at ang aming unang pagkakataon na gumawa ng isang decentralized application (dapp). Hindi lang iyon, nagtatrabaho ako full time bilang software engineer at ang kaibigan ko ay nagtatapos ng kanyang Masters. Gayunpaman, inakala naming sapat ang 2 buwan. Mas makatuwiran sana na bawasan ang saklaw ng proyekto at/o maghanap ng isa pang miyembro ng koponan na makakatulong mabawasan ang aming trabaho.
- Sikat na sinabi ni Winston Churchill: “Perfection is the enemy of progress” (“Ang kasakdalan ay kaaway ng pag-unlad”). Tinitingnan ko ang proyektong ito na parang isang produkto para sa negosyo-sa-konsyumer (B2C), gayong sa realidad ito ay isang hackathon na proyekto lamang at sa pinaka-mataas ay isang pinakamababang katanggap-tanggap na produkto (MVP). Kaya noon pa man, nasayang ko ang masyadong maraming oras sa maliliit na detalye nang dapat sana ay nagtuon ako ng oras sa pagpapagana ng mga pangunahing feature nang sapat.
Bilang karagdagan sa mga mahahalagang aral na ito, nakakuha ako ng mga bagong kasanayan na napatunayang napakahalaga sa parehong mga personal na side project at propesyonal na pagsusumikap. Kasama sa mga kasanayang ito ang:
- Pag-develop ng mga API gamit ang Node.js, JavaScript, at Express.js
- Pag-setup at paggamit ng PostgreSQL para sa pamamahala ng datos
- Pagsasama ng PostgreSQL sa pag-develop ng API sa pamamagitan ng paggamit ng mga package tulad ng PG.
- Paggamit ng RSA (asymmetric encryption) at AES (symmetric encryption) para sa pinahusay na seguridad ng datos.
Konklusyon
Sa pangkalahatan, masaya ako na lumahok kami sa hackathon na ito, sa kabila ng pagkadismaya sa panghuling kinalabasan. Nagpapasalamat ako para sa mga mahahalagang aral at kasanayan na nakuha ko habang nagtatrabaho sa Labeler NearBy, dahil ginawa nila akong mas mabuting developer at malaki ang naitulong sa pagbuo ng aking susunod na proyekto: Notify-Cyber.
Iba Pang Tala
- Maaaring babalik ako sa Labeler NearBy, ngunit sa ngayon, ang proyektong ito ay nasa “mahabang hiatus”
- Sa kasalukuyan, ang Labeler NearBy ay DAPAT LAMANG tumakbo sa testnet ng NEAR. Kailangan pa ito ng karagdagang pag-develop, pagsubok, at pag-audit.