Labeler NearByの構築

Table of Contents

私の初めてのハッカソン

2022年の夏の後半、私は本当にエキサイティングなプロジェクトに取り組みたいと思っていました。私はちょうど学部を卒業したばかりで、フルタイムのソフトウェアエンジニアとして働いていました。サイドプロジェクトに取り組むことを本当に望んでおり、その時はそれをするための十分な自由時間がありました。何に取り組むべきか全く分からなかったのですが、2022年8月にDevpostというウェブサイトを発見しました。Devpostはハッカソンと呼ばれるソフトウェアコンペティションを開催するウェブサイトです。Devpostをブラウジングしていると、NEAR MetaBUILD IIIというハッカソンを見つけました。これはNEAR Protocol組織が主催するハッカソンでした。

NEARとは?

NEAR Protocolはスマートコントラクトをサポートするブロックチェーンであり、NEAR暗号通貨を持っています。非常に低いトランザクション手数料、スマートコントラクトのサポート、独自の公式テストネットを持ち、RustやJavaScriptでスマートコントラクトを書くことができるため、素晴らしい開発者環境があることで知られています。NEAR Protocolのより良い概要は、CoinGeckoの素晴らしいビデオを通じて得ることができます:

この時期、Coinbaseは公式にNEAR Protocolを取引可能なコインとしてサポートし始めました。これは大きなニュースで、Coinbaseはどのコインをプラットフォームでサポートするかに非常に選択的であることで知られています。これにより、NEARはより信頼できるプラットフォームとなりました。今日でもCoinbaseでNEARを取引することができます。

なぜコミットするのか?

しばらく考えた後、私はNEAR MetaBUILD IIIハッカソンに参加するために時間をコミットすることに決めました。私の理由は次の通りです:

  • 暗号通貨は消えず、技術として残るので、技術を学ぶために時間を投資することは理にかなっています。
  • ハッカソンには素晴らしい報酬があり、勝者の一人になると$20,000から$100,000のNEARが得られます。
  • ハッカソンには特定の締切があり、プロジェクトが一般的なサイドプロジェクトのように数ヶ月も引き延ばされることはありません。
  • プロジェクトは素晴らしい学習体験となり、ハッカソンへの素晴らしい導入となります。
  • 最悪の場合、ハッカソンは私の履歴書に載せるための素晴らしいプロジェクトを作る機会を与えてくれます。

これらすべてを考慮して、私は2022年8月26日に大学の親友に電話をかけ、このハッカソンの計画を始めました。ハッカソンは2023年9月23日に開始され、2022年11月21日に終了する予定でした。しかし、ハッカソンの終わりに向けて締切が2023年11月24日まで延長されました。私たちは1ヶ月早かったので、この時間を使って学び、2ヶ月のハッカソンで何に取り組むかをブレインストーミングすることにしました。その最初の月に、私たちは暗号通貨とブロックチェーンの一般的な概要を得ました。私たちはNEARのテストネットをレビューし、NEAR SDKを確認し、いくつかのスマートコントラクトをデプロイしました。

アイデア

ブロックチェーンとNEARに関するすべてのことに素晴らしい導入を受けた後、私たちはアイデアをブレインストーミングし始めました。私はこのプロジェクトが単なる「ハッカソンプロジェクト」ではなく、他の人が使用できる製品になり、暗号通貨が取引以外のことにどのように役立つかの例となることを望んでいました。

このことを考慮して、私たちは最初に、コーディングなしでNEARブロックチェーン上でスマートコントラクトを簡単に作成・デプロイできるようにするUnreal Engine Blueprintに似たものを作成することを決定しました。しかし、ハッカソンが始まる1週間前に、このアイデアは単に意味がないことが分かり、放棄しました。実用的なユースケースがないのに、誰が私たちのツールを使ってNEARスマートコントラクトを作成しようとするでしょうか?それは、多くの人が必要としないツールを開発するようなものでした。

ハッカソンが始まるまで残り1週間となり、私たちは再びブレインストーミングを始め、このアイデアに決定しました:

AI研究者が世界中のラベラーにデータラベリングをアウトソースできる分散型プラットフォーム

私たちはこのプロジェクトを「Labeler NearBy」と名付けました。このアイデアを選んだ理由は次の通りです:

  • AI開発にはトレーニングのためのデータの人間によるラベリングが必要です。
  • 特定のデータセットのラベリングのためにスキルのある個人を見つけて管理することは困難です。
  • このアイデアは、Scale AIという会社によってすでに成功裏に実装されており、製品市場適合性を見つけたことが証明されています。
  • Scale AIのような中央集権的なサービスは、組織がデータをラベリング会社に送信し、その後、ラベラーを世界中にアウトソースする必要があるため、懸念があります。ラベリングプロセスの後、会社はラベル付けされたデータを組織に返します。これにより、貴重なトレーニングデータの制御が失われ、ラベリング会社が自社のモデルをトレーニングするために使用する可能性があります。このサービスを分散化することは論理的な解決策のように思えました。
  • このアイデアに取り組んでいる分散型アプリ(dApp)スペースのプロジェクトは非常に少なく、私たちがこの分野で革新し、先駆者となる機会を提供しました。

複雑さを減らすために、Labeler NearByは当面の間、画像データのみをサポートすることに決定しました。

提出

アイデアが決まり、ハッカソンが正式に始まったので、私の友人と私はLabeler NearByの構築を始めました。私たちは2ヶ月間プロジェクトに取り組み、2022年11月24日に最終ドラフトをDevpostに提出しました。私たちはDevpostにプロジェクトを提出し、Githubにも提出のコピーを作成しました。このブログでは、Labeler NearByのすべての技術的側面や開発プロセスをカバーしていません。これを知って、Labeler NearByの動作について詳しく知りたい場合や最終提出を確認したい場合は、以下のリンクのいずれかを訪れてください:

Labeler NearByは、ln-researcherとln-labelerの2つのコードベースで構成されています。これらのコードベースは完全にオープンソースで、MITライセンスの下で公開されており、以下のリンクから確認できます:

以下は、Labeler NearBy(LN)がどのように機能するかの一般的な概要です:

研究者はAIモデルのトレーニングのためにラベル付けされた画像を必要とします。これを達成するために、研究者はLNを利用してデータをホストし、ラベラーがデータにラベルを付ける手段を提供します。これは、API、研究者のスマートコントラクト、およびローカルPostgresデータベースで構成される自己ホスト型ウェブサービスであるln-researcherを通じて実現されます。ラベラーには、研究者の画像にアクセスしてラベルを付けるためのウェブフロントエンドが(提供される予定でした)用意されます。ラベリングプロセス中に、1つの画像は異なるラベラーによって3回ラベル付けされます。投票システムを通じて決定された最良のラベルを持つラベラーのみがNEARコインで報酬を受け取ります。このプロセスを担当するウェブアプリはln-labelerと呼ばれています。研究者は各ラベリング操作に資金を提供し、NEARコインはCoinbaseを通じて簡単にドルに変換できます。すべてのトランザクションのロジスティクスは、NEAR Protocolブロックチェーン上でホストされるスマートコントラクトによって処理されます。

ハッカソンのためのLabeler NearByのデモビデオはこちらでご覧いただけます:

最大の成果

私が実装したことを最も誇りに思っている機能は、getImage()という関数です。この関数はln-researcherのAPIエンドポイントとして機能し、Labeler NearBy(LN)における研究者とラベラー間のデータパイプラインで重要な役割を果たします。

このAPIエンドポイントは、研究者がラベリングのために画像を安全かつ信頼性高く配布できるようにします。ラベリングの割り当ては、NEAR Protocolブロックチェーン上のNEARスマートコントラクトを介して管理され、画像データは研究者によってln-researcherを通じてホストされます。

このエンドポイントは、割り当てられたラベラーのみが画像にアクセスできるようにするために、一連のセキュリティチェックを実行します。これには、リクエストの署名を検証し、関連するスマートコントラクトを確認してタスクの存在とリクエストしているラベラーへの割り当てを確認することが含まれます。

リクエストが研究者の自己ホスト型ln-researcher APIで検証されると、関数はローカルPostgresデータベースから画像を取得し、画像を暗号化し、ラベリングのために画像を復号化できる権限のあるラベラーに配信します。同時に、関数はデータベース内の画像のステータスを更新し、画像のラベリング進行状況を示します。このプロセス全体を通じて、研究者とラベラーの両方のRSAキーが認証に使用されます。また、画像を暗号化するためにAES暗号化が使用されます。

このエンドポイントは、研究者からラベラーへの画像の安全で制御された配布を管理する上で重要な役割を果たします。安全なデータ転送を確保し、画像ラベリングプロセスを効果的に追跡および管理します。さらに、このプロセスは、少なくともこのエンドポイントに関してはHTTPSを使用する必要を排除する可能性があります。

この特定のエンドポイント/関数はテストされ、機能することが証明されました。以下は、Labeler NearByの全体的な機能を示す図であり、前述のエンドポイント/関数がどのように機能するかを明確に示しています:

結果

残念ながら、悲しい現実は、ハッカソンの締切までにこのプロジェクトを完全に完了することができなかったということです。プロジェクトの大部分は完成しましたが、ln-researcherのように、フロントエンド(ln-labeler)は完成せず、ライブデモを展開することもできませんでした。バックエンド(ln-researcher)は基本的に完成していましたが、適切に機能するフロントエンドがなく、ライブデモもなかったため、誰もLabeler NearByのアイデアを試すことができませんでした。それだけでなく、審査員もプロジェクトを試すことができず、代わりに提出物を読み、コードを確認し、または自分で実行しようとしなければなりませんでした。これにより、私たちの勝利の可能性はほぼゼロパーセントにまで下がりました。これは2022年12月15日にハッカソンの受賞者が発表されたときに確認され、私たちはその中には含まれていませんでした。

失敗

このハッカソンの最終結果が落胆させるものであったことは隠しません。数ヶ月をこのプロジェクトに投資し、私はこのプロジェクトに対して大きなビジョンを持っていました。なぜなら、これは研究者にとって非常に有用なツールを提供すると思っていたからです。

私が取り組むプロジェクトには明確な基準があります:成功するか失敗するかのどちらかであり、中間はありません。したがって、このプロジェクトは締切までに完全に完了しなかったため、失敗でした。潜在的なユーザーにアクセスできないままでした。

しかし、失敗は人生の自然な一部であることを忘れないことが重要です。私たちの成功は、失敗から学んだ教訓の上に築かれています。このハッカソンの結果は落胆させるものでしたが、プロジェクトや製品を開発する際に貴重な洞察を提供してくれました。

学んだ教訓

この経験から得た主な教訓は以下の通りです:

  1. 私たちが選んだプロジェクトは、反復する前に多くの機能を事前に構築する必要がありました。これはどういう意味かというと、このプロジェクトはアイデアをテストする前にほぼすべてのコンポーネントを構築する必要がありました。機能するために必須のコンポーネントが少ないプロジェクトを選ぶ方が理にかなっていました。そうすることで、必須のコンポーネントをより早く構築し、プロジェクトを早く反復できたでしょう。そうすれば、締切にもっと簡単に間に合い、よりシンプルでありながらもより完成度の高いプロジェクトを作ることができたかもしれません。YCというテクノロジースタートアップアクセラレーターは、迅速に立ち上げ、ユーザーと話し、反復するべきだと強調しています。私たちはこのハッカソンのプロジェクトでそれを行うべきでした。
  2. 私たちはこのプロジェクトを構築するのにかかる時間を過小評価していました。これは私たちの初めてのハッカソンであり、初めての分散型アプリケーション(dapp)を作成することでした。それだけでなく、私はフルタイムのソフトウェアエンジニアとして働いており、友人は修士課程を修了していました。それでも、私たちは2ヶ月で十分だと思っていました。プロジェクトの範囲を縮小するか、作業負荷を軽減できるもう1人のチームメンバーを見つける方が理にかなっていました。
  3. ウィンストン・チャーチルは「完璧は進歩の敵である」と有名に述べました。私はこのプロジェクトをビジネス・トゥ・カスタマー(B2C)製品のように扱っていましたが、実際にはこれはただのハッカソンプロジェクトであり、せいぜい最小限の実用製品(MVP)でした。したがって、初期の段階で、私は小さな詳細に時間を浪費しすぎて、コア機能を十分に機能させることに集中すべきでした。

これらの貴重な教訓に加えて、私は私の個人的なサイドプロジェクトや職業的な取り組みにおいて非常に貴重な新しいスキルを得ました。これらのスキルには以下が含まれます:

  1. Node.js、JavaScript、Express.jsを使用したAPIの開発
  2. データ管理のためのPostgreSQLの設定と使用
  3. PGのようなパッケージを使用してAPI開発にPostgreSQLを組み込むこと
  4. データセキュリティを強化するためにRSA(非対称暗号化)とAES(対称暗号化)を利用すること

結論

全体として、最終結果に失望したにもかかわらず、このハッカソンに参加できたことを嬉しく思います。Labeler NearByに取り組む中で得た貴重な教訓とスキルに感謝しており、それらは私をより良い開発者にし、次のプロジェクトであるNotify-Cyberの開発に大いに貢献しました。

その他のメモ

  • 私はLabeler NearByに戻るかもしれませんが、現時点ではこのプロジェクトは「長期休止中」です。
  • 現在、Labeler NearByはNEARのテストネットでのみ実行されるべきです。さらなる開発、テスト、監査が必要です。