ルール(Round 3)

Opening Phase Round3でのネットワークのルールを説明します。


Round 3 アップデート

JOB Assignerの廃止

以前まではAssignerという中央集権的なサーバが各ノードにJOBの割当を行っていましたが、 分散化を目指す思想に則り、各ノードが自分でJOBを選択・取得するように変更されました。 各ノードは設定された優先順位(例えばトランザクションフィーの有利な順)に従いJOBを選択し、 Coreコントラクトに対して受諾表明を行います。

JOB情報サーバの導入

Assigner廃止に伴い、各ノードはCoreコントラクトに対してJOB取得のために高頻度に参照アクセスを 行うことになります。これを助けるため、JOB情報サーバを導入しました。各ノードはコントラクトに 直接参照を行う代わりにJOB情報サーバを参照することで、スムーズに最新JOB情報を取得することができます。

Ethereumアドレスの自動設定

各workerは、設定ファイル(.env)にprivate keyを明示的に指定しない場合、 Ethereumアドレスを自動生成します。(masterには明示的に指定が必要です) 将来アップデートでは、各master/workerはこのアドレスに紐づく秘密鍵によって署名を行うことで 各々を認証するようになる予定です。 これは、masterとworkerがそれぞれ別の管理者によって運用される際にに互いを識別することを想定しています。

JOBサイズの多様化

これまでより多様なサイズのデータセットが投入されるようになりました。JOB完遂により獲得できるgasはデータセットサイズに比例します。 大きなJOBを処理するにはより多くのRAMを必要とします。 Round 3では、大きなものはこれまでの約3倍のデータサイズになります。

設定情報

Emethクライアントに設定する設定情報は以下の通りです。

Round 3 設定情報
EmethCoreコントラクト
(emethConttactAddress).

0xF55e6FB0948B37a197DA974E0A84727022F2D048

EMTトークンコントラクト
(tokenContractAddress)

0x6652521583190E398c6e59A7Ea41b60E74814b3B

Storage API
(storageApi)

https://emeth-storage.testnet.alt.ai

JOB情報サーバ API
(info_server_url)

http://ec2-13-208-214-161.ap-northeast-3.compute.amazonaws.com:3000

RPCエンドポイント
(endpoint)

https://testnet.alt.ai

学習epoch数
(n_epoch)

>=2 (R3のVerify条件は2以上。基本的でそれより大きくする必要はない)


ネットワーク情報

Emethネットワークの設定情報です。

Round 3 ネットワーク情報

Verifier fee

10 EMT / JOB

Verify成功時にJOBの持つTransaction Feeから、失敗時にはノードのDepositから徴収されます

Deposit係数

100% of transaction gas

ノードのattachに必要なDeposit量。JOBのgasに対する係数

Timeoutペナルティ

25% of deposit

引き受けたJOBがTimeoutした際にdepositから差し引かれるペナルティ

Declineペナルティ

25% of deposit

引き受けたJOBをdeclineによってキャンセルした際にdepositから差し引かれるペナルティ

Failedペナルティ

25% of deposit

引き受けたJOBがVerifierによって拒否された際にdepositから差し引かれるペナルティ


JOBの割当

※Round 3から、Emeth Coreコントラクトにノードをattachする必要がなくなりました。

Emethノード(masterと最低1つのworker)を起動すると、現在ネットワーク上にリクエストされているJOBの中から制限時間以内に処理可能なものを探します。 (この際、JOB情報サーバAPIがその補助を行います)

見つけたJOBに対して、その想定学習コストに応じて決定されるgasが設定されており、gasに応じたdeposit(EMT)を預け入れることでJOBを引き受けます。

JOBとは、ユーザによってネットワークに投入された計算依頼のことです。 本来はモデル計算を行いたいユーザからのJOBがネットワークに流れるものですが、Opening Phaseでは まだ十分な依頼者がいないため、予め用意されたリクエスターBOTにが常時JOBを投入します。

最大で、各ノードに接続しているworkerの数と同じ数のJOBが同時に割当てられます。


計算結果の検査

ノードがJOBを引き受けると、GPUを用いた計算処理が始まります。 計算にかかる時間はマシンスペックとconfigのパラメータによって変わります。

【参考】GeFource RTX 3080 (GPU Memory 10GB)、batchsize=3, epoch=2の場合で100MBサイズのデータセットに対して1JOBあたり約6時間程度

計算が完了すると、ノードはネットワークに結果をsubmitします。 ネットワークに常駐するVerifierによって計算結果プロセスの検査が行われ、十分な計算がなされたかどうか判定されます。 Round3では、epoch >= 2 で計算が完了した場合に検査をパスします。

検査をパスするとJOBは完了となり、リワードを獲得するためのシェアを得ます。 検査をパスできない場合、シェアは得られません。


1日あたりの処理上限

Round3から、上限は撤廃されました。 日が変わるとシェアの計算はリセットされ、シェアに応じたEMTトークンの報酬が確定します。 1日の起点はUTC 0:00です。