Labeler NearBy

Table of Contents

Мій Перший Хакатон

У пізніших частинах літа 2022 року я дуже хотів працювати над захоплюючим проєктом. Я щойно закінчив бакалаврат і працював повний робочий день як інженер‑програміст. Я дуже хотів присвятити час сторонньому проєкту, і в той час у мене було достатньо вільного часу для цього. Я справді не знав, над чим працювати, доки не виявив веб‑сайт під назвою Devpost у серпні 2022 року. Devpost — це веб‑сайт, який проводить програмні конкурси, звані хакатонами. Переглядаючи Devpost, я знайшов хакатон під назвою NEAR MetaBUILD III, який організовував NEAR Protocol.

Що таке NEAR?

NEAR Protocol — це блокчейн, який підтримує смарт‑контракти та криптовалюту NEAR. Він в основному відомий дуже низькими комісіями за транзакції, підтримкою смарт‑контрактів, власною офіційною тестовою мережею та чудовим середовищем розробника, оскільки ви можете писати смарт‑контракти на Rust та/або Java Script. Кращий огляд NEAR Protocol можна отримати у чудовому відео від CoinGecko:

У цей час Coinbase офіційно почав підтримувати NEAR Protocol як торгувану монету на своїй платформі. Це було важливо, бо Coinbase відомий своєю вибірковістю щодо підтримуваних монет. Це допомогло зробити NEAR більш довіреною платформою. Ви все ще можете торгувати NEAR на Coinbase і сьогодні.

Чому Я Підписався?

Після деякого роздуму я вирішив присвятити свій час участі у хакатоні NEAR MetaBUILD III. Моя аргументація була такою:

  • Криптовалюти не зникнуть і це технологія, яка залишиться. Тому було сенсом інвестувати час у вивчення цієї технології.
  • Хакатон пропонував великі нагороди, від $20 000 до $100 000 у NEAR, якщо ви один із переможців.
  • У хакатону був конкретний дедлайн, тому проєкт не міг затягуватись на місяці, як багато сторонніх проєктів.
  • Проєкт був би чудовим навчальним досвідом і відмінним вступом до хакатонів.
  • У найгіршому випадку хакатон дозволив би мені створити відмінний проєкт для резюме.

Маючи це на увазі, я подзвонив своєму близькому другу з коледжу 26 серпня 2022 року, і ми почали планувати цей хакатон. Хакатон був запланований на 23 вересня 2023 року і мав завершитися 21 листопада 2022 року. Хоча дедлайн був продовжений до 24 листопада 2023 року наприкінці хакатону. Оскільки ми були за місяць до старту, ми вирішили використати цей час для навчання та мозкового штурму того, над чим будемо працювати протягом цього 2‑місячного хакатону. Протягом першого місяця ми отримали загальне уявлення про криптовалюти та блокчейни. Ми практикувалися на тестовій мережі NEAR, вивчали NEAR SDK і розгорнули кілька смарт‑контрактів.

Ідея

Після отримання чудового вступу до всього, що стосується блокчейну та NEAR, ми почали генерувати ідеї. Я хотів, щоб цей проєкт був не просто «хакатонним проєктом», а продуктом, яким інші могли б користуватись і який би слугував прикладом того, як криптовалюти можуть бути корисними поза межами простого трейдингу.

З цим на думці ми спочатку вирішили створити щось схоже на Unreal Engine Blueprint, але для простого створення та розгортання смарт‑контрактів у блокчейні NEAR без потреби кодування. Однак за тиждень до початку хакатону ми відмовились від цієї ідеї, бо вона просто не мала сенсу. Чому хтось мав би користуватись нашим інструментом для створення смарт‑контрактів NEAR, якщо ще не існує практичних випадків їх використання? Це було б схоже на розробку інструменту, який нікому не потрібен.

Залишившись лише з одним тижнем до старту хакатону, ми знову провели мозковий штурм і зупинились на такій ідеї:

Децентралізована платформа, де дослідники ШІ можуть аутсорсити
маркування даних лейблерам по всьому світу

Ми назвали проєкт «Labeler NearBy». Наше рішення обрати цю ідею базувалось на наступних причинах:

  • Розробка ШІ вимагає людського маркування даних для навчання.
  • Пошук та управління кваліфікованими людьми для маркування конкретних наборів даних є складним.
  • Ідею вже успішно реалізувала компанія Scale AI, що підтверджує її ринкову придатність.
  • Централізовані сервіси, такі як Scale AI, викликають занепокоєння, оскільки організації змушені надсилати свої дані компанії, яка потім аутсорсить людським лейблерам по всьому світу. Після процесу маркування компанія повертає марковані дані організації, втрачаючи контроль над цінними навчальними даними, які можуть бути використані для навчання власних моделей. Децентралізація цього сервісу здавалась логічним рішенням.
  • Ми знайшли дуже мало проєктів у просторі децентралізованих додатків (dApp), які працювали над цією ідеєю, що створює можливість для інновацій та лідерства в цій галузі.

Для спрощення складності ми вирішили, що Labeler NearBy спочатку підтримуватиме лише зображення.

Подача

З обраною ідеєю та офіційним стартом хакатону мій друг і я почали будувати Labeler NearBy. Ми працювали над проєктом 2 місяці, доки не подали фінальну версію нашого проєкту на Devpost 24 листопада 2022 року. Ми подали наш проєкт на Devpost і також створили копію нашої подачі на GitHub. Цей блог не охоплює кожен технічний аспект та процес розробки Labeler NearBy. Знаючи це, щоб дізнатись більше про те, як працює Labeler NearBy, або переглянути нашу фінальну подачу, будь ласка, відвідайте один із наступних посилань:

Labeler NearBy складається з двох кодових баз: ln-researcher та ln-labeler. Ці кодові бази повністю відкриті під ліцензією MIT і їх можна переглянути за наступними посиланнями:

Ось загальний огляд того, як працюватиме Labeler NearBy (LN):

Дослідник потребує маркованих зображень для навчання своєї моделі ШІ. Для цього дослідник використовує LN для розміщення своїх даних і надає можливість лейблерам маркувати їх. Це здійснюється через ln-researcher, самохостинг веб‑сервіс, який складається з API, смарт‑контрактів дослідника та локальної бази даних Postgres. Для лейблера передбачений веб‑фронтенд, який (повинен був) бути наданий, дозволяючи йому отримувати та маркувати зображення дослідника. Під час процесу маркування одне зображення маркується тричі різними лейблерами. Тільки лейблер з найкращими маркерами, визначеними через систему голосування, отримує винагороду у вигляді монет NEAR. Веб‑додаток, відповідальний за цей процес, називається ln-labeler. Дослідник фінансує кожну операцію маркування, а монети NEAR можна легко конвертувати у долари через Coinbase. Усі логістичні аспекти транзакцій обробляються смарт‑контрактами, розміщеними у блокчейні NEAR Protocol.

Ви можете переглянути наше демонстраційне відео Labeler NearBy для хакатону тут:

Найбільше Досягнення

Функція, якою я найбільше пишаюсь, — це getImage(). Ця функція слугує API‑ендпоінтом у ln-researcher і відіграє вирішальну роль у конвеєрі даних між дослідниками та лейблерами в Labeler NearBy (LN).

Цей API‑ендпоінт дозволяє дослідникам безпечно та надійно розповсюджувати свої зображення для маркування. Завдання маркування керуються смарт‑контрактами NEAR у блокчейні NEAR Protocol, тоді як дані зображень розміщуються дослідником через ln-researcher.

Ендпоінт виконує ряд перевірок безпеки, щоб переконатися, що лише призначений лейблер може отримати доступ до зображення. Це включає верифікацію підпису запиту та перевірку відповідного смарт‑контракту для підтвердження існування завдання та його призначення запитуючому лейблеру.

Після валідації запиту у самохостинговому API ln-researcher функція отримує зображення з локальної бази даних Postgres, шифрує його та передає авторизованому лейблеру, який потім може розшифрувати зображення для маркування. Одночасно функція оновлює статус зображення в базі даних, вказуючи прогрес його маркування. Під час цього процесу використовуються RSA‑ключі як дослідника, так і лейблера для автентифікації. AES‑шифрування використовується для шифрування самого зображення.

Цей ендпоінт грає критичну роль у керуванні безпечним та контрольованим розповсюдженням зображень від дослідників до лейблерів. Він забезпечує безпечну передачу даних та ефективно відстежує і керує процесом маркування зображень. Крім того, цей процес має потенціал усунути потребу у використанні HTTPS, принаймні для цього ендпоінту.

Цей конкретний ендпоінт/функція були протестовані та доведено їхню працездатність. Нижче наведена діаграма, що ілюструє загальну функціональність Labeler NearBy, включаючи чітке зображення того, як працює згаданий ендпоінт/функція:

Результат

На жаль, сумна реальність полягає в тому, що нам не вдалося повністю завершити цей проєкт до дедлайну хакатону. Більшість проєкту була завершена, наприклад ln-researcher, але фронтенд (ln-labeler) не був завершений, і ми не змогли розгорнути живу демонстрацію. Хоча бекенд (ln-researcher) був практично готовий, без належно працюючого фронтенду та живої демонстрації ніхто не міг спробувати ідею Labeler NearBy. Крім того, судді не змогли випробувати проєкт і змушені були читати подання, переглядати код і/або намагатися запустити його самостійно. Це знизило наші шанси на перемогу практично до нуля відсотків. Це було підтверджено 15 грудня 2022 року, коли оголосили переможців хакатону, і ми не були серед них.

Losing

Я не буду приховувати, що підсумковий результат цього хакатону був розчаровуючим. У проєкт були вкладені місяці, і я мав грандіозне бачення цього проєкту, оскільки вважав, що він стане дуже корисним інструментом для дослідників.

У мене є чіткий стандарт для проєктів, які я здійснюю: вони або успішні, або провальні; посередини немає. Тож цей проєкт був провалом, бо не був повністю завершений до дедлайну і залишився недоступним для потенційних користувачів.

Але важливо пам’ятати, що провал — це природна частина життя. Наші успіхи будуються на уроках, які ми отримуємо з наших провалів. Хоча результат цього хакатону був розчаровуючим, він все ж надав цінні інсайти щодо розробки та створення проєкту/продукту.

Lessons Learned

Головні уроки, які я виніс з цього досвіду, були наступними:

  1. Проєкт, який ми обрали, вимагав багато функцій, створених заздалегідь, перш ніж ми могли ітерувати його. Що я маю на увазі? Цей проєкт вимагав майже всі компоненти ідеї, щоб бути створеними, перш ніж ми могли навіть протестувати ідею. Було б розумніше обрати проєкт з меншою кількістю критичних компонентів для функціонування. У такому випадку ми могли б швидше створити необхідні компоненти, а потім ітерувати проєкт раніше. Це дозволило б нам легше встигнути до дедлайну і створити проєкт, який міг би бути простішим, але більш завершеним. YC, технологічний акселератор стартапів, наголошує, що слід швидко запускати, спілкуватися з користувачами та ітерувати. Ми мали це зробити з нашим проєктом для цього хакатону.
  2. Ми недооцінили, скільки часу займе створення цього проєкту. Це був наш перший хакатон і наш перший досвід створення децентралізованого застосунку (dapp). Крім того, я працював повний робочий день як інженер‑програміст, а мій друг завершував магістратуру. Проте ми думали, що 2 місяці будуть достатньо. Було б розумніше скоротити масштаб проєкту і/або знайти ще одного члена команди, який міг би зменшити наше навантаження.
  3. Вінстон Черчілль знаменито заявив: «Досконалість — ворог прогресу». Я ставився до цього проєкту як до продукту B2C, коли насправді це був лише хакатонний проєкт і, максимум, мінімально життєздатний продукт (MVP). Тож на ранньому етапі я витратив занадто багато часу на дрібні деталі, коли мав зосередитися на тому, щоб основні функції працювали достатньо добре.

Окрім цих цінних уроків, я набув нових навичок, які виявилися безцінними як у моїх особистих проєктах, так і в професійних починаннях. Ці навички включають:

  1. Розробку API за допомогою Node.js, JavaScript та Express.js
  2. Налаштування та використання PostgreSQL для управління даними
  3. Інтеграцію PostgreSQL у розробку API за допомогою пакетів, таких як PG.
  4. Використання RSA (асиметричне шифрування) та AES (симетричне шифрування) для підвищеної безпеки даних.

Conclusion

Загалом, я радий, що взяв участь у цьому хакатоні, незважаючи на розчарування від підсумкового результату. Я вдячний за цінні уроки та навички, які я отримав, працюючи над Labeler NearBy, оскільки вони зробили мене кращим розробником і значно сприяли розробці мого наступного проєкту: Notify‑Cyber.

Other Notes

  • Я можу повернутися до Labeler NearBy, але наразі цей проєкт перебуває у «довготривалій перерві».
  • Наразі Labeler NearBy має працювати ТІЛЬКИ у тестовій мережі NEAR. Потрібно подальший розвиток, тестування та аудит.