Створення 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 року наприкінці хакатону. Оскільки ми були за місяць до початку, ми вирішили витратити цей час на навчання та мозковий штурм, над чим ми будемо працювати протягом цього двомісячного хакатону. Протягом першого місяця ми отримали загальний огляд криптовалюти та блокчейнів. Ми переглянули та практикувалися на тестовій мережі NEAR, переглянули NEAR SDK і розгорнули кілька смарт-контрактів.
Ідея
Після того, як ми отримали чудове введення в усі речі, пов’язані з блокчейном і NEAR, ми почали мозковий штурм ідей. Я хотів, щоб цей проект був не просто “проектом хакатону”, а чимось, що могло б стати продуктом, яким можуть користуватися інші, і слугувати прикладом того, як криптовалюта може бути корисною для речей поза торгівлею.
З урахуванням цього, спочатку ми вирішили створити щось подібне до Blueprint Unreal Engine, але для легкого створення та розгортання смарт-контрактів на блокчейні 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 року, коли були оголошені переможці хакатону, і ми не були серед них.
Втрата
Я не буду приховувати, що остаточний результат цього хакатону був розчаровуючим. У цей проект було вкладено місяці, і я мав велике бачення для цього проекту, оскільки вважав, що він надасть дуже корисний інструмент для дослідників.
У мене є чіткий стандарт для проектів, які я беру на себе: або вони успішні, або зазнають невдачі; немає середнього варіанту. Тож цей проект був невдачею, оскільки він не був повністю завершений до терміну і залишався недоступним для потенційних користувачів.
Але важливо пам’ятати, що невдача є природною частиною життя. Наші успіхи ґрунтуються на уроках, які ми отримуємо з наших невдач. Хоча результат цього хакатону був розчаровуючим, він все ж надав цінні інсайти щодо розробки та створення проекту/продукту.
Уроки, які я засвоїв
Основні уроки, які я виніс з цього досвіду, такі:
- Проект, який ми обрали, вимагав багато функцій, які потрібно було реалізувати заздалегідь, перш ніж ми могли б ітеративно працювати над ним. Що я маю на увазі? Цей проект вимагав, щоб майже всі компоненти ідеї були реалізовані, перш ніж ми могли б навіть протестувати ідею. Було б доцільніше обрати проект, який мав менше суттєвих компонентів для функціонування. Таким чином, ми могли б швидше реалізувати основні компоненти, а потім раніше ітеративно працювати над проектом. Це дозволило б нам легше дотриматися терміну і створити проект, який міг би бути простішим, але більш завершеним. YC, акселератор стартапів у сфері технологій, підкреслює, що ви повинні швидко запускати, спілкуватися з користувачами та ітеративно працювати. Нам слід було зробити це з нашим проектом для цього хакатону.
- Ми недооцінили, скільки часу знадобиться для створення цього проекту. Це був наш перший хакатон і наш перший досвід створення децентралізованої програми (dapp). Не тільки це, але я працював на повну ставку як програміст, а мій друг закінчував магістратуру. Проте ми думали, що 2 місяці буде достатньо. Було б доцільніше зменшити обсяг проекту і/або знайти ще одного члена команди, який міг би зменшити наше навантаження.
- Вінстон Черчілль famously stated: “Досконалість є ворогом прогресу”. Я ставився до цього проекту як до продукту для бізнесу-споживача (B2C), коли насправді це був просто проект хакатону і в кращому випадку мінімально життєздатний продукт (MVP). Тож на початку я витратив занадто багато часу на дрібниці, коли мені слід було зосередитися на тому, щоб основні функції працювали достатньо добре.
На додаток до цих цінних уроків, я здобув нові навички, які виявилися безцінними як у моїх особистих проектах, так і в професійній діяльності. Ці навички включають:
- Розробка API за допомогою Node.js, JavaScript та Express.js
- Налаштування та використання PostgreSQL для управління даними
- Інтеграція PostgreSQL у розробку API за допомогою пакетів, таких як PG.
- Використання RSA (асиметричне шифрування) та AES (симетричне шифрування) для підвищення безпеки даних.
Висновок
В цілому, я радий, що ми взяли участь у цьому хакатоні, незважаючи на розчарування остаточним результатом. Я вдячний за цінні уроки та навички, які я здобув, працюючи над Labeler NearBy, оскільки вони зробили мене кращим розробником і значно сприяли розвитку мого наступного проекту: Notify-Cyber.
Інші нотатки
- Я можу повернутися до Labeler NearBy, але на даний момент цей проект знаходиться на “довгому перерві”.
- Наразі Labeler NearBy повинен працювати ТІЛЬКИ в тестовій мережі NEAR. Він потребує подальшої розробки, тестування та аудиту.