Создание 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.

Конечная точка выполняет ряд проверок безопасности, чтобы гарантировать, что только назначенный разметчик может получить доступ к изображению. Это включает в себя проверку подписи запроса и проверку связанного смарт-контракта для подтверждения существования задачи и ее назначения запрашивающему разметчику.

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

Эта конечная точка играет критическую роль в управлении безопасным и контролируемым распределением изображений от исследователей к разметчикам. Она обеспечивает безопасную передачу данных и эффективно отслеживает и управляет процессом разметки изображений. Кроме того, этот процесс имеет потенциал для устранения необходимости в использовании HTTPS, по крайней мере для этой конечной точки.

Эта конкретная конечная точка/функция была протестирована и доказала свою функциональность. Ниже приведена диаграмма, иллюстрирующая общую функциональность Labeler NearBy, включая четкое изображение того, как работает вышеупомянутая конечная точка/функция:

Результат

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

Проигрыш

Я не буду скрывать тот факт, что окончательный результат этого хакатона был удручающим. В этот проект было вложено много месяцев, и у меня была большая идея для этого проекта, так как я думал, что он предоставит очень полезный инструмент для исследователей.

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

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

Извлеченные уроки

Основные уроки, которые я извлек из этого опыта, следующие:

  1. Проект, который мы выбрали, требовал много функций, построенных заранее, прежде чем мы могли бы его итеративно развивать. Что я имею в виду под этим? Этот проект требовал, чтобы почти все компоненты идеи были построены, прежде чем мы могли бы даже протестировать идею. Было бы разумнее выбрать проект с меньшим количеством необходимых компонентов для функционирования. Таким образом, мы могли бы быстрее построить основные компоненты и раньше начать итерации над проектом. Это позволило бы нам легче уложиться в срок и создать проект, который мог бы быть проще, но более завершенным. YC, акселератор стартапов, подчеркивает, что вы должны быстро запускать, общаться с пользователями и итеративно развивать. Нам следовало бы сделать это с нашим проектом для этого хакатона.
  2. Мы недооценили, сколько времени потребуется на создание этого проекта. Это был наш первый хакатон и наш первый опыт создания децентрализованного приложения (dapp). Более того, я работал полный рабочий день как инженер-программист, а мой друг завершал свою магистратуру. Тем не менее, мы думали, что двух месяцев будет достаточно. Было бы разумнее сократить объем проекта и/или найти еще одного члена команды, который мог бы уменьшить нашу рабочую нагрузку.
  3. Уинстон Черчилль famously stated: “Совершенство — враг прогресса”. Я относился к этому проекту как к продукту для бизнеса и потребителей (B2C), когда на самом деле это был просто проект хакатона и в лучшем случае минимально жизнеспособный продукт (MVP). Поэтому на ранних этапах я потратил слишком много времени на мелкие детали, когда мне следовало сосредоточить свое время на том, чтобы основные функции работали достаточно хорошо.

В дополнение к этим ценным урокам я приобрел новые навыки, которые оказались бесценными как в моих личных проектах, так и в профессиональной деятельности. Эти навыки включают:

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

Заключение

В целом, я рад, что мы приняли участие в этом хакатоне, несмотря на разочарование от окончательного результата. Я благодарен за ценные уроки и навыки, которые я приобрел, работая над Labeler NearBy, так как они сделали меня лучшим разработчиком и значительно способствовали разработке моего следующего проекта: Notify-Cyber.

Другие заметки

  • Я могу вернуться к Labeler NearBy, но на данный момент этот проект находится в “долгом перерыве”.
  • В настоящее время Labeler NearBy должен работать ТОЛЬКО в тестовой сети NEAR. Ему требуется дальнейшая разработка, тестирование и аудит.