From 1cbb1dd7f3e111c31f9bd2d82775ef7898adfcd8 Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 18:02:21 -0400 Subject: [PATCH 1/9] add enqueue spam command --- skynet/cli.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/skynet/cli.py b/skynet/cli.py index d7e389d..08a5032 100644 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -110,6 +110,7 @@ def download(): @click.option('--step', '-s', default=26) @click.option('--seed', '-S', default=None) @click.option('--upscaler', '-U', default='x4') +@click.option('--jobs', '-j', default=1) def enqueue( account: str, permission: str, @@ -134,12 +135,19 @@ def enqueue( }) binary = '' - ec, out = cleos.push_action( - 'telos.gpu', 'enqueue', [account, req, binary, reward], f'{account}@{permission}' - ) - - print(collect_stdout(out)) - assert ec == 0 + if not kwargs['jobs']: + ec, out = cleos.push_action( + 'telos.gpu', 'enqueue', [account, req, binary, reward], f'{account}@{permission}' + ) + print(collect_stdout(out)) + assert ec == 0 + else: + for i in kwargs['jobs']: + ec, out = cleos.push_action( + 'telos.gpu', 'enqueue', [account, req, binary, reward], f'{account}@{permission}' + ) + print(collect_stdout(out)) + assert ec == 0 @skynet.command() @click.option('--loglevel', '-l', default='INFO', help='Logging level') From a452065779c7fef9cde7dfecba82ab6985ee19be Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 18:10:55 -0400 Subject: [PATCH 2/9] remove unneeded if block --- skynet/cli.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/skynet/cli.py b/skynet/cli.py index 08a5032..d637ea2 100644 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -135,19 +135,12 @@ def enqueue( }) binary = '' - if not kwargs['jobs']: + for i in kwargs['jobs']: ec, out = cleos.push_action( 'telos.gpu', 'enqueue', [account, req, binary, reward], f'{account}@{permission}' ) print(collect_stdout(out)) assert ec == 0 - else: - for i in kwargs['jobs']: - ec, out = cleos.push_action( - 'telos.gpu', 'enqueue', [account, req, binary, reward], f'{account}@{permission}' - ) - print(collect_stdout(out)) - assert ec == 0 @skynet.command() @click.option('--loglevel', '-l', default='INFO', help='Logging level') From c8471ff85ba2245879bfd00fd74e2fa1c17ad5fa Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 18:56:44 -0400 Subject: [PATCH 3/9] add min-verification --- skynet/cli.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) mode change 100644 => 100755 skynet/cli.py diff --git a/skynet/cli.py b/skynet/cli.py old mode 100644 new mode 100755 index d637ea2..7108934 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -111,6 +111,7 @@ def download(): @click.option('--seed', '-S', default=None) @click.option('--upscaler', '-U', default='x4') @click.option('--jobs', '-j', default=1) +@click.option('--min-verification', '-mv', default=1) def enqueue( account: str, permission: str, @@ -135,9 +136,9 @@ def enqueue( }) binary = '' - for i in kwargs['jobs']: + for i in range(kwargs['jobs']): ec, out = cleos.push_action( - 'telos.gpu', 'enqueue', [account, req, binary, reward], f'{account}@{permission}' + 'telos.gpu', 'enqueue', [account, req, binary, reward, kwargs['min-verification']], f'{account}@{permission}' ) print(collect_stdout(out)) assert ec == 0 From 1b80de6228a7f86b1b93a93ff696c58059738272 Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 21:11:24 -0400 Subject: [PATCH 4/9] change push_action to a_push_action in enqueue cli --- skynet/cli.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/skynet/cli.py b/skynet/cli.py index 7108934..60e54e9 100755 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -13,7 +13,7 @@ import asyncio import requests from leap.cleos import CLEOS -from leap.sugar import collect_stdout +from leap.sugar import collect_stdout, Name from leap.hyperion import HyperionAPI from skynet.ipfs import IPFSHTTP @@ -100,6 +100,7 @@ def download(): '--node-url', '-n', default='https://skynet.ancap.tech') @click.option( '--reward', '-r', default='20.0000 GPU') +@click.option('--jobs', '-j', default=1) @click.option('--algo', '-a', default='midj') @click.option( '--prompt', '-p', default='a red old tractor in a sunny wheat field') @@ -110,14 +111,13 @@ def download(): @click.option('--step', '-s', default=26) @click.option('--seed', '-S', default=None) @click.option('--upscaler', '-U', default='x4') -@click.option('--jobs', '-j', default=1) -@click.option('--min-verification', '-mv', default=1) def enqueue( account: str, permission: str, key: str | None, node_url: str, reward: str, + jobs: int, **kwargs ): key, account, permission = load_account_info( @@ -136,12 +136,25 @@ def enqueue( }) binary = '' - for i in range(kwargs['jobs']): - ec, out = cleos.push_action( - 'telos.gpu', 'enqueue', [account, req, binary, reward, kwargs['min-verification']], f'{account}@{permission}' + for i in range(jobs): + res = trio.run(cleos.a_push_action, + 'telos.gpu', + 'enqueue', + { + 'user': Name(account), + 'request_body': req, + 'binary_data': binary, + 'reward': reward, + 'min_verification': 1 + }, + # [account, req, binary, reward], + # [account, req, binary, reward, kwargs['min_verification']], + account, key, permission, + #f'{account}@{permission}' ) - print(collect_stdout(out)) - assert ec == 0 + print(res) + # print(collect_stdout(out)) + # assert ec == 0 @skynet.command() @click.option('--loglevel', '-l', default='INFO', help='Logging level') From f17f11e5f35665ff8e53dec9548fe9d372f920ad Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 23:24:32 -0400 Subject: [PATCH 5/9] fix enqueue and deposit to use a_push_action --- skynet/cli.py | 40 ++++++++++++++++++++++++++++++---------- skynet/config.py | 4 ++-- 2 files changed, 32 insertions(+), 12 deletions(-) mode change 100644 => 100755 skynet/config.py diff --git a/skynet/cli.py b/skynet/cli.py index 60e54e9..aaf8c38 100755 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -13,7 +13,7 @@ import asyncio import requests from leap.cleos import CLEOS -from leap.sugar import collect_stdout, Name +from leap.sugar import collect_stdout, Name, asset_from_str from leap.hyperion import HyperionAPI from skynet.ipfs import IPFSHTTP @@ -101,7 +101,7 @@ def download(): @click.option( '--reward', '-r', default='20.0000 GPU') @click.option('--jobs', '-j', default=1) -@click.option('--algo', '-a', default='midj') +@click.option('--model', '-m', default='prompthero/openjourney') @click.option( '--prompt', '-p', default='a red old tractor in a sunny wheat field') @click.option('--output', '-o', default='output.png') @@ -121,10 +121,10 @@ def enqueue( **kwargs ): key, account, permission = load_account_info( - 'user', key, account, permission) + 'dgpu', key, account, permission) node_url, _, _ = load_endpoint_info( - 'user', node_url, None, None) + 'dgpu', node_url, None, None) with open_cleos(node_url, key=key) as cleos: if not kwargs['seed']: @@ -144,7 +144,7 @@ def enqueue( 'user': Name(account), 'request_body': req, 'binary_data': binary, - 'reward': reward, + 'reward': asset_from_str(reward), 'min_verification': 1 }, # [account, req, binary, reward], @@ -298,6 +298,12 @@ def config( '--permission', '-p', default='active') @click.option( '--key', '-k', default=None) +@click.option( + '--sender', '-s', default=None) +@click.option( + '--recipient', '-r', default=None) +@click.option( + '--memo', '-m', default="") @click.option( '--node-url', '-n', default='https://skynet.ancap.tech') @click.argument('quantity') @@ -305,19 +311,33 @@ def deposit( account: str, permission: str, key: str | None, + sender: str, + recipient: str, + memo: str, node_url: str, quantity: str ): key, account, permission = load_account_info( - 'user', key, account, permission) + 'dgpu', key, account, permission) node_url, _, _ = load_endpoint_info( - 'user', node_url, None, None) + 'dgpu', node_url, None, None) with open_cleos(node_url, key=key) as cleos: - ec, out = cleos.transfer_token(account, 'telos.gpu', quantity) + res = trio.run(cleos.a_push_action, + 'eosio.token', + 'transfer', + { + 'sender': Name(sender), + 'recipient': Name(recipient), + 'amount': asset_from_str(quantity), + 'memo': memo + }, + # [sender, recipient, quantity, memo], + account, key, permission, + # f"{account}@{permission}", + ) + print(res) - print(collect_stdout(out)) - assert ec == 0 @skynet.group() def run(*args, **kwargs): diff --git a/skynet/config.py b/skynet/config.py old mode 100644 new mode 100755 index d068295..b025feb --- a/skynet/config.py +++ b/skynet/config.py @@ -71,8 +71,8 @@ def load_account_info( if not key and 'key' in sub_config: key = sub_config['key'] - if not account and 'name' in sub_config: - account = sub_config['name'] + if not account and 'account' in sub_config: + account = sub_config['account'] if not permission and 'permission' in sub_config: permission = sub_config['permission'] From d680ea9b720515b67189cbf075cfe2870b7f561b Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Thu, 29 Jun 2023 19:37:50 -0400 Subject: [PATCH 6/9] convert all push_action funcs to async a_push_action --- skynet/cli.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/skynet/cli.py b/skynet/cli.py index aaf8c38..72ab4da 100755 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -250,12 +250,20 @@ def dequeue( 'user', node_url, None, None) with open_cleos(node_url, key=key) as cleos: - ec, out = cleos.push_action( - 'telos.gpu', 'dequeue', [account, request_id], f'{account}@{permission}' + res = trio.run(cleos.a_push_action, + 'telos.gpu', + 'dequeue', + { + 'user': Name(account), + 'request_id': request_id, + }, + account, key, permission, + # [account, request_id], f'{account}@{permission}' ) + print(res) + # print(collect_stdout(out)) + # assert ec == 0 - print(collect_stdout(out)) - assert ec == 0 @skynet.command() @click.option( @@ -284,12 +292,20 @@ def config( node_url, _, _ = load_endpoint_info( 'user', node_url, None, None) with open_cleos(node_url, key=key) as cleos: - ec, out = cleos.push_action( - 'telos.gpu', 'config', [token_contract, token_symbol], f'{account}@{permission}' + res = trio.run(cleos.a_push_action, + 'telos.gpu', + 'config', + { + 'token_contract': token_contract, + 'token_symbol': token_symbol, + }, + account, key, permission, + # [token_contract, token_symbol], + # f'{account}@{permission}' ) - - print(collect_stdout(out)) - assert ec == 0 + print(res) + # print(collect_stdout(out)) + # assert ec == 0 @skynet.command() @click.option( From d862954377540b5e8c3c3eaf0b3810df723bcc36 Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Thu, 29 Jun 2023 19:51:33 -0400 Subject: [PATCH 7/9] add binary data option to enqueue --- skynet/cli.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/skynet/cli.py b/skynet/cli.py index 72ab4da..70998d1 100755 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -111,6 +111,7 @@ def download(): @click.option('--step', '-s', default=26) @click.option('--seed', '-S', default=None) @click.option('--upscaler', '-U', default='x4') +@click.option('--binary_data', '-b', default='') def enqueue( account: str, permission: str, @@ -127,16 +128,25 @@ def enqueue( 'dgpu', node_url, None, None) with open_cleos(node_url, key=key) as cleos: - if not kwargs['seed']: - kwargs['seed'] = random.randint(0, 10e9) - - req = json.dumps({ - 'method': 'diffuse', - 'params': kwargs - }) - binary = '' + # if not kwargs['seed']: + # kwargs['seed'] = random.randint(0, 10e9) + # + # req = json.dumps({ + # 'method': 'diffuse', + # 'params': kwargs + # }) + # binary = '' for i in range(jobs): + if not kwargs['seed']: + kwargs['seed'] = random.randint(0, 10e9) + + req = json.dumps({ + 'method': 'diffuse', + 'params': kwargs + }) + binary = kwargs['binary_data'] + res = trio.run(cleos.a_push_action, 'telos.gpu', 'enqueue', From de59e3aa1d07c70f747c9cb98bcd7f5f6e1af06a Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 3 Jul 2023 09:16:04 -0400 Subject: [PATCH 8/9] change request_id type to int in dequeue --- skynet/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skynet/cli.py b/skynet/cli.py index 70998d1..0afc5de 100755 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -265,7 +265,7 @@ def dequeue( 'dequeue', { 'user': Name(account), - 'request_id': request_id, + 'request_id': int(request_id), }, account, key, permission, # [account, request_id], f'{account}@{permission}' From 619ffe71ccc6446b51cee89b0c26b465efaa93e8 Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Tue, 4 Jul 2023 00:29:51 -0400 Subject: [PATCH 9/9] address pr comments, remove commented code --- skynet/cli.py | 91 ++++++++++++++++++--------------------------------- 1 file changed, 32 insertions(+), 59 deletions(-) diff --git a/skynet/cli.py b/skynet/cli.py index 0afc5de..1f7d24c 100755 --- a/skynet/cli.py +++ b/skynet/cli.py @@ -122,49 +122,38 @@ def enqueue( **kwargs ): key, account, permission = load_account_info( - 'dgpu', key, account, permission) + 'user', key, account, permission) node_url, _, _ = load_endpoint_info( - 'dgpu', node_url, None, None) + 'user', node_url, None, None) with open_cleos(node_url, key=key) as cleos: - # if not kwargs['seed']: - # kwargs['seed'] = random.randint(0, 10e9) - # - # req = json.dumps({ - # 'method': 'diffuse', - # 'params': kwargs - # }) - # binary = '' + async def enqueue_n_jobs(): + for i in range(jobs): + if not kwargs['seed']: + kwargs['seed'] = random.randint(0, 10e9) - for i in range(jobs): - if not kwargs['seed']: - kwargs['seed'] = random.randint(0, 10e9) + req = json.dumps({ + 'method': 'diffuse', + 'params': kwargs + }) + binary = kwargs['binary_data'] - req = json.dumps({ - 'method': 'diffuse', - 'params': kwargs - }) - binary = kwargs['binary_data'] + res = await cleos.a_push_action( + 'telos.gpu', + 'enqueue', + { + 'user': Name(account), + 'request_body': req, + 'binary_data': binary, + 'reward': asset_from_str(reward), + 'min_verification': 1 + }, + account, key, permission, + ) + print(res) + trio.run(enqueue_n_jobs) - res = trio.run(cleos.a_push_action, - 'telos.gpu', - 'enqueue', - { - 'user': Name(account), - 'request_body': req, - 'binary_data': binary, - 'reward': asset_from_str(reward), - 'min_verification': 1 - }, - # [account, req, binary, reward], - # [account, req, binary, reward, kwargs['min_verification']], - account, key, permission, - #f'{account}@{permission}' - ) - print(res) - # print(collect_stdout(out)) - # assert ec == 0 @skynet.command() @click.option('--loglevel', '-l', default='INFO', help='Logging level') @@ -268,11 +257,8 @@ def dequeue( 'request_id': int(request_id), }, account, key, permission, - # [account, request_id], f'{account}@{permission}' ) print(res) - # print(collect_stdout(out)) - # assert ec == 0 @skynet.command() @@ -310,12 +296,9 @@ def config( 'token_symbol': token_symbol, }, account, key, permission, - # [token_contract, token_symbol], - # f'{account}@{permission}' ) print(res) - # print(collect_stdout(out)) - # assert ec == 0 + @skynet.command() @click.option( @@ -324,12 +307,6 @@ def config( '--permission', '-p', default='active') @click.option( '--key', '-k', default=None) -@click.option( - '--sender', '-s', default=None) -@click.option( - '--recipient', '-r', default=None) -@click.option( - '--memo', '-m', default="") @click.option( '--node-url', '-n', default='https://skynet.ancap.tech') @click.argument('quantity') @@ -337,30 +314,26 @@ def deposit( account: str, permission: str, key: str | None, - sender: str, - recipient: str, - memo: str, node_url: str, quantity: str ): key, account, permission = load_account_info( - 'dgpu', key, account, permission) + 'user', key, account, permission) node_url, _, _ = load_endpoint_info( - 'dgpu', node_url, None, None) + 'user', node_url, None, None) + with open_cleos(node_url, key=key) as cleos: res = trio.run(cleos.a_push_action, 'eosio.token', 'transfer', { - 'sender': Name(sender), - 'recipient': Name(recipient), + 'sender': Name(account), + 'recipient': Name('telos.gpu'), 'amount': asset_from_str(quantity), - 'memo': memo + 'memo': f'{account} transferred {quantity} to telos.gpu' }, - # [sender, recipient, quantity, memo], account, key, permission, - # f"{account}@{permission}", ) print(res)