mirror of https://github.com/skygpu/skynet.git
				
				
				
			Change dgpu submodules classes name per fomos suggestion
							parent
							
								
									f0604f54fb
								
							
						
					
					
						commit
						1b437b761b
					
				| 
						 | 
					@ -4,21 +4,21 @@ from hypercorn.config import Config
 | 
				
			||||||
from hypercorn.trio import serve
 | 
					from hypercorn.trio import serve
 | 
				
			||||||
from quart_trio import QuartTrio as Quart
 | 
					from quart_trio import QuartTrio as Quart
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from skynet.dgpu.compute import SkynetMM
 | 
					from skynet.dgpu.compute import ModelMngr
 | 
				
			||||||
from skynet.dgpu.daemon import SkynetDGPUDaemon
 | 
					from skynet.dgpu.daemon import WorkerDaemon
 | 
				
			||||||
from skynet.dgpu.network import SkynetGPUConnector
 | 
					from skynet.dgpu.network import NetConnector
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def open_dgpu_node(config: dict) -> None:
 | 
					async def open_dgpu_node(config: dict) -> None:
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    Open a top level "GPU mgmt daemon", keep the
 | 
					    Open a top level "GPU mgmt daemon", keep the
 | 
				
			||||||
    `SkynetDGPUDaemon._snap: dict[str, list|dict]` table
 | 
					    `WorkerDaemon._snap: dict[str, list|dict]` table
 | 
				
			||||||
    and *maybe* serve a `hypercorn` web API.
 | 
					    and *maybe* serve a `hypercorn` web API.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    conn = SkynetGPUConnector(config)
 | 
					    conn = NetConnector(config)
 | 
				
			||||||
    mm = SkynetMM(config)
 | 
					    mm = ModelMngr(config)
 | 
				
			||||||
    daemon = SkynetDGPUDaemon(mm, conn, config)
 | 
					    daemon = WorkerDaemon(mm, conn, config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    api: Quart|None = None
 | 
					    api: Quart|None = None
 | 
				
			||||||
    if 'api_bind' in config:
 | 
					    if 'api_bind' in config:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,8 +66,7 @@ def prepare_params_for_diffuse(
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO, yet again - drop the redundant prefix ;)
 | 
					class ModelMngr:
 | 
				
			||||||
class SkynetMM:
 | 
					 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    (AI algo) Model manager for loading models, computing outputs,
 | 
					    (AI algo) Model manager for loading models, computing outputs,
 | 
				
			||||||
    checking load state, and unloading when no-longer-needed/finished.
 | 
					    checking load state, and unloading when no-longer-needed/finished.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,8 +17,8 @@ from skynet.constants import (
 | 
				
			||||||
from skynet.dgpu.errors import (
 | 
					from skynet.dgpu.errors import (
 | 
				
			||||||
    DGPUComputeError,
 | 
					    DGPUComputeError,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from skynet.dgpu.compute import SkynetMM
 | 
					from skynet.dgpu.compute import ModelMngr
 | 
				
			||||||
from skynet.dgpu.network import SkynetGPUConnector
 | 
					from skynet.dgpu.network import NetConnector
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def convert_reward_to_int(reward_str):
 | 
					def convert_reward_to_int(reward_str):
 | 
				
			||||||
| 
						 | 
					@ -29,8 +29,7 @@ def convert_reward_to_int(reward_str):
 | 
				
			||||||
    return int(int_part + decimal_part)
 | 
					    return int(int_part + decimal_part)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# prolly don't need the `Skynet` prefix since that's kinda implied ;p
 | 
					class WorkerDaemon:
 | 
				
			||||||
class SkynetDGPUDaemon:
 | 
					 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    The root "GPU daemon".
 | 
					    The root "GPU daemon".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,12 +39,12 @@ class SkynetDGPUDaemon:
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    def __init__(
 | 
					    def __init__(
 | 
				
			||||||
        self,
 | 
					        self,
 | 
				
			||||||
        mm: SkynetMM,
 | 
					        mm: ModelMngr,
 | 
				
			||||||
        conn: SkynetGPUConnector,
 | 
					        conn: NetConnector,
 | 
				
			||||||
        config: dict
 | 
					        config: dict
 | 
				
			||||||
    ):
 | 
					    ):
 | 
				
			||||||
        self.mm: SkynetMM = mm
 | 
					        self.mm: ModelMngr = mm
 | 
				
			||||||
        self.conn: SkynetGPUConnector = conn
 | 
					        self.conn: NetConnector = conn
 | 
				
			||||||
        self.auto_withdraw = (
 | 
					        self.auto_withdraw = (
 | 
				
			||||||
            config['auto_withdraw']
 | 
					            config['auto_withdraw']
 | 
				
			||||||
            if 'auto_withdraw' in config else False
 | 
					            if 'auto_withdraw' in config else False
 | 
				
			||||||
| 
						 | 
					@ -147,7 +146,7 @@ class SkynetDGPUDaemon:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO? this func is kinda big and maybe is better at module
 | 
					    # TODO? this func is kinda big and maybe is better at module
 | 
				
			||||||
    # level to reduce indentation?
 | 
					    # level to reduce indentation?
 | 
				
			||||||
    # -[ ] just pass `daemon: SkynetDGPUDaemon` vs. `self`
 | 
					    # -[ ] just pass `daemon: WorkerDaemon` vs. `self`
 | 
				
			||||||
    async def maybe_serve_one(
 | 
					    async def maybe_serve_one(
 | 
				
			||||||
        self,
 | 
					        self,
 | 
				
			||||||
        req: dict,
 | 
					        req: dict,
 | 
				
			||||||
| 
						 | 
					@ -271,7 +270,7 @@ class SkynetDGPUDaemon:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO, as per above on `.maybe_serve_one()`, it's likely a bit
 | 
					    # TODO, as per above on `.maybe_serve_one()`, it's likely a bit
 | 
				
			||||||
    # more *trionic* to define this all as a module level task-func
 | 
					    # more *trionic* to define this all as a module level task-func
 | 
				
			||||||
    # which operates on a `daemon: SkynetDGPUDaemon`?
 | 
					    # which operates on a `daemon: WorkerDaemon`?
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
    # -[ ] keeps tasks-as-funcs style prominent
 | 
					    # -[ ] keeps tasks-as-funcs style prominent
 | 
				
			||||||
    # -[ ] avoids so much indentation due to methods
 | 
					    # -[ ] avoids so much indentation due to methods
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,10 +46,7 @@ async def failable(fn: partial, ret_fail=None):
 | 
				
			||||||
            return o.unwrap()
 | 
					            return o.unwrap()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO, again the prefix XD
 | 
					class NetConnector:
 | 
				
			||||||
# -[ ] better name then `GPUConnector` ??
 | 
					 | 
				
			||||||
# |_ `Compute[Net]IO[Mngr]`
 | 
					 | 
				
			||||||
class SkynetGPUConnector:
 | 
					 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    An API for connecting to and conducting various "high level"
 | 
					    An API for connecting to and conducting various "high level"
 | 
				
			||||||
    network-service operations in the skynet.
 | 
					    network-service operations in the skynet.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,17 +24,17 @@ def cleos():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.fixture(scope='session')
 | 
					@pytest.fixture(scope='session')
 | 
				
			||||||
def dgpu():
 | 
					def dgpu():
 | 
				
			||||||
    from skynet.dgpu.network import SkynetGPUConnector
 | 
					    from skynet.dgpu.network import NetConnector
 | 
				
			||||||
    from skynet.dgpu.compute import SkynetMM
 | 
					    from skynet.dgpu.compute import ModelMngr
 | 
				
			||||||
    from skynet.dgpu.daemon import SkynetDGPUDaemon
 | 
					    from skynet.dgpu.daemon import WorkerDaemon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config = load_skynet_toml(file_path='skynet.toml')
 | 
					    config = load_skynet_toml(file_path='skynet.toml')
 | 
				
			||||||
    hf_token = load_key(config, 'skynet.dgpu.hf_token')
 | 
					    hf_token = load_key(config, 'skynet.dgpu.hf_token')
 | 
				
			||||||
    hf_home = load_key(config, 'skynet.dgpu.hf_home')
 | 
					    hf_home = load_key(config, 'skynet.dgpu.hf_home')
 | 
				
			||||||
    set_hf_vars(hf_token, hf_home)
 | 
					    set_hf_vars(hf_token, hf_home)
 | 
				
			||||||
    config = config['skynet']['dgpu']
 | 
					    config = config['skynet']['dgpu']
 | 
				
			||||||
    conn = SkynetGPUConnector(config)
 | 
					    conn = NetConnector(config)
 | 
				
			||||||
    mm = SkynetMM(config)
 | 
					    mm = ModelMngr(config)
 | 
				
			||||||
    daemon = SkynetDGPUDaemon(mm, conn, config)
 | 
					    daemon = WorkerDaemon(mm, conn, config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    yield conn, mm, daemon
 | 
					    yield conn, mm, daemon
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from skynet.dgpu.compute import SkynetMM
 | 
					from skynet.dgpu.compute import ModelMngr
 | 
				
			||||||
from skynet.constants import *
 | 
					from skynet.constants import *
 | 
				
			||||||
from skynet.config import *
 | 
					from skynet.config import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue