mirror of https://github.com/skygpu/skynet.git
				
				
				
			Switch config to toml
							parent
							
								
									93203ab533
								
							
						
					
					
						commit
						9ef2442123
					
				
							
								
								
									
										20
									
								
								README.md
								
								
								
								
							
							
						
						
									
										20
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -13,7 +13,7 @@ system dependencies:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
# create and edit config from template
 | 
					# create and edit config from template
 | 
				
			||||||
cp skynet.ini.example skynet.ini
 | 
					cp skynet.toml.example skynet.toml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# install poetry package manager
 | 
					# install poetry package manager
 | 
				
			||||||
curl -sSL https://install.python-poetry.org | python3 -
 | 
					curl -sSL https://install.python-poetry.org | python3 -
 | 
				
			||||||
| 
						 | 
					@ -41,6 +41,9 @@ system dependencies:
 | 
				
			||||||
- `docker` with gpu enabled
 | 
					- `docker` with gpu enabled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					# create and edit config from template
 | 
				
			||||||
 | 
					cp skynet.toml.example skynet.toml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# pull runtime container
 | 
					# pull runtime container
 | 
				
			||||||
docker pull guilledk/skynet:runtime-cuda
 | 
					docker pull guilledk/skynet:runtime-cuda
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,14 +53,27 @@ docker pull guilledk/skynet:runtime-cuda
 | 
				
			||||||
# launch simple ipfs node
 | 
					# launch simple ipfs node
 | 
				
			||||||
./launch_ipfs.sh
 | 
					./launch_ipfs.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# run worker
 | 
					# run worker with all gpus
 | 
				
			||||||
docker run \
 | 
					docker run \
 | 
				
			||||||
    -it \
 | 
					    -it \
 | 
				
			||||||
    --rm \
 | 
					    --rm \
 | 
				
			||||||
 | 
					    --env HF_HOME=hf_home \
 | 
				
			||||||
    --gpus all \
 | 
					    --gpus all \
 | 
				
			||||||
    --network host \
 | 
					    --network host \
 | 
				
			||||||
    --name skynet-worker \
 | 
					    --name skynet-worker \
 | 
				
			||||||
    --mount type=bind,source="$(pwd)",target=/root/target \
 | 
					    --mount type=bind,source="$(pwd)",target=/root/target \
 | 
				
			||||||
    guilledk/skynet:runtime-cuda \
 | 
					    guilledk/skynet:runtime-cuda \
 | 
				
			||||||
    skynet run dgpu
 | 
					    skynet run dgpu
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# run worker with specific gpu
 | 
				
			||||||
 | 
					docker run \
 | 
				
			||||||
 | 
					    -it \
 | 
				
			||||||
 | 
					    --rm \
 | 
				
			||||||
 | 
					    --env HF_HOME=hf_home \
 | 
				
			||||||
 | 
					    --gpus '"device=1"' \
 | 
				
			||||||
 | 
					    --network host \
 | 
				
			||||||
 | 
					    --name skynet-worker-1 \
 | 
				
			||||||
 | 
					    --mount type=bind,source="$(pwd)",target=/root/target \
 | 
				
			||||||
 | 
					    guilledk/skynet:runtime-cuda \
 | 
				
			||||||
 | 
					    skynet run dgpu
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3068,6 +3068,17 @@ dev = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"]
 | 
				
			||||||
docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"]
 | 
					docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"]
 | 
				
			||||||
testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"]
 | 
					testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "toml"
 | 
				
			||||||
 | 
					version = "0.10.2"
 | 
				
			||||||
 | 
					description = "Python Library for Tom's Obvious, Minimal Language"
 | 
				
			||||||
 | 
					optional = false
 | 
				
			||||||
 | 
					python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
 | 
				
			||||||
 | 
					files = [
 | 
				
			||||||
 | 
					    {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
 | 
				
			||||||
 | 
					    {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tomli"
 | 
					name = "tomli"
 | 
				
			||||||
version = "2.0.1"
 | 
					version = "2.0.1"
 | 
				
			||||||
| 
						 | 
					@ -3632,4 +3643,4 @@ cffi = ["cffi (>=1.11)"]
 | 
				
			||||||
[metadata]
 | 
					[metadata]
 | 
				
			||||||
lock-version = "2.0"
 | 
					lock-version = "2.0"
 | 
				
			||||||
python-versions = ">=3.10,<3.12"
 | 
					python-versions = ">=3.10,<3.12"
 | 
				
			||||||
content-hash = "7a7556c8dd771303bd03afb008f678a175b97e1c07bba5ffaa7ae3cdad5b84f9"
 | 
					content-hash = "787c1bb602457589bdfeb6252fbc725abb038234dd7576060b61dc10dc9c4035"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,7 @@ asks = '^3.0.0'
 | 
				
			||||||
Pillow = '^10.0.1'
 | 
					Pillow = '^10.0.1'
 | 
				
			||||||
docker = '^6.1.3'
 | 
					docker = '^6.1.3'
 | 
				
			||||||
py-leap = {git = 'https://github.com/guilledk/py-leap.git', rev = 'v0.1a14'}
 | 
					py-leap = {git = 'https://github.com/guilledk/py-leap.git', rev = 'v0.1a14'}
 | 
				
			||||||
 | 
					toml = "^0.10.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[tool.poetry.group.frontend]
 | 
					[tool.poetry.group.frontend]
 | 
				
			||||||
optional = true
 | 
					optional = true
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,51 +0,0 @@
 | 
				
			||||||
# config sections are optional, depending on which services
 | 
					 | 
				
			||||||
# you wish to run
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[skynet.dgpu]
 | 
					 | 
				
			||||||
account = testworkerX
 | 
					 | 
				
			||||||
permission = active
 | 
					 | 
				
			||||||
key = 5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
node_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
hyperion_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
ipfs_gateway_url = /ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv
 | 
					 | 
				
			||||||
ipfs_url = http://127.0.0.1:5001
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
hf_home = hf_home
 | 
					 | 
				
			||||||
hf_token = hf_XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
auto_withdraw = True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[skynet.telegram]
 | 
					 | 
				
			||||||
account = telegram
 | 
					 | 
				
			||||||
permission = active
 | 
					 | 
				
			||||||
key = 5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
node_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
hyperion_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
ipfs_gateway_url = /ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv
 | 
					 | 
				
			||||||
ipfs_url = http://127.0.0.1:5001
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
token = XXXXXXXXXX:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[skynet.discord]
 | 
					 | 
				
			||||||
account = discord
 | 
					 | 
				
			||||||
permission = active
 | 
					 | 
				
			||||||
key = 5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
node_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
hyperion_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
ipfs_gateway_url = /ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv
 | 
					 | 
				
			||||||
ipfs_url = http://127.0.0.1:5001
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
token = XXXXXXXXXX:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[skynet.pinner]
 | 
					 | 
				
			||||||
hyperion_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
ipfs_url = http://127.0.0.1:5001
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[skynet.user]
 | 
					 | 
				
			||||||
account = testuser
 | 
					 | 
				
			||||||
permission = active
 | 
					 | 
				
			||||||
key = 5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 | 
					 | 
				
			||||||
node_url = https://testnet.skygpu.net
 | 
					 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,46 @@
 | 
				
			||||||
 | 
					# config sections are optional, depending on which services
 | 
				
			||||||
 | 
					# you wish to run
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[skynet.dgpu]
 | 
				
			||||||
 | 
					account = 'testworkerX'
 | 
				
			||||||
 | 
					permission = 'active'
 | 
				
			||||||
 | 
					key = '5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 | 
				
			||||||
 | 
					node_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					hyperion_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					ipfs_gateway_url = '/ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv'
 | 
				
			||||||
 | 
					ipfs_url = 'http://127.0.0.1:5001'
 | 
				
			||||||
 | 
					hf_home = 'hf_home'
 | 
				
			||||||
 | 
					hf_token = 'hf_XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXx'
 | 
				
			||||||
 | 
					auto_withdraw = true
 | 
				
			||||||
 | 
					non_compete = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[skynet.telegram]
 | 
				
			||||||
 | 
					account = 'telegram'
 | 
				
			||||||
 | 
					permission = 'active'
 | 
				
			||||||
 | 
					key = '5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 | 
				
			||||||
 | 
					node_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					hyperion_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					ipfs_gateway_url = '/ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv'
 | 
				
			||||||
 | 
					ipfs_url = 'http://127.0.0.1:5001'
 | 
				
			||||||
 | 
					token = 'XXXXXXXXXX:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[skynet.discord]
 | 
				
			||||||
 | 
					account = 'discord'
 | 
				
			||||||
 | 
					permission = 'active'
 | 
				
			||||||
 | 
					key = '5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 | 
				
			||||||
 | 
					node_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					hyperion_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					ipfs_gateway_url = '/ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv'
 | 
				
			||||||
 | 
					ipfs_url = 'http://127.0.0.1:5001'
 | 
				
			||||||
 | 
					token = 'XXXXXXXXXX:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[skynet.pinner]
 | 
				
			||||||
 | 
					hyperion_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					ipfs_url = 'http://127.0.0.1:5001'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[skynet.user]
 | 
				
			||||||
 | 
					account = 'testuser'
 | 
				
			||||||
 | 
					permission = 'active'
 | 
				
			||||||
 | 
					key = '5Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 | 
				
			||||||
 | 
					node_url = 'https://testnet.skygpu.net'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ def skynet(*args, **kwargs):
 | 
				
			||||||
def txt2img(*args, **kwargs):
 | 
					def txt2img(*args, **kwargs):
 | 
				
			||||||
    from . import utils
 | 
					    from . import utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_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)
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ def txt2img(*args, **kwargs):
 | 
				
			||||||
@click.option('--seed', '-S', default=None)
 | 
					@click.option('--seed', '-S', default=None)
 | 
				
			||||||
def img2img(model, prompt, input, output, strength, guidance, steps, seed):
 | 
					def img2img(model, prompt, input, output, strength, guidance, steps, seed):
 | 
				
			||||||
    from . import utils
 | 
					    from . import utils
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_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)
 | 
				
			||||||
| 
						 | 
					@ -81,7 +81,7 @@ def upscale(input, output, model):
 | 
				
			||||||
@skynet.command()
 | 
					@skynet.command()
 | 
				
			||||||
def download():
 | 
					def download():
 | 
				
			||||||
    from . import utils
 | 
					    from . import utils
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_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)
 | 
				
			||||||
| 
						 | 
					@ -110,7 +110,7 @@ def enqueue(
 | 
				
			||||||
    import trio
 | 
					    import trio
 | 
				
			||||||
    from leap.cleos import CLEOS
 | 
					    from leap.cleos import CLEOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    key = load_key(config, 'skynet.user', 'key')
 | 
					    key = load_key(config, 'skynet.user', 'key')
 | 
				
			||||||
    account = load_key(config, 'skynet.user', 'account')
 | 
					    account = load_key(config, 'skynet.user', 'account')
 | 
				
			||||||
| 
						 | 
					@ -155,7 +155,7 @@ def clean(
 | 
				
			||||||
    import trio
 | 
					    import trio
 | 
				
			||||||
    from leap.cleos import CLEOS
 | 
					    from leap.cleos import CLEOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
    key = load_key(config, 'skynet.user', 'key')
 | 
					    key = load_key(config, 'skynet.user', 'key')
 | 
				
			||||||
    account = load_key(config, 'skynet.user', 'account')
 | 
					    account = load_key(config, 'skynet.user', 'account')
 | 
				
			||||||
    permission = load_key(config, 'skynet.user', 'permission')
 | 
					    permission = load_key(config, 'skynet.user', 'permission')
 | 
				
			||||||
| 
						 | 
					@ -176,7 +176,7 @@ def clean(
 | 
				
			||||||
@skynet.command()
 | 
					@skynet.command()
 | 
				
			||||||
def queue():
 | 
					def queue():
 | 
				
			||||||
    import requests
 | 
					    import requests
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
    node_url = load_key(config, 'skynet.user', 'node_url')
 | 
					    node_url = load_key(config, 'skynet.user', 'node_url')
 | 
				
			||||||
    resp = requests.post(
 | 
					    resp = requests.post(
 | 
				
			||||||
        f'{node_url}/v1/chain/get_table_rows',
 | 
					        f'{node_url}/v1/chain/get_table_rows',
 | 
				
			||||||
| 
						 | 
					@ -193,7 +193,7 @@ def queue():
 | 
				
			||||||
@click.argument('request-id')
 | 
					@click.argument('request-id')
 | 
				
			||||||
def status(request_id: int):
 | 
					def status(request_id: int):
 | 
				
			||||||
    import requests
 | 
					    import requests
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
    node_url = load_key(config, 'skynet.user', 'node_url')
 | 
					    node_url = load_key(config, 'skynet.user', 'node_url')
 | 
				
			||||||
    resp = requests.post(
 | 
					    resp = requests.post(
 | 
				
			||||||
        f'{node_url}/v1/chain/get_table_rows',
 | 
					        f'{node_url}/v1/chain/get_table_rows',
 | 
				
			||||||
| 
						 | 
					@ -212,7 +212,7 @@ def dequeue(request_id: int):
 | 
				
			||||||
    import trio
 | 
					    import trio
 | 
				
			||||||
    from leap.cleos import CLEOS
 | 
					    from leap.cleos import CLEOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
    key = load_key(config, 'skynet.user', 'key')
 | 
					    key = load_key(config, 'skynet.user', 'key')
 | 
				
			||||||
    account = load_key(config, 'skynet.user', 'account')
 | 
					    account = load_key(config, 'skynet.user', 'account')
 | 
				
			||||||
    permission = load_key(config, 'skynet.user', 'permission')
 | 
					    permission = load_key(config, 'skynet.user', 'permission')
 | 
				
			||||||
| 
						 | 
					@ -246,7 +246,7 @@ def config(
 | 
				
			||||||
    import trio
 | 
					    import trio
 | 
				
			||||||
    from leap.cleos import CLEOS
 | 
					    from leap.cleos import CLEOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    key = load_key(config, 'skynet.user', 'key')
 | 
					    key = load_key(config, 'skynet.user', 'key')
 | 
				
			||||||
    account = load_key(config, 'skynet.user', 'account')
 | 
					    account = load_key(config, 'skynet.user', 'account')
 | 
				
			||||||
| 
						 | 
					@ -275,7 +275,7 @@ def deposit(quantity: str):
 | 
				
			||||||
    import trio
 | 
					    import trio
 | 
				
			||||||
    from leap.cleos import CLEOS
 | 
					    from leap.cleos import CLEOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    key = load_key(config, 'skynet.user', 'key')
 | 
					    key = load_key(config, 'skynet.user', 'key')
 | 
				
			||||||
    account = load_key(config, 'skynet.user', 'account')
 | 
					    account = load_key(config, 'skynet.user', 'account')
 | 
				
			||||||
| 
						 | 
					@ -324,7 +324,7 @@ def nodeos():
 | 
				
			||||||
@run.command()
 | 
					@run.command()
 | 
				
			||||||
@click.option('--loglevel', '-l', default='INFO', help='Logging level')
 | 
					@click.option('--loglevel', '-l', default='INFO', help='Logging level')
 | 
				
			||||||
@click.option(
 | 
					@click.option(
 | 
				
			||||||
    '--config-path', '-c', default='skynet.ini')
 | 
					    '--config-path', '-c', default=DEFAULT_CONFIG_PATH)
 | 
				
			||||||
def dgpu(
 | 
					def dgpu(
 | 
				
			||||||
    loglevel: str,
 | 
					    loglevel: str,
 | 
				
			||||||
    config_path: str
 | 
					    config_path: str
 | 
				
			||||||
| 
						 | 
					@ -334,17 +334,15 @@ def dgpu(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logging.basicConfig(level=loglevel)
 | 
					    logging.basicConfig(level=loglevel)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, non_compete = load_skynet_ini(file_path=config_path)
 | 
					    config = load_skynet_toml(file_path=config_path)
 | 
				
			||||||
    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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert 'skynet.dgpu' in config
 | 
					    assert 'skynet' in config
 | 
				
			||||||
 | 
					    assert 'dgpu' in config['skynet']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config = dict(config['skynet.dgpu'])
 | 
					    trio.run(open_dgpu_node, config['skynet']['dgpu'])
 | 
				
			||||||
    config['non_compete'] = non_compete
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    trio.run(open_dgpu_node, config)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@run.command()
 | 
					@run.command()
 | 
				
			||||||
| 
						 | 
					@ -366,7 +364,7 @@ def telegram(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logging.basicConfig(level=loglevel)
 | 
					    logging.basicConfig(level=loglevel)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
    tg_token = load_key(config, 'skynet.telegram', 'tg_token')
 | 
					    tg_token = load_key(config, 'skynet.telegram', 'tg_token')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    key = load_key(config, 'skynet.telegram', 'key')
 | 
					    key = load_key(config, 'skynet.telegram', 'key')
 | 
				
			||||||
| 
						 | 
					@ -422,7 +420,7 @@ def discord(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logging.basicConfig(level=loglevel)
 | 
					    logging.basicConfig(level=loglevel)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
    dc_token = load_key(config, 'skynet.discord', 'dc_token')
 | 
					    dc_token = load_key(config, 'skynet.discord', 'dc_token')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    key = load_key(config, 'skynet.discord', 'key')
 | 
					    key = load_key(config, 'skynet.discord', 'key')
 | 
				
			||||||
| 
						 | 
					@ -472,7 +470,7 @@ def pinner(loglevel):
 | 
				
			||||||
    from .ipfs import AsyncIPFSHTTP
 | 
					    from .ipfs import AsyncIPFSHTTP
 | 
				
			||||||
    from .ipfs.pinner import SkynetPinner
 | 
					    from .ipfs.pinner import SkynetPinner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config, _ = load_skynet_ini()
 | 
					    config = load_skynet_toml()
 | 
				
			||||||
    hyperion_url = load_key(config, 'skynet.pinner', 'hyperion_url')
 | 
					    hyperion_url = load_key(config, 'skynet.pinner', 'hyperion_url')
 | 
				
			||||||
    ipfs_url = load_key(config, 'skynet.pinner', 'ipfs_url')
 | 
					    ipfs_url = load_key(config, 'skynet.pinner', 'ipfs_url')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,9 @@
 | 
				
			||||||
#!/usr/bin/python
 | 
					#!/usr/bin/python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
 | 
					import toml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
from configparser import ConfigParser
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .constants import DEFAULT_CONFIG_PATH
 | 
					from .constants import DEFAULT_CONFIG_PATH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,34 +12,23 @@ class ConfigParsingError(BaseException):
 | 
				
			||||||
    ...
 | 
					    ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def load_skynet_ini(
 | 
					def load_skynet_toml(file_path=DEFAULT_CONFIG_PATH) -> dict:
 | 
				
			||||||
    file_path=DEFAULT_CONFIG_PATH
 | 
					    config = toml.load(file_path)
 | 
				
			||||||
) -> ConfigParser:
 | 
					    return config
 | 
				
			||||||
    config = ConfigParser()
 | 
					 | 
				
			||||||
    config.read(file_path)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    non_compete = []
 | 
					 | 
				
			||||||
    if Path('.non-compete').is_file():
 | 
					 | 
				
			||||||
        with open('.non-compete', 'r') as non_compete_file:
 | 
					 | 
				
			||||||
            for line in non_compete_file.readlines():
 | 
					 | 
				
			||||||
                line = line.rstrip()
 | 
					 | 
				
			||||||
                if line:
 | 
					 | 
				
			||||||
                    non_compete.append(line)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return config, non_compete
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def load_key(config: ConfigParser, section: str, key: str) -> str:
 | 
					def load_key(config: dict, key: str) -> str:
 | 
				
			||||||
    if section not in config:
 | 
					    for skey in key.split('.'):
 | 
				
			||||||
        conf_sections = [s for s in config]
 | 
					        if skey not in config:
 | 
				
			||||||
        raise ConfigParsingError(f'section \"{section}\" not in {conf_sections}')
 | 
					            conf_keys = [k for k in config]
 | 
				
			||||||
 | 
					            raise ConfigParsingError(f'key \"{skey}\" not in {conf_keys}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key not in config[section]:
 | 
					        config = config[skey]
 | 
				
			||||||
        conf_keys = [k for k in config[section]]
 | 
					
 | 
				
			||||||
        raise ConfigParsingError(f'key \"{key}\" not in {conf_keys}')
 | 
					    return config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return str(config[section][key])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def set_hf_vars(hf_token: str, hf_home: str):
 | 
					def set_hf_vars(hf_token: str, hf_home: str):
 | 
				
			||||||
    os.environ['HF_TOKEN'] = hf_token
 | 
					    os.environ['HF_TOKEN'] = hf_token
 | 
				
			||||||
    os.environ['HF_HOME'] = hf_home
 | 
					    os.environ['HF_HOME'] = hf_home
 | 
				
			||||||
 | 
					    os.environ['HUGGINGFACE_HUB_CACHE'] = hf_home
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,7 @@ DEFAULT_MODEL = list(MODELS.keys())[4]
 | 
				
			||||||
DEFAULT_ROLE = 'pleb'
 | 
					DEFAULT_ROLE = 'pleb'
 | 
				
			||||||
DEFAULT_UPSCALER = None
 | 
					DEFAULT_UPSCALER = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_CONFIG_PATH = 'skynet.ini'
 | 
					DEFAULT_CONFIG_PATH = 'skynet.toml'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_INITAL_MODELS = [
 | 
					DEFAULT_INITAL_MODELS = [
 | 
				
			||||||
    'stabilityai/stable-diffusion-xl-base-1.0'
 | 
					    'stabilityai/stable-diffusion-xl-base-1.0'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,6 +54,10 @@ class SkynetMM:
 | 
				
			||||||
            if 'initial_models' in config else DEFAULT_INITAL_MODELS
 | 
					            if 'initial_models' in config else DEFAULT_INITAL_MODELS
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.cache_dir = None
 | 
				
			||||||
 | 
					        if 'hf_home' in config:
 | 
				
			||||||
 | 
					            self.cache_dir = config['hf_home']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._models = {}
 | 
					        self._models = {}
 | 
				
			||||||
        for model in self.initial_models:
 | 
					        for model in self.initial_models:
 | 
				
			||||||
            self.load_model(model, False, force=True)
 | 
					            self.load_model(model, False, force=True)
 | 
				
			||||||
| 
						 | 
					@ -78,7 +82,9 @@ class SkynetMM:
 | 
				
			||||||
    ):
 | 
					    ):
 | 
				
			||||||
        logging.info(f'loading model {model_name}...')
 | 
					        logging.info(f'loading model {model_name}...')
 | 
				
			||||||
        if force or len(self._models.keys()) == 0:
 | 
					        if force or len(self._models.keys()) == 0:
 | 
				
			||||||
            pipe = pipeline_for(model_name, image=image)
 | 
					            pipe = pipeline_for(
 | 
				
			||||||
 | 
					                model_name, image=image, cache_dir=self.cache_dir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self._models[model_name] = {
 | 
					            self._models[model_name] = {
 | 
				
			||||||
                'pipe': pipe,
 | 
					                'pipe': pipe,
 | 
				
			||||||
                'generated': 0,
 | 
					                'generated': 0,
 | 
				
			||||||
| 
						 | 
					@ -100,7 +106,8 @@ class SkynetMM:
 | 
				
			||||||
            gc.collect()
 | 
					            gc.collect()
 | 
				
			||||||
            torch.cuda.empty_cache()
 | 
					            torch.cuda.empty_cache()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            pipe = pipeline_for(model_name, image=image)
 | 
					            pipe = pipeline_for(
 | 
				
			||||||
 | 
					                model_name, image=image, cache_dir=self.cache_dir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self._models[model_name] = {
 | 
					            self._models[model_name] = {
 | 
				
			||||||
                'pipe': pipe,
 | 
					                'pipe': pipe,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,13 @@ def convert_from_bytes_and_crop(raw: bytes, max_w: int, max_h: int) -> Image:
 | 
				
			||||||
    return image.convert('RGB')
 | 
					    return image.convert('RGB')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def pipeline_for(model: str, mem_fraction: float = 1.0, image=False) -> DiffusionPipeline:
 | 
					def pipeline_for(
 | 
				
			||||||
 | 
					    model: str,
 | 
				
			||||||
 | 
					    mem_fraction: float = 1.0,
 | 
				
			||||||
 | 
					    image: bool = False,
 | 
				
			||||||
 | 
					    cache_dir: str | None = None
 | 
				
			||||||
 | 
					) -> DiffusionPipeline:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert torch.cuda.is_available()
 | 
					    assert torch.cuda.is_available()
 | 
				
			||||||
    torch.cuda.empty_cache()
 | 
					    torch.cuda.empty_cache()
 | 
				
			||||||
    torch.cuda.set_per_process_memory_fraction(mem_fraction)
 | 
					    torch.cuda.set_per_process_memory_fraction(mem_fraction)
 | 
				
			||||||
| 
						 | 
					@ -90,7 +96,8 @@ def pipeline_for(model: str, mem_fraction: float = 1.0, image=False) -> Diffusio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    params = {
 | 
					    params = {
 | 
				
			||||||
        'torch_dtype': torch.float16,
 | 
					        'torch_dtype': torch.float16,
 | 
				
			||||||
        'safety_checker': None
 | 
					        'safety_checker': None,
 | 
				
			||||||
 | 
					        'cache_dir': cache_dir
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if shortname == 'stable':
 | 
					    if shortname == 'stable':
 | 
				
			||||||
| 
						 | 
					@ -107,6 +114,7 @@ def pipeline_for(model: str, mem_fraction: float = 1.0, image=False) -> Diffusio
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            pipe_class = StableDiffusionPipeline
 | 
					            pipe_class = StableDiffusionPipeline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    breakpoint()
 | 
				
			||||||
    pipe = pipe_class.from_pretrained(
 | 
					    pipe = pipe_class.from_pretrained(
 | 
				
			||||||
        model, **params)
 | 
					        model, **params)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue