fast-stable-diffusion
fast-stable-diffusion copied to clipboard
Feat: Support both Google Colab and Paperspace Gradient notebook architectures
Goal
Paperspace offers a public notebook with free GPUs that for some users prefer to use instead of Google's Colab product. This PR adds notebook compatibility for both Google Colab and Gradient. Gradient has a few differences including persistent storage that does not require Google Drive and a slightly different storage model that supports multiple files and subdirectories.
Major Changes:
- refactor hardcoded Google Drive and
/content
directories as configurable{persistent_storage_dir}
,{working_notebook_dir}
, and{packages_dir}
- check for if
IN_PAPERSPACE
as opposed to in Colab to set up
Test Plan:
- [ ] confirm works in Google Colab
- [ ] confirm works in Paperspace Gradient
- [ ] test all configurations
@TheLastBen Thanks for all your work in this repo! I was trying to get this to work as a notebook in Paperspace and figured it might be more useful upstreamed. Let me know if this approach of making the directories more modular is an abstraction that you would support.
It's great to see Paperspace engaged in bringing great Colabs from the community to Paperspace. Great work!
@dte Hi, contact me on discord : TheLastBen#0087
PLEASE YES!!!!
Here's some repos that might help:
- stable-diffusion-paperspace
-
universal-fast-stable-diffusion
- Warning: I haven't updated this in a long time, but you should be able to use the basic things (working_dir and site_packages)
webui
import os, time
from IPython.display import display, clear_output
from subprocess import getoutput
import ipywidgets as widgets
from ipywidgets import Layout
from ipywidgets import GridspecLayout
passdesks = True
passlexss = True
lvs = int(widgets.__version__[:1])
if lvs==8:
passdesks = False
commands_regex = getoutput('pip list | grep regex')# if "regex" in v_diffusers:
if "regex" in commands_regex:
passlexss = False
if passdesks and passlexss:
!pip install regex
!pip install --upgrade ipywidgets
clear_output(wait=False)
print (' \033[0;36m\033[1mipywidgets established\033[0m')
time.sleep(0.5)
os._exit(00)
else:
import regex
enable = {'button_color': '#3d85c6', 'text_color': '#033932'}
emdown = {'button_color': '#008081', 'text_color': '#053c3c'}
#ifoCOMifoCOMifoCOMifoCOMifoCOM
opens = '<p style="text-align:center;"><span style="color:#25323b;font-family:"Courier New", Courier, monospace;"><strong>'
cloug = '</strong></span></p>'
migse = {'background': '#a3b8c8'}
nunlfs = widgets.HTML(value=opens+'git-lfs'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nunxformers = widgets.HTML(value=opens+'xformers'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nundiffusers = widgets.HTML(value=opens+'diffusers'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nunfastapi = widgets.HTML(value=opens+'fastapi 0.90.1'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nunautomatic = widgets.HTML(value=opens+'automatic'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nuncontrolnet = widgets.HTML(value=opens+'controlnet'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
onoffcolos = ["solid arrow-down","solid rotate-right","solid check"]
onoffcolosS = [enable, emdown]
onoffcolosD = [False, True]
nunlfsU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nunxformersU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nundiffusersU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nunfastapiU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nunautomaticU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nuncontrolnetU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
ifoCOM = GridspecLayout(2,6,width='500px',height='auto')
ifoCOM[0, 0] = nunlfs
ifoCOM[0, 1] = nunlfsU
ifoCOM[1, 0] = nunxformers
ifoCOM[1, 1] = nunxformersU
ifoCOM[0, 2] = nundiffusers
ifoCOM[0, 3] = nundiffusersU
ifoCOM[1, 2] = nunfastapi
ifoCOM[1, 3] = nunfastapiU
ifoCOM[0, 4] = nunautomatic
ifoCOM[0, 5] = nunautomaticU
ifoCOM[1, 4] = nuncontrolnet
ifoCOM[1, 5] = nuncontrolnetU
def upload_ifoCOM ():
upload_ifoCOM_lfs = False
upload_ifoCOM_xfo = False
upload_ifoCOM_diffusers = False
upload_ifoCOM_ivs = False
upload_ifoCOM_wui = False
upload_ifoCOM_col = False
commands_lfs = getoutput('git lfs install')
if "Git LFS initialized" in commands_lfs:
upload_ifoCOM_lfs = True
commands_xfo = getoutput('python -m xformers.info')
if not "Error while finding module specification" in commands_xfo:
upload_ifoCOM_xfo = True
commands_diffusers = getoutput('pip list | grep diffusers')
if "diffusers" in commands_diffusers:
upload_ifoCOM_diffusers = True
try:
import fastapi
ivs = str(fastapi.__version__)
except:
ivs = str("except")
if ivs == '0.90.1':
upload_ifoCOM_ivs = True
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui'):
upload_ifoCOM_wui = True
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/extensions/sd-webui-controlnet'):
upload_ifoCOM_col = True
if not upload_ifoCOM_lfs:
nunlfsU.disabled=onoffcolosD[0]; nunlfsU.icon=onoffcolos[0]; nunlfsU.style=onoffcolosS[0]
else:
nunlfsU.disabled=onoffcolosD[1]; nunlfsU.icon=onoffcolos[2]; nunlfsU.style=onoffcolosS[1]
if not upload_ifoCOM_xfo:
nunxformersU.disabled=onoffcolosD[0]; nunxformersU.icon=onoffcolos[0]; nunxformersU.style=onoffcolosS[0]
else:
nunxformersU.disabled=onoffcolosD[1]; nunxformersU.icon=onoffcolos[2]; nunxformersU.style=onoffcolosS[1]
if not upload_ifoCOM_diffusers:
nundiffusersU.disabled=onoffcolosD[0]; nundiffusersU.icon=onoffcolos[0]; nundiffusersU.style=onoffcolosS[0]
else:
nundiffusersU.disabled=onoffcolosD[1]; nundiffusersU.icon=onoffcolos[2]; nundiffusersU.style=onoffcolosS[1]
if not upload_ifoCOM_ivs:
nunfastapiU.disabled=onoffcolosD[0]; nunfastapiU.icon=onoffcolos[0]; nunfastapiU.style=onoffcolosS[0]
else:
nunfastapiU.disabled=onoffcolosD[1]; nunfastapiU.icon=onoffcolos[2]; nunfastapiU.style=onoffcolosS[1]
if not upload_ifoCOM_wui:
nunautomaticU.disabled=onoffcolosD[0]; nunautomaticU.icon=onoffcolos[0]; nunautomaticU.style=onoffcolosS[0]
else:
nunautomaticU.disabled=onoffcolosD[0]; nunautomaticU.icon=onoffcolos[1]; nunautomaticU.style=onoffcolosS[0]
if not upload_ifoCOM_col:
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui'):
nuncontrolnetU.disabled=onoffcolosD[0]
else:
nuncontrolnetU.disabled=onoffcolosD[1]
nuncontrolnetU.icon=onoffcolos[0]; nuncontrolnetU.style=onoffcolosS[0]
else:
nuncontrolnetU.disabled=onoffcolosD[1]; nuncontrolnetU.icon=onoffcolos[2]; nuncontrolnetU.style=onoffcolosS[1]
upload_ifoCOM ()
#ifoCOMifoCOMifoCOMifoCOMifoCOM
#widCOMwidCOMwidCOMwidCOMwidCOM
ckptsize =[]
widV15 = widgets.Button(description='V15',disabled=False,button_style='',tooltip='',layout=Layout(width="50px",height="28px"),style = enable)
widV21 = widgets.Button(description='V21',disabled=False,button_style='',tooltip='',layout=Layout(width="50px",height="28px"),style = enable)
widDSS = widgets.Button(description='DSS',disabled=True,button_style='',tooltip='',layout=Layout(width="50px",height="28px"),style = emdown)
widSELES = widgets.Select(options=ckptsize,disabled=False,layout=Layout(width="358px",height="95px"))
emgNUN = widgets.Button(description='WUI',disabled=False,button_style='',tooltip='',layout=Layout(width="80px",height="auto"),style = enable)
widCOM = GridspecLayout(3,3,width='500px',height='100px')
widCOM[0, 0] = widV15
widCOM[1, 0] = widV21
widCOM[2, 0] = widDSS
widCOM[:, 1] = widSELES
widCOM[:, 2] = emgNUN
def upload_widCOM ():
global ckptsize
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui'):
emgNUN.disabled=False
else:
emgNUN.disabled=True
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V15.ckpt'):
widV15.disabled=True;widV15.style=emdown;
else:
widV15.disabled=False;widV15.style=enable;
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V21.ckpt'):
widV21.disabled=True;widV21.style=emdown;
else:
widV21.disabled=False;widV21.style=enable;
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/DSS.ckpt'):
widDSS.disabled=True;widDSS.style=emdown;
else:
widDSS.disabled=False;widDSS.style=enable;
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/'):
ckptsize = []
for e in os.listdir("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/"):
name, ext = os.path.splitext(e)
if ext == '.ckpt':
ckptsize.append(name)
widSELES.options=ckptsize
upload_widCOM ()
#widCOMwidCOMwidCOMwidCOMwidCOM
#sizCOMsizCOMsizCOMsizCOMsizCOM
SZ = widgets.IntProgress(min=0,max=102400,
bar_style='',
style={'bar_color': '#3d85c6', 'description_width': 'initial'},
layout=Layout(width="315px",height="28px"),
orientation='horizontal'
)
sizesU = widgets.Button(disabled=False,button_style='',tooltip='',icon="solid rotate-right",layout=Layout(width="80px",height="28px"),style = enable)
sizesD = widgets.Button(disabled=False,button_style='',tooltip='',icon="sharp solid trash",layout=Layout(width="80px",height="28px"),style = enable)
sizCOM = GridspecLayout(1,3,width='500px',height='auto')
sizCOM[0, 0] = sizesD
sizCOM[0, 1] = sizesU
sizCOM[0, 2] = SZ
def upload_sizCOM ():
getpt = str(os.path.abspath(os.getcwd()))
os.chdir('/')
comsiz = str(getoutput('du -s')).split("\n")
outsiz = int(int(regex.findall("\d+", comsiz[len(comsiz)-1])[0])/1024)
os.chdir(getpt)
SZ.value=outsiz
upload_sizCOM ()
#sizCOMsizCOMsizCOMsizCOMsizCOM
allsizezCOMPIL = GridspecLayout(3,1,width='auto',height='233px')
allsizezCOMPIL[0, 0] = ifoCOM
allsizezCOMPIL[1, 0] = widCOM
allsizezCOMPIL[2, 0] = sizCOM
#bittenfigitten
#downline
def lisau():
getpt = str(os.path.abspath(os.getcwd()))
os.chdir('/home/jovyan')
!find -name '.ipynb_checkpoints' -exec rm -rf {} \;
os.chdir(getpt)
if os.path.exists("/home/jovyan/.local/share/Trash/files"):
!rm -rf /home/jovyan/.local/share/Trash/files
def sizesD_function(aug):
lisau()
upload_sizCOM()
def sizesU_function(aug):
upload_sizCOM()
sizesU.on_click(sizesD_function)
sizesD.on_click(sizesD_function)
#downline
#hensline
intes = [nunlfsU,nunxformersU,nundiffusersU,nunfastapiU,nunautomaticU,nuncontrolnetU,widV15,widV21,widDSS,emgNUN,sizesD,sizesU]
poses = [False,False,False,False,False,False,False,False,False,False,False,False]
def setup_loads():
global poses
for i in range(len(poses)):
poses[i]=intes[i].disabled
for i in range(len(poses)):
intes[i].disabled=True
def exele_loads():
for i in range(len(poses)):
intes[i].disabled=poses[i]
def nunlfsU_function(aug):
setup_loads()
with light_output:
clear_output()
!curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
!sudo apt-get install git-lfs
upload_sizCOM ()
with light_output:
clear_output()
exele_loads ()
upload_ifoCOM ()
def nunxformersU_function(aug):
setup_loads()
with light_output:
# clear_output()
# !mamba install -q -c nvidia cuda-nvcc=11.7 python=3.9.13 --yes
# clear_output()
# !mamba install -q -c nvidia -c pytorch pytorch-cuda=11.7 python=3.9.13 --yes
# clear_output()
# !mamba install -q -c fastai python=3.9.13 fastai=2.7.11 --yes
# clear_output()
# !mamba install -q -c conda-forge python=3.9.13 huggingface_hub=0.12.1 --yes
# clear_output()
# !mamba install -q -c nvidia -c pytorch -c 'xformers/label/dev' python=3.9.13 pytorch=1.13.1 xformers --yes
# clear_output()
# !pip install --upgrade triton==2.0.0a2
clear_output()
!mamba install -q -c nvidia cuda-nvcc=11.7 python=3.9.13 --yes
clear_output()
!mamba install -q -c conda-forge python=3.9.13 transformers --yes
clear_output()
!mamba install -q -c nvidia -c pytorch -c 'xformers/label/dev' python=3.9.13 xformers --yes
clear_output()
!pip install --upgrade triton==2.0.0a2
clear_output()
!pip install --upgrade transformers==4.25.1
upload_sizCOM ()
with light_output:
clear_output()
qwe = getoutput('nvidia-smi')
nvc = getoutput('nvcc --version')
if not 'nvcc: not found' in nvc:
asd = nvc
else:
asd = ''
xfo = getoutput('python -m xformers.info')
if not 'Error while finding module specification' in xfo:
zxc = xfo
else:
zxc = ''
print('\033[0;36m\033[1m',"\n",qwe,"\n\n",asd,"\n\n",zxc,'\033[0m')
exele_loads ()
upload_ifoCOM ()
def nundiffusersU_function(aug):
setup_loads()
with light_output:
clear_output()
!pip install accelerate
clear_output()
!pip install git+https://github.com/huggingface/diffusers
clear_output()
upload_sizCOM ()
# with light_output:
# !pip install transformers==4.25.1
# clear_output()
exele_loads ()
upload_ifoCOM ()
def nunfastapiU_function(aug):
setup_loads()
with light_output:
clear_output()
upload_sizCOM ()
with light_output:
!pip install --upgrade fastapi==0.90.1
clear_output()
exele_loads ()
upload_ifoCOM ()
def nunautomaticU_function(aug):
setup_loads()
with light_output:
clear_output()
if not os.path.exists("/home/jovyan/workspace/stable-diffusion-webui"):
os.chdir('/home/jovyan/workspace/')
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui stable-diffusion-webui
else:
os.chdir('/home/jovyan/workspace/stable-diffusion-webui')
!git pull
upload_sizCOM ()
with light_output:
clear_output()
exele_loads ()
upload_ifoCOM ()
def nuncontrolnetU_function(aug):
setup_loads()
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/stable-diffusion-webui/extensions')
!git clone https://github.com/Mikubill/sd-webui-controlnet.git
from torch.hub import download_url_to_file
from urllib.parse import urlparse
mdldir="/home/jovyan/workspace/stable-diffusion-webui/extensions/sd-webui-controlnet/models"
os.chdir('/home/jovyan/workspace/')
!wget -q -O CN_models.txt https://github.com/TheLastBen/fast-stable-diffusion/raw/main/AUTOMATIC1111_files/CN_models.txt
with open("CN_models.txt", 'r') as f:
mdllnk = f.read().splitlines()
for lnk in mdllnk:
clear_output()
download_url_to_file(lnk, os.path.abspath(os.path.join(mdldir, os.path.basename(urlparse(lnk).path))), hash_prefix=None, progress=True)
!rm CN_models.txt
upload_sizCOM ()
with light_output:
clear_output()
exele_loads ()
upload_ifoCOM ()
nunlfsU.on_click(nunlfsU_function)
nunxformersU.on_click(nunxformersU_function)
nundiffusersU.on_click(nundiffusersU_function)
nunfastapiU.on_click(nunfastapiU_function)
nunautomaticU.on_click(nunautomaticU_function)
nuncontrolnetU.on_click(nuncontrolnetU_function)
#hensline
#midasline
def widV15_function(aug):
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/')
!mkdir "/home/jovyan/workspace/tmp"
os.chdir('/home/jovyan/workspace/tmp')
!git init
!git lfs install --system --skip-repo
!git clone --depth 1 --branch fp16 "https://huggingface.co/runwayml/stable-diffusion-v1-5"
!rm -rf /home/jovyan/workspace/tmp/.git
lisau()
with light_output:
os.chdir('/home/jovyan/workspace/tmp')
if os.path.exists('/home/jovyan/workspace/tmp/stable-diffusion-v1-5/unet/diffusion_pytorch_model.bin'):
!wget -q -O stable-diffusion-v1-5/vae/diffusion_pytorch_model.bin https://huggingface.co/stabilityai/sd-vae-ft-mse/resolve/main/diffusion_pytorch_model.bin
!wget -O convertosd.py https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dreambooth/convertosd.py
!sed -i '201s@.*@ model_path = "/home/jovyan/workspace/tmp/stable-diffusion-v1-5"@' /home/jovyan/workspace/tmp/convertosd.py
!sed -i '202s@.*@ checkpoint_path= "/home/jovyan/workspace/V15.ckpt"@' /home/jovyan/workspace/tmp/convertosd.py
!python /home/jovyan/workspace/tmp/convertosd.py
if os.path.exists("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion"):
!mv /home/jovyan/workspace/V15.ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V15.ckpt
widV15_function_out = "/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V15.ckpt"
else:
widV15_function_out = "/home/jovyan/workspace/V15.ckpt"
os.chdir('/home/jovyan/workspace/')
!rm -rf /home/jovyan/workspace/tmp
lisau()
with light_output:
upload_sizCOM()
upload_widCOM()
clear_output()
if os.path.exists(widV15_function_out):
print ('\033[0;36m\033[1m'+widV15_function_out+'\033[0m')
def widV21_function(aug):
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/')
!mkdir "/home/jovyan/workspace/tmp"
os.chdir('/home/jovyan/workspace/tmp')
!git init
!git lfs install --system --skip-repo
!git remote add -f origin "https://huggingface.co/stabilityai/stable-diffusion-2-1"
!git config core.sparsecheckout true
!echo -e "scheduler\ntext_encoder\ntokenizer\nunet\nvae\nfeature_extractor\nmodel_index.json\n!*.safetensors" > .git/info/sparse-checkout
!git pull origin fp16
!rm -rf /home/jovyan/workspace/tmp/.git
lisau()
with light_output:
os.chdir('/home/jovyan/workspace/')
!wget -O convertosdv2.py https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dreambooth/convertosdv2.py
!python /home/jovyan/workspace/convertosdv2.py --fp16 /home/jovyan/workspace/tmp /home/jovyan/workspace/V21.ckpt
if os.path.exists("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion"):
!mv /home/jovyan/workspace/V21.ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V21.ckpt
widV21_function_out = "/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V21.ckpt"
else:
widV21_function_out = "/home/jovyan/workspace/V21.ckpt"
!rm -rf /home/jovyan/workspace/tmp
!rm -rf /home/jovyan/workspace/convertosdv2.py
lisau()
with light_output:
upload_sizCOM()
upload_widCOM()
clear_output()
if os.path.exists(widV21_function_out):
print ('\033[0;36m\033[1m'+widV21_function_out+'\033[0m')
def widDSS_function(aug):
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/')
!mkdir "/home/jovyan/workspace/tmp"
os.chdir('/home/jovyan/workspace/tmp')
!git init
!git lfs install --system --skip-repo
!git clone "https://huggingface.co/dream-textures/texture-diffusion"
!rm -rf /home/jovyan/workspace/tmp/.git
lisau()
with light_output:
os.chdir('/home/jovyan/workspace/')
!wget -O convertosdv2.py https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dreambooth/convertosdv2.py
!python /home/jovyan/workspace/convertosdv2.py --fp16 /home/jovyan/workspace/tmp/texture-diffusion /home/jovyan/workspace/DSS.ckpt
if os.path.exists("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion"):
!mv /home/jovyan/workspace/DSS.ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/DSS.ckpt
widDSS_function_out = "/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/DSS.ckpt"
else:
widDSS_function_out = "/home/jovyan/workspace/DSS.ckpt"
!rm -rf /home/jovyan/workspace/tmp
!rm -rf /home/jovyan/workspace/convertosdv2.py
lisau()
with light_output:
upload_sizCOM()
upload_widCOM()
clear_output()
if os.path.exists(widDSS_function_out):
print ('\033[0;36m\033[1m'+widDSS_function_out+'\033[0m')
widV15.on_click(widV15_function)
widV21.on_click(widV21_function)
widDSS.on_click(widDSS_function)
def emgNUN_function(aug):
with light_output:
clear_output()
saind_widSELES = str(widSELES.value)
alpha = str('cd /home/jovyan/workspace/stable-diffusion-webui\nCOMMANDLINE_ARGS="--share --enable-insecure-extension-access --xformers --lowram ')
betas = str('" REQS_FILE="requirements.txt" python launch.py')
if saind_widSELES == 'None':
print ('\033[0;36m\033[1m'+alpha+betas+'\033[0m')
else:
modes = str('--ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/') + saind_widSELES + str('.ckpt')
print ('\033[0;36m\033[1m'+alpha+modes+betas+'\033[0m')
emgNUN.on_click(emgNUN_function)
#midasline
#bittenfigitten
light_output = widgets.Output()
display(allsizezCOMPIL,light_output)
dbooth
import os, time
import regex
from IPython.display import display, clear_output
from subprocess import getoutput
import random
import ipywidgets as widgets
from ipywidgets import Layout
from ipywidgets import GridspecLayout
os.chdir('/home/jovyan/workspace/')
AGfloats = False
try:
import accelerate
avs = str(accelerate.__version__)
except:
avs = str("except")
if avs == '0.12.0':
AGfloats = True
DIfloats = False
try:
import diffusers
jvs = str(diffusers.__version__)
except:
jvs = str("except")
if jvs == '0.9.0.dev0':
DIfloats = True
DB = '/home/jovyan/workspace/DB/'
SDfloats = '/home/jovyan/workspace/DB/diffusers/'
sd15f = "/home/jovyan/workspace/DB/value-v1-5/"
if not os.path.exists(DB):
os.makedirs(DB)
if not AGfloats:
!pip install -q --no-deps accelerate==0.12.0
if not os.path.exists(SDfloats):
os.chdir(DB)
!git clone --depth 1 --branch updt https://github.com/TheLastBen/diffusers
else:
os.chdir(SDfloats)
!git pull
if not DIfloats:
os.chdir('/home/jovyan/workspace/DB/diffusers/')
!pip install -e ".[torch]"
try:
import bitsandbytes
except:
!pip install -q --no-deps bitsandbytes
if not os.path.exists(sd15f):
os.makedirs(sd15f)
os.chdir(sd15f)
!git init
!git lfs install --system --skip-repo
!git remote add -f origin "https://huggingface.co/runwayml/stable-diffusion-v1-5"
!git config core.sparsecheckout true
!echo -e "scheduler\ntext_encoder\ntokenizer\nunet\nvae\n!vae/diffusion_pytorch_model.bin\n!*.safetensors" > .git/info/sparse-checkout
!git pull origin main
!wget -q -O vae/diffusion_pytorch_model.bin https://huggingface.co/stabilityai/sd-vae-ft-mse/resolve/main/diffusion_pytorch_model.bin
!rm -rf .git
!wget -q -O model_index.json https://raw.githubusercontent.com/TheLastBen/fast-stable-diffusion/main/Dreambooth/model_index.json
files = '/home/jovyan/workspace/DB/files/'
instancefiles = '/home/jovyan/workspace/DB/files/instancefiles/'
classfiles = '/home/jovyan/workspace/DB/files/classfiles/'
outputfiles = '/home/jovyan/workspace/DB/files/outputfiles/'
sesiontemp = '/home/jovyan/workspace/DB/files/sesiontemp/'
sesions = '/home/jovyan/workspace/DB/files/sesions/'
if not os.path.exists(files):
os.makedirs(files)
if not os.path.exists(instancefiles):
os.makedirs(instancefiles)
if not os.path.exists(classfiles):
os.makedirs(classfiles)
if not os.path.exists(outputfiles):
os.makedirs(outputfiles)
if not os.path.exists(sesiontemp):
os.makedirs(sesiontemp)
if not os.path.exists(sesions):
os.makedirs(sesions)
gendiffusion = GridspecLayout(1,6,width='1000px',height='auto')
opens = '<p style="text-align:center;"><span style="color:#25323b;font-family:"Courier New", Courier, monospace;"><strong>'
cloug = '</strong></span></p>'
migse = {'background': '#a3b8c8'}
enable = {'button_color': '#3d85c6', 'text_color': '#033932'}
emdown = {'button_color': '#008081', 'text_color': '#053c3c'}
onoffcolos = ["solid arrow-down","solid rotate-right","solid check"]
onoffcolosS = [enable, emdown]
onoffcolosD = [False, True]
labelssei = widgets.HTML(value=opens+'sesion'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
fieldsei = widgets.Text(value='',placeholder='Something',disabled=False,layout=Layout(width="330px",height="28px"))
gelsei = widgets.Button(disabled=False,button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
labelstok = widgets.HTML(value=opens+'token'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
fieldtok = widgets.Text(value='',placeholder='Something',disabled=False,layout=Layout(width="330px",height="28px"))
geltok = widgets.Button(disabled=False,button_style='',tooltip='',icon=onoffcolos[1],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
if fieldsei.value == '':
gelsei.icon=onoffcolos[0]
gelsei.style = onoffcolosS[0]
else:
gelsei.icon=onoffcolos[1]
gelsei.style = onoffcolosS[1]
if fieldsei.value == '':
geltok.style = onoffcolosS[0]
else:
geltok.style = onoffcolosS[1]
gendiffusion[0, 0] = labelssei
gendiffusion[0, 1] = fieldsei
gendiffusion[0, 2] = gelsei
gendiffusion[0, 3] = labelstok
gendiffusion[0, 4] = fieldtok
gendiffusion[0, 5] = geltok
inputSesion = '/home/jovyan/workspace/DB/value-v1-5/'
outputSesion = ''
inputInstanse = '/home/jovyan/workspace/DB/files/instancefiles/'
inputClassic = '/home/jovyan/workspace/DB/files/classfiles/'
outputInstanse = '/home/jovyan/workspace/DB/files/outputfiles/'
def gelsei_function(aug):
if not fieldsei.value == '':
global outputSesion
outputSesion = '/home/jovyan/workspace/DB/files/sesions/' + fieldsei.value
if not os.path.exists(outputSesion):
os.makedirs(outputSesion)
gelsei.icon=onoffcolos[1]
gelsei.style = onoffcolosS[1]
def geltok_function(aug):
filefields = str(open("/home/jovyan/workspace/SCD/simple.py", "r").read())
split = filefields.split("###")[1]
teg = split.split("@")
compil = int(random.randint(0,len(teg)-1))
fieldtok.value = str(teg[compil])
geltok.style = onoffcolosS[1]
gelsei.on_click(gelsei_function)
geltok.on_click(geltok_function)
display(gendiffusion)
opens3 = '<p style="text-align:right;"><span style="color:#25323b;font-family:"Courier New", Courier, monospace;"><strong>'
cloug3 = '</strong></span></p>'
gen2diffusion = GridspecLayout(13,2,width='1000px',height='auto')
l_Resume_Training = widgets.HTML(value=opens3+'Resume_Training '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Resume_Training = widgets.Checkbox(value=False,disabled=False,indent=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_UNet_Training_Steps = widgets.HTML(value=opens3+'UNet_Training_Steps '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_UNet_Training_Steps = widgets.IntText(value=1500,disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_UNet_Learning_Rate = widgets.HTML(value=opens3+'UNet_Learning_Rate '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_UNet_Learning_Rate = widgets.Dropdown(options=['1e-5', '8e-6', '5e-6', '3e-6', '2e-6', '1e-6']\
,value='1e-6',disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Text_Encoder_Training_Steps = widgets.HTML(value=opens3+'l_Text_Encoder_Training_Steps '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Text_Encoder_Training_Steps = widgets.IntText(value=0,disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Text_Encoder_Concept_Training_Steps = widgets.HTML(value=opens3+'l_Text_Encoder_Concept_Training_Steps '+cloug3,\
style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Text_Encoder_Concept_Training_Steps = widgets.IntText(value=0,disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Text_Encoder_Learning_Rate = widgets.HTML(value=opens3+'l_Text_Encoder_Learning_Rate '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Text_Encoder_Learning_Rate = widgets.Dropdown(options=['2e-6', '8e-8', '5e-8', '3e-8', '2e-8', '1e-8']\
,value='1e-8',disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Offset_Noise = widgets.HTML(value=opens3+'l_Offset_Noise '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Offset_Noise = widgets.Checkbox(value=False,disabled=False,indent=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_External_Captions = widgets.HTML(value=opens3+'l_External_Captions '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_External_Captions = widgets.Checkbox(value=False,disabled=False,indent=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Resolution = widgets.HTML(value=opens3+'l_Resolution '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Resolution = widgets.Dropdown(options=['1024', '512']\
,value='512',disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Save_Checkpoint_Every_n_Steps = widgets.HTML(value=opens3+'l_Save_Checkpoint_Every_n_Steps '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Save_Checkpoint_Every_n_Steps = widgets.Checkbox(value=False,disabled=False,indent=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Save_Checkpoint_Every = widgets.HTML(value=opens3+'l_Save_Checkpoint_Every '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Save_Checkpoint_Every = widgets.IntText(value=300,disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Start_saving_from_the_step = widgets.HTML(value=opens3+'l_Start_saving_from_the_step '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Start_saving_from_the_step = widgets.IntText(value=300,disabled=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
l_Disconnect_after_training = widgets.HTML(value=opens3+'l_Disconnect_after_training '+cloug3, style = migse ,layout=Layout(flex='1 1 0%', width="auto",height="28px"))
f_Disconnect_after_training = widgets.Checkbox(value=False,disabled=False,indent=False,layout=Layout(flex='1 1 0%', width='auto', height='28px'))
gen2diffusion[0, 0] = l_Resume_Training
gen2diffusion[0, 1] = f_Resume_Training
gen2diffusion[1, 0] = l_UNet_Training_Steps
gen2diffusion[1, 1] = f_UNet_Training_Steps
gen2diffusion[2, 0] = l_UNet_Learning_Rate
gen2diffusion[2, 1] = f_UNet_Learning_Rate
gen2diffusion[3, 0] = l_Text_Encoder_Training_Steps
gen2diffusion[3, 1] = f_Text_Encoder_Training_Steps
gen2diffusion[4, 0] = l_Text_Encoder_Concept_Training_Steps
gen2diffusion[4, 1] = f_Text_Encoder_Concept_Training_Steps
gen2diffusion[5, 0] = l_Text_Encoder_Learning_Rate
gen2diffusion[5, 1] = f_Text_Encoder_Learning_Rate
gen2diffusion[6, 0] = l_Offset_Noise
gen2diffusion[6, 1] = f_Offset_Noise
gen2diffusion[7, 0] = l_External_Captions
gen2diffusion[7, 1] = f_External_Captions
gen2diffusion[8, 0] = l_Resolution
gen2diffusion[8, 1] = f_Resolution
gen2diffusion[9, 0] = l_Save_Checkpoint_Every_n_Steps
gen2diffusion[9, 1] = f_Save_Checkpoint_Every_n_Steps
gen2diffusion[10, 0] = l_Save_Checkpoint_Every
gen2diffusion[10, 1] = f_Save_Checkpoint_Every
gen2diffusion[11, 0] = l_Start_saving_from_the_step
gen2diffusion[11, 1] = f_Start_saving_from_the_step
gen2diffusion[12, 0] = l_Disconnect_after_training
gen2diffusion[12, 1] = f_Disconnect_after_training
display(gen2diffusion)
INSTANCE_DIR = inputInstanse
CONCEPT_DIR = inputClassic
CAPTIONS_DIR = '/home/jovyan/workspace/DB/files/captionsfiles/'
if not os.path.exists(CAPTIONS_DIR):
os.makedirs(CAPTIONS_DIR)
Resume_Training = f_Resume_Training.value
OUTPUT_DIR = outputSesion
resume=False
if os.path.exists(OUTPUT_DIR+'/unet/diffusion_pytorch_model.bin'):
resume=True
if resume and not Resume_Training:
print('[1;31mOverwrite your previously trained model ? answering "yes" will train a new model, answering "no" will resume the training of the previous model? yes or no ?[0m')
while True:
ansres=input('')
if ansres=='no':
Resume_Training = True
break
elif ansres=='yes':
Resume_Training = False
resume= False
break
MODEL_NAME = inputSesion
while not Resume_Training and MODEL_NAME=="":
print('[1;31mNo model found, use the "Model Download" cell to download a model.')
time.sleep(5)
MODELT_NAME = MODEL_NAME
UNet_Training_Steps = int(f_UNet_Training_Steps.value)
UNet_Learning_Rate = float(f_UNet_Learning_Rate.value)
untlr=UNet_Learning_Rate
Text_Encoder_Training_Steps = int(f_Text_Encoder_Training_Steps.value)
Text_Encoder_Concept_Training_Steps = int(f_Text_Encoder_Concept_Training_Steps.value)
Text_Encoder_Learning_Rate = float(f_Text_Encoder_Learning_Rate.value)
txlr=Text_Encoder_Learning_Rate
trnonltxt=""
if UNet_Training_Steps==0:
trnonltxt="--train_only_text_encoder"
ofstnse=""
Offset_Noise = f_Offset_Noise.value
if Offset_Noise:
ofstnse="--offset_noise"
External_Captions = f_External_Captions.value
extrnlcptn=""
if External_Captions:
extrnlcptn="--external_captions"
Resolution = f_Resolution.value
Res=int(Resolution)
Seed=''
if Seed =='' or Seed=='0':
Seed=random.randint(1, 999999)
else:
Seed=int(Seed)
GC="--gradient_checkpointing"
fp16 = True
if fp16:
prec="fp16"
else:
prec="no"
precision=prec
s = getoutput('nvidia-smi')
if 'A100' in s:
GC=""
GCUNET=GC
if Res<=640:
GCUNET=""
resuming=""
if Resume_Training and os.path.exists(OUTPUT_DIR+'/unet/diffusion_pytorch_model.bin'):
MODELT_NAME=OUTPUT_DIR
print('[1;32mResuming Training...[0m')
resuming="Yes"
elif Resume_Training and not os.path.exists(OUTPUT_DIR+'/unet/diffusion_pytorch_model.bin'):
print('[1;31mPrevious model not found, training a new model...[0m')
MODELT_NAME=MODEL_NAME
while MODEL_NAME=="":
print('[1;31mNo model found, use the "Model Download" cell to download a model.')
time.sleep(5)
Enable_text_encoder_training= True
Enable_Text_Encoder_Concept_Training= True
if Text_Encoder_Training_Steps==0 :
Enable_text_encoder_training= False
else:
stptxt=Text_Encoder_Training_Steps
if Text_Encoder_Concept_Training_Steps==0:
Enable_Text_Encoder_Concept_Training= False
else:
stptxtc=Text_Encoder_Concept_Training_Steps
Save_Checkpoint_Every_n_Steps = f_Save_Checkpoint_Every_n_Steps.value
Save_Checkpoint_Every = int(f_Save_Checkpoint_Every.value)
if Save_Checkpoint_Every == None:
Save_Checkpoint_Every = 1
stp = 0
Start_saving_from_the_step = int(f_Start_saving_from_the_step.value)
if Start_saving_from_the_step == None:
Start_saving_from_the_step = 0
if (Start_saving_from_the_step < 200):
Start_saving_from_the_step = Save_Checkpoint_Every
stpsv = Start_saving_from_the_step
if Save_Checkpoint_Every_n_Steps:
stp = Save_Checkpoint_Every
Disconnect_after_training = f_Disconnect_after_training.value
PT=""
INSTANCE_NAME = fieldsei.value
Session_Name = INSTANCE_NAME
SESSION_DIR = OUTPUT_DIR
MDLPTH = str(OUTPUT_DIR+"/"+Session_Name+'.ckpt')
def dump_only_textenc(trnonltxt, MODELT_NAME, INSTANCE_DIR, OUTPUT_DIR, PT, Seed, precision, Training_Steps):
!accelerate launch /home/jovyan/workspace/DB/diffusers/examples/dreambooth/train_dreambooth.py \
$trnonltxt \
$extrnlcptn \
--image_captions_filename \
--train_text_encoder \
--dump_only_text_encoder \
--pretrained_model_name_or_path="$MODELT_NAME" \
--instance_data_dir="$INSTANCE_DIR" \
--output_dir="$OUTPUT_DIR" \
--instance_prompt="$PT" \
--seed=$Seed \
--resolution=512 \
--mixed_precision=$precision \
--train_batch_size=1 \
--gradient_accumulation_steps=1 $GC \
--use_8bit_adam \
--learning_rate=$txlr \
--lr_scheduler="linear" \
--lr_warmup_steps=0 \
--max_train_steps=$Training_Steps
def train_only_unet(stpsv, stp, SESSION_DIR, MODELT_NAME, INSTANCE_DIR, OUTPUT_DIR, PT, Seed, Res, precision, Training_Steps):
clear_output()
if resuming=="Yes":
print('[1;32mResuming Training...[0m')
print('[1;33mTraining the UNet...[0m')
!accelerate launch /home/jovyan/workspace/DB/diffusers/examples/dreambooth/train_dreambooth.py \
$extrnlcptn \
$ofstnse \
--image_captions_filename \
--train_only_unet \
--save_starting_step=$stpsv \
--save_n_steps=$stp \
--Session_dir=$SESSION_DIR \
--pretrained_model_name_or_path="$MODELT_NAME" \
--instance_data_dir="$INSTANCE_DIR" \
--output_dir="$OUTPUT_DIR" \
--captions_dir="$CAPTIONS_DIR" \
--instance_prompt="$PT" \
--seed=$Seed \
--resolution=$Res \
--mixed_precision=$precision \
--train_batch_size=1 \
--gradient_accumulation_steps=1 $GCUNET \
--use_8bit_adam \
--learning_rate=$untlr \
--lr_scheduler="linear" \
--lr_warmup_steps=0 \
--max_train_steps=$Training_Steps
if os.path.exists(INSTANCE_DIR+"/.ipynb_checkpoints"):
%rm -r $INSTANCE_DIR"/.ipynb_checkpoints"
if os.path.exists(CONCEPT_DIR+"/.ipynb_checkpoints"):
%rm -r $CONCEPT_DIR"/.ipynb_checkpoints"
if os.path.exists(CAPTIONS_DIR+"/.ipynb_checkpoints"):
%rm -r $CAPTIONS_DIR"/.ipynb_checkpoints"
os.chdir('/home/jovyan/workspace/DB/')
if Enable_text_encoder_training :
print('[1;33mTraining the text encoder...[0m')
if os.path.exists(OUTPUT_DIR+'/'+'text_encoder_trained'):
%rm -r $OUTPUT_DIR"/text_encoder_trained"
dump_only_textenc(trnonltxt, MODELT_NAME, INSTANCE_DIR, OUTPUT_DIR, PT, Seed, precision, Training_Steps=stptxt)
if Enable_Text_Encoder_Concept_Training:
if os.path.exists(CONCEPT_DIR):
if os.listdir(CONCEPT_DIR)!=[]:
clear_output()
if resuming=="Yes":
print('[1;32mResuming Training...[0m')
print('[1;33mTraining the text encoder on the concept...[0m')
dump_only_textenc(trnonltxt, MODELT_NAME, CONCEPT_DIR, OUTPUT_DIR, PT, Seed, precision, Training_Steps=stptxtc)
else:
clear_output()
if resuming=="Yes":
print('[1;32mResuming Training...[0m')
print('[1;31mNo concept images found, skipping concept training...')
Text_Encoder_Concept_Training_Steps=0
time.sleep(8)
else:
clear_output()
if resuming=="Yes":
print('[1;32mResuming Training...[0m')
print('[1;31mNo concept images found, skipping concept training...')
Text_Encoder_Concept_Training_Steps=0
time.sleep(8)
if UNet_Training_Steps!=0:
train_only_unet(stpsv, stp, SESSION_DIR, MODELT_NAME, INSTANCE_DIR, OUTPUT_DIR, PT, Seed, Res, precision, Training_Steps=UNet_Training_Steps)
if UNet_Training_Steps==0 and Text_Encoder_Concept_Training_Steps==0 and Text_Encoder_Training_Steps==0 :
print('[1;32mNothing to do')
else:
if os.path.exists(OUTPUT_DIR+'/unet/diffusion_pytorch_model.bin'):
prc="--fp16" if precision=="fp16" else ""
!python /home/jovyan/workspace/DB/diffusers/scripts/convertosdv2.py $prc $OUTPUT_DIR $SESSION_DIR/$Session_Name".ckpt"
clear_output()
if os.path.exists(SESSION_DIR+"/"+INSTANCE_NAME+'.ckpt'):
clear_output()
print("[1;32mDONE, the CKPT model is in your Gdrive in the sessions folder")
if Disconnect_after_training :
time.sleep(20)
runtime.unassign()
else:
print("[1;31mSomething went wrong")
else:
print("[1;31mSomething went wrong")
from subprocess import getoutput
qwe = getoutput('nvidia-smi')
nvc = getoutput('nvcc --version')
if not 'nvcc: not found' in nvc:
asd = nvc
else:
asd = ''
xfo = getoutput('python -m xformers.info')
if not 'Error while finding module specification' in xfo:
zxc = xfo
else:
zxc = ''
print('\033[0;36m\033[1m',"\n",qwe,"\n\n",asd,"\n\n",zxc,'\033[0m')
~~
5\u001b[1;31m
import os, time
from IPython.display import display, clear_output
from subprocess import getoutput
import ipywidgets as widgets
from ipywidgets import Layout
from ipywidgets import GridspecLayout
passdesks = True
passlexss = True
lvs = int(widgets.__version__[:1])
if lvs==8:
passdesks = False
commands_regex = getoutput('pip list | grep regex')# if "regex" in v_diffusers:
if "regex" in commands_regex:
passlexss = False
if passdesks and passlexss:
!pip install regex
!pip install --upgrade ipywidgets
clear_output(wait=False)
print (' \033[0;36m\033[1mipywidgets established\033[0m')
time.sleep(0.5)
os._exit(00)
else:
import regex
enable = {'button_color': '#3d85c6', 'text_color': '#033932'}
emdown = {'button_color': '#008081', 'text_color': '#053c3c'}
#ifoCOMifoCOMifoCOMifoCOMifoCOM
opens = '<p style="text-align:center;"><span style="color:#25323b;font-family:"Courier New", Courier, monospace;"><strong>'
cloug = '</strong></span></p>'
migse = {'background': '#a3b8c8'}
nunlfs = widgets.HTML(value=opens+'git-lfs'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nunxformers = widgets.HTML(value=opens+'xformers'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nundiffusers = widgets.HTML(value=opens+'diffusers'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nunfastapi = widgets.HTML(value=opens+'fastapi 0.90.1'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nunautomatic = widgets.HTML(value=opens+'automatic'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
nuncontrolnet = widgets.HTML(value=opens+'controlnet'+cloug, style = migse ,layout=Layout(width="120px",height="28px"))
onoffcolos = ["solid arrow-down","solid rotate-right","solid check"]
onoffcolosS = [enable, emdown]
onoffcolosD = [False, True]
nunlfsU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nunxformersU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nundiffusersU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nunfastapiU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nunautomaticU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
nuncontrolnetU = widgets.Button(disabled=onoffcolosD[0],button_style='',tooltip='',icon=onoffcolos[0],layout=Layout(width="38px",height="28px"),style = onoffcolosS[0])
ifoCOM = GridspecLayout(2,6,width='500px',height='auto')
ifoCOM[0, 0] = nunlfs
ifoCOM[0, 1] = nunlfsU
ifoCOM[1, 0] = nunxformers
ifoCOM[1, 1] = nunxformersU
ifoCOM[0, 2] = nundiffusers
ifoCOM[0, 3] = nundiffusersU
ifoCOM[1, 2] = nunfastapi
ifoCOM[1, 3] = nunfastapiU
ifoCOM[0, 4] = nunautomatic
ifoCOM[0, 5] = nunautomaticU
ifoCOM[1, 4] = nuncontrolnet
ifoCOM[1, 5] = nuncontrolnetU
def upload_ifoCOM ():
upload_ifoCOM_lfs = False
upload_ifoCOM_xfo = False
upload_ifoCOM_diffusers = False
upload_ifoCOM_ivs = False
upload_ifoCOM_wui = False
upload_ifoCOM_col = False
commands_lfs = getoutput('git lfs install')
if "Git LFS initialized" in commands_lfs:
upload_ifoCOM_lfs = True
commands_xfo = getoutput('python -m xformers.info')
if not "Error while finding module specification" in commands_xfo:
upload_ifoCOM_xfo = True
commands_diffusers = getoutput('pip list | grep diffusers')
if "diffusers" in commands_diffusers:
upload_ifoCOM_diffusers = True
AGfloats = False#DIFFUSE
try:
import accelerate
avs = str(accelerate.__version__)
except:
avs = str("except")
if avs == '0.12.0' or avs == 'except':
AGfloats = True
DIfloats = False
try:
import diffusers
jvs = str(diffusers.__version__)
except:
jvs = str("except")
if jvs == '0.9.0.dev0' or jvs == 'except':
DIfloats = True
if AGfloats or DIfloats:
upload_ifoCOM_diffusers = False#DIFFUSE
try:
import fastapi
ivs = str(fastapi.__version__)
except:
ivs = str("except")
if ivs == '0.90.1':
upload_ifoCOM_ivs = True
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui'):
upload_ifoCOM_wui = True
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/extensions/sd-webui-controlnet'):
upload_ifoCOM_col = True
if not upload_ifoCOM_lfs:
nunlfsU.disabled=onoffcolosD[0]; nunlfsU.icon=onoffcolos[0]; nunlfsU.style=onoffcolosS[0]
else:
nunlfsU.disabled=onoffcolosD[1]; nunlfsU.icon=onoffcolos[2]; nunlfsU.style=onoffcolosS[1]
if not upload_ifoCOM_xfo:
nunxformersU.disabled=onoffcolosD[0]; nunxformersU.icon=onoffcolos[0]; nunxformersU.style=onoffcolosS[0]
else:
nunxformersU.disabled=onoffcolosD[1]; nunxformersU.icon=onoffcolos[2]; nunxformersU.style=onoffcolosS[1]
if not upload_ifoCOM_diffusers:
nundiffusersU.disabled=onoffcolosD[0]; nundiffusersU.icon=onoffcolos[0]; nundiffusersU.style=onoffcolosS[0]
else:
nundiffusersU.disabled=onoffcolosD[1]; nundiffusersU.icon=onoffcolos[2]; nundiffusersU.style=onoffcolosS[1]
if not upload_ifoCOM_ivs:
nunfastapiU.disabled=onoffcolosD[0]; nunfastapiU.icon=onoffcolos[0]; nunfastapiU.style=onoffcolosS[0]
else:
nunfastapiU.disabled=onoffcolosD[1]; nunfastapiU.icon=onoffcolos[2]; nunfastapiU.style=onoffcolosS[1]
if not upload_ifoCOM_wui:
nunautomaticU.disabled=onoffcolosD[0]; nunautomaticU.icon=onoffcolos[0]; nunautomaticU.style=onoffcolosS[0]
else:
nunautomaticU.disabled=onoffcolosD[0]; nunautomaticU.icon=onoffcolos[1]; nunautomaticU.style=onoffcolosS[0]
if not upload_ifoCOM_col:
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui'):
nuncontrolnetU.disabled=onoffcolosD[0]
else:
nuncontrolnetU.disabled=onoffcolosD[1]
nuncontrolnetU.icon=onoffcolos[0]; nuncontrolnetU.style=onoffcolosS[0]
else:
nuncontrolnetU.disabled=onoffcolosD[1]; nuncontrolnetU.icon=onoffcolos[2]; nuncontrolnetU.style=onoffcolosS[1]
upload_ifoCOM ()
#ifoCOMifoCOMifoCOMifoCOMifoCOM
#widCOMwidCOMwidCOMwidCOMwidCOM
ckptsize =[]
widV15 = widgets.Button(description='V15',disabled=False,button_style='',tooltip='',layout=Layout(width="50px",height="28px"),style = enable)
widV21 = widgets.Button(description='V21',disabled=False,button_style='',tooltip='',layout=Layout(width="50px",height="28px"),style = enable)
widDSS = widgets.Button(description='DSS',disabled=True,button_style='',tooltip='',layout=Layout(width="50px",height="28px"),style = emdown)
widSELES = widgets.Select(options=ckptsize,disabled=False,layout=Layout(width="358px",height="95px"))
emgNUN = widgets.Button(description='WUI',disabled=False,button_style='',tooltip='',layout=Layout(width="80px",height="auto"),style = enable)
widCOM = GridspecLayout(3,3,width='500px',height='100px')
widCOM[0, 0] = widV15
widCOM[1, 0] = widV21
widCOM[2, 0] = widDSS
widCOM[:, 1] = widSELES
widCOM[:, 2] = emgNUN
def upload_widCOM ():
global ckptsize
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui'):
emgNUN.disabled=False
else:
emgNUN.disabled=True
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V15.ckpt'):
widV15.disabled=True;widV15.style=emdown;
else:
widV15.disabled=False;widV15.style=enable;
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V21.ckpt'):
widV21.disabled=True;widV21.style=emdown;
else:
widV21.disabled=False;widV21.style=enable;
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/DSS.ckpt'):
widDSS.disabled=True;widDSS.style=emdown;
else:
widDSS.disabled=False;widDSS.style=enable;
if os.path.exists('/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/'):
ckptsize = []
for e in os.listdir("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/"):
name, ext = os.path.splitext(e)
if ext == '.ckpt':
ckptsize.append(name)
widSELES.options=ckptsize
upload_widCOM ()
#widCOMwidCOMwidCOMwidCOMwidCOM
#sizCOMsizCOMsizCOMsizCOMsizCOM
SZ = widgets.IntProgress(min=0,max=102400,
bar_style='',
style={'bar_color': '#3d85c6', 'description_width': 'initial'},
layout=Layout(width="315px",height="28px"),
orientation='horizontal'
)
sizesU = widgets.Button(disabled=False,button_style='',tooltip='',icon="solid rotate-right",layout=Layout(width="80px",height="28px"),style = enable)
sizesD = widgets.Button(disabled=False,button_style='',tooltip='',icon="sharp solid trash",layout=Layout(width="80px",height="28px"),style = enable)
sizCOM = GridspecLayout(1,3,width='500px',height='auto')
sizCOM[0, 0] = sizesD
sizCOM[0, 1] = sizesU
sizCOM[0, 2] = SZ
def upload_sizCOM ():
getpt = str(os.path.abspath(os.getcwd()))
os.chdir('/')
comsiz = str(getoutput('du -s')).split("\n")
outsiz = int(int(regex.findall("\d+", comsiz[len(comsiz)-1])[0])/1024)
os.chdir(getpt)
SZ.value=outsiz
upload_sizCOM ()
#sizCOMsizCOMsizCOMsizCOMsizCOM
allsizezCOMPIL = GridspecLayout(3,1,width='auto',height='233px')
allsizezCOMPIL[0, 0] = ifoCOM
allsizezCOMPIL[1, 0] = widCOM
allsizezCOMPIL[2, 0] = sizCOM
#bittenfigitten
#downline
def lisau():
getpt = str(os.path.abspath(os.getcwd()))
os.chdir('/home/jovyan')
!find -name '.ipynb_checkpoints' -exec rm -rf {} \;
os.chdir(getpt)
if os.path.exists("/home/jovyan/.local/share/Trash/files"):
!rm -rf /home/jovyan/.local/share/Trash/files
def sizesD_function(aug):
lisau()
upload_sizCOM()
def sizesU_function(aug):
upload_sizCOM()
sizesU.on_click(sizesD_function)
sizesD.on_click(sizesD_function)
#downline
#hensline
intes = [nunlfsU,nunxformersU,nundiffusersU,nunfastapiU,nunautomaticU,nuncontrolnetU,widV15,widV21,widDSS,emgNUN,sizesD,sizesU]
poses = [False,False,False,False,False,False,False,False,False,False,False,False]
def setup_loads():
global poses
for i in range(len(poses)):
poses[i]=intes[i].disabled
for i in range(len(poses)):
intes[i].disabled=True
def exele_loads():
for i in range(len(poses)):
intes[i].disabled=poses[i]
def nunlfsU_function(aug):
setup_loads()
with light_output:
clear_output()
!curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
!sudo apt-get install git-lfs
upload_sizCOM ()
with light_output:
clear_output()
exele_loads ()
upload_ifoCOM ()
def nunxformersU_function(aug):
setup_loads()
with light_output:
# clear_output()
# !mamba install -q -c nvidia cuda-nvcc=11.7 python=3.9.13 --yes
# clear_output()
# !mamba install -q -c nvidia -c pytorch pytorch-cuda=11.7 python=3.9.13 --yes
# clear_output()
# !mamba install -q -c fastai python=3.9.13 fastai=2.7.11 --yes
# clear_output()
# !mamba install -q -c conda-forge python=3.9.13 huggingface_hub=0.12.1 --yes
# clear_output()
# !mamba install -q -c nvidia -c pytorch -c 'xformers/label/dev' python=3.9.13 pytorch=1.13.1 xformers --yes
# clear_output()
# !pip install --upgrade triton==2.0.0a2
clear_output()
!mamba install -q -c nvidia cuda-nvcc=11.7 python=3.9.13 --yes
clear_output()
!mamba install -q -c conda-forge python=3.9.13 transformers --yes
clear_output()
!mamba install -q -c nvidia -c pytorch -c 'xformers/label/dev' python=3.9.13 xformers --yes
clear_output()
!pip install --upgrade triton==2.0.0a2
clear_output()
!pip install --upgrade transformers==4.25.1
upload_sizCOM ()
with light_output:
clear_output()
qwe = getoutput('nvidia-smi')
nvc = getoutput('nvcc --version')
if not 'nvcc: not found' in nvc:
asd = nvc
else:
asd = ''
xfo = getoutput('python -m xformers.info')
if not 'Error while finding module specification' in xfo:
zxc = xfo
else:
zxc = ''
print('\033[0;36m\033[1m',"\n",qwe,"\n\n",asd,"\n\n",zxc,'\033[0m')
exele_loads ()
upload_ifoCOM ()
def nundiffusersU_function(aug):
setup_loads()
with light_output:
clear_output()
!pip install --upgrade --no-deps accelerate
clear_output()
!pip install --upgrade --no-deps git+https://github.com/huggingface/diffusers
clear_output()
upload_sizCOM ()
# with light_output:
# !pip install transformers==4.25.1
# clear_output()
exele_loads ()
upload_ifoCOM ()
def nunfastapiU_function(aug):
setup_loads()
with light_output:
clear_output()
upload_sizCOM ()
with light_output:
!pip install --upgrade fastapi==0.90.1
clear_output()
exele_loads ()
upload_ifoCOM ()
def nunautomaticU_function(aug):
setup_loads()
with light_output:
clear_output()
if not os.path.exists("/home/jovyan/workspace/stable-diffusion-webui"):
os.chdir('/home/jovyan/workspace/')
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui stable-diffusion-webui
else:
os.chdir('/home/jovyan/workspace/stable-diffusion-webui')
!git pull
upload_sizCOM ()
with light_output:
clear_output()
exele_loads ()
upload_ifoCOM ()
def nuncontrolnetU_function(aug):
setup_loads()
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/stable-diffusion-webui/extensions')
!git clone https://github.com/Mikubill/sd-webui-controlnet.git
from torch.hub import download_url_to_file
from urllib.parse import urlparse
mdldir="/home/jovyan/workspace/stable-diffusion-webui/extensions/sd-webui-controlnet/models"
os.chdir('/home/jovyan/workspace/')
!wget -q -O CN_models.txt https://github.com/TheLastBen/fast-stable-diffusion/raw/main/AUTOMATIC1111_files/CN_models.txt
with open("CN_models.txt", 'r') as f:
mdllnk = f.read().splitlines()
for lnk in mdllnk:
clear_output()
download_url_to_file(lnk, os.path.abspath(os.path.join(mdldir, os.path.basename(urlparse(lnk).path))), hash_prefix=None, progress=True)
!rm CN_models.txt
upload_sizCOM ()
with light_output:
clear_output()
exele_loads ()
upload_ifoCOM ()
nunlfsU.on_click(nunlfsU_function)
nunxformersU.on_click(nunxformersU_function)
nundiffusersU.on_click(nundiffusersU_function)
nunfastapiU.on_click(nunfastapiU_function)
nunautomaticU.on_click(nunautomaticU_function)
nuncontrolnetU.on_click(nuncontrolnetU_function)
#hensline
#midasline
def widV15_function(aug):
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/')
!mkdir "/home/jovyan/workspace/tmp"
os.chdir('/home/jovyan/workspace/tmp')
!git init
!git lfs install --system --skip-repo
!git clone --depth 1 --branch fp16 "https://huggingface.co/runwayml/stable-diffusion-v1-5"
!rm -rf /home/jovyan/workspace/tmp/.git
lisau()
with light_output:
os.chdir('/home/jovyan/workspace/tmp')
if os.path.exists('/home/jovyan/workspace/tmp/stable-diffusion-v1-5/unet/diffusion_pytorch_model.bin'):
!wget -q -O stable-diffusion-v1-5/vae/diffusion_pytorch_model.bin https://huggingface.co/stabilityai/sd-vae-ft-mse/resolve/main/diffusion_pytorch_model.bin
!wget -O convertosd.py https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dreambooth/convertosd.py
!sed -i '201s@.*@ model_path = "/home/jovyan/workspace/tmp/stable-diffusion-v1-5"@' /home/jovyan/workspace/tmp/convertosd.py
!sed -i '202s@.*@ checkpoint_path= "/home/jovyan/workspace/V15.ckpt"@' /home/jovyan/workspace/tmp/convertosd.py
!python /home/jovyan/workspace/tmp/convertosd.py
if os.path.exists("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion"):
!mv /home/jovyan/workspace/V15.ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V15.ckpt
widV15_function_out = "/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V15.ckpt"
else:
widV15_function_out = "/home/jovyan/workspace/V15.ckpt"
os.chdir('/home/jovyan/workspace/')
!rm -rf /home/jovyan/workspace/tmp
lisau()
with light_output:
upload_sizCOM()
upload_widCOM()
clear_output()
if os.path.exists(widV15_function_out):
print ('\033[0;36m\033[1m'+widV15_function_out+'\033[0m')
def widV21_function(aug):
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/')
!mkdir "/home/jovyan/workspace/tmp"
os.chdir('/home/jovyan/workspace/tmp')
!git init
!git lfs install --system --skip-repo
!git remote add -f origin "https://huggingface.co/stabilityai/stable-diffusion-2-1"
!git config core.sparsecheckout true
!echo -e "scheduler\ntext_encoder\ntokenizer\nunet\nvae\nfeature_extractor\nmodel_index.json\n!*.safetensors" > .git/info/sparse-checkout
!git pull origin fp16
!rm -rf /home/jovyan/workspace/tmp/.git
lisau()
with light_output:
os.chdir('/home/jovyan/workspace/')
!wget -O convertosdv2.py https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dreambooth/convertosdv2.py
!python /home/jovyan/workspace/convertosdv2.py --fp16 /home/jovyan/workspace/tmp /home/jovyan/workspace/V21.ckpt
if os.path.exists("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion"):
!mv /home/jovyan/workspace/V21.ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V21.ckpt
widV21_function_out = "/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/V21.ckpt"
else:
widV21_function_out = "/home/jovyan/workspace/V21.ckpt"
!rm -rf /home/jovyan/workspace/tmp
!rm -rf /home/jovyan/workspace/convertosdv2.py
lisau()
with light_output:
upload_sizCOM()
upload_widCOM()
clear_output()
if os.path.exists(widV21_function_out):
print ('\033[0;36m\033[1m'+widV21_function_out+'\033[0m')
def widDSS_function(aug):
with light_output:
clear_output()
os.chdir('/home/jovyan/workspace/')
!mkdir "/home/jovyan/workspace/tmp"
os.chdir('/home/jovyan/workspace/tmp')
!git init
!git lfs install --system --skip-repo
!git clone "https://huggingface.co/dream-textures/texture-diffusion"
!rm -rf /home/jovyan/workspace/tmp/.git
lisau()
with light_output:
os.chdir('/home/jovyan/workspace/')
!wget -O convertosdv2.py https://github.com/TheLastBen/fast-stable-diffusion/raw/main/Dreambooth/convertosdv2.py
!python /home/jovyan/workspace/convertosdv2.py --fp16 /home/jovyan/workspace/tmp/texture-diffusion /home/jovyan/workspace/DSS.ckpt
if os.path.exists("/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion"):
!mv /home/jovyan/workspace/DSS.ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/DSS.ckpt
widDSS_function_out = "/home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/DSS.ckpt"
else:
widDSS_function_out = "/home/jovyan/workspace/DSS.ckpt"
!rm -rf /home/jovyan/workspace/tmp
!rm -rf /home/jovyan/workspace/convertosdv2.py
lisau()
with light_output:
upload_sizCOM()
upload_widCOM()
clear_output()
if os.path.exists(widDSS_function_out):
print ('\033[0;36m\033[1m'+widDSS_function_out+'\033[0m')
widV15.on_click(widV15_function)
widV21.on_click(widV21_function)
widDSS.on_click(widDSS_function)
def emgNUN_function(aug):
with light_output:
clear_output()
saind_widSELES = str(widSELES.value)
alpha = str('cd /home/jovyan/workspace/stable-diffusion-webui\nCOMMANDLINE_ARGS="--share --enable-insecure-extension-access --xformers --lowram ')
betas = str('" REQS_FILE="requirements.txt" python launch.py')
if saind_widSELES == 'None':
print ('\033[0;36m\033[1m'+alpha+betas+'\033[0m')
else:
modes = str('--ckpt /home/jovyan/workspace/stable-diffusion-webui/models/Stable-diffusion/') + saind_widSELES + str('.ckpt')
print ('\033[0;36m\033[1m'+alpha+modes+betas+'\033[0m')
emgNUN.on_click(emgNUN_function)
#midasline
#bittenfigitten
light_output = widgets.Output()
display(allsizezCOMPIL,light_output)
import subprocess
empyelouds = '/home/jovyan/workspace/DB/value-v1-5/empye.png'
def empye():
subprocess.call("ylsed=123 apt='low_dark_space' \
nenamefile='empye' nunamodel='/home/jovyan/workspace/DB/value-v1-5' \
nunafile='/home/jovyan/workspace/DB/value-v1-5' python /home/jovyan/workspace/SCD/simple.py", shell=True)
if not os.path.exists(empyelouds):
empye()
gen2value = GridspecLayout(3,6,width='1020px',height="258px")
empyefile = open("/home/jovyan/workspace/DB/value-v1-5/empye.png", "rb").read()
empyewidget = widgets.Image( format='png', width=190, layout=Layout(visibility = 'visible')) # visible hidden
S_Fielde = []
M_Fielde = []
Y_Fielde = []
SizeFielse = 5
for i in range(SizeFielse):
S_A = widgets.BoundedIntText(value=1,min=1,max=999999,step=1,disabled=False,layout=Layout(flex='1 1 0%', width="190px",height="100%"))
M_A = widgets.Text(value='',placeholder='CPT',layout=Layout(flex='1 1 0%', width="190px",height="100%"))
Y_A = widgets.Image(value=empyefile, format='png', width=190, layout=Layout(visibility = 'hidden')) # visible hidden
S_Fielde.append(S_A)
M_Fielde.append(M_A)
Y_Fielde.append(Y_A)
for i in range(SizeFielse):
gen2value[0, i+1] = S_Fielde[i]
gen2value[1, i+1] = M_Fielde[i]
gen2value[2, i+1] = Y_Fielde[i]
gen2dousy = widgets.Button(disabled=False,button_style='',tooltip='',icon="thin atom",layout=Layout(width="auto",height="auto"),style = onoffcolosS[0])
gen2value[:, 0] = gen2dousy
gen2likewools = widgets.Output()
def likewools(aug):
with gen2likewools:
nunamodel = outputSesion
nunafile = outputSesion
model_ylsed = ''
model_apt = ''
for i in range(SizeFielse):
sed = gen2value[0,i+1].value
cpt = gen2value[1,i+1].value
ylsed = str(sed)
apt = str(cpt).replace(" ","_")
if apt == '':
apt = str('_')
if i == 0:
model_ylsed = ylsed
model_apt = apt
else:
model_ylsed += str('MASSIV') + ylsed
model_apt += str('MASSIV') + apt
nenamefile = str("modelAMASSIVmodelBMASSIVmodelCMASSIVmodelDMASSIVmodelE")
gen2table = ["modelA","modelB","modelC","modelD","modelE"]
subprocess.call("ylsed="+model_ylsed+" apt="+model_apt+" \
nenamefile="+nenamefile+" nunamodel="+nunamodel+" \
nunafile="+nunafile+" python /home/jovyan/workspace/SCD/simple.py", shell=True)
time.sleep(1.05)
clear_output()
for i in range(SizeFielse):
gen2valuefile = open(nunafile+"/"+gen2table[i]+".png", "rb").read()
gen2value[2, i+1].value = gen2valuefile
gen2value[2, i+1].layout.visibility = 'visible'
gen2dousy.on_click(likewools)
display(gen2value)
/home/jovyan/workspace/SCD/simple.py
import os
import time
import torch
from diffusers import StableDiffusionPipeline
aspipe = StableDiffusionPipeline.from_pretrained(os.environ['nunamodel'], torch_dtype=torch.float16).to("cuda")
checkMassive = False
if 'MASSIV' in os.environ['apt']:
checkMassive = True
if checkMassive:
sedMassive = []
cptMassive = []
filMassive = []
SizeFielse = 5
slides_sedMassive = os.environ['ylsed'].split("MASSIV")
slides_cptMassive = os.environ['apt'].split("MASSIV")
slides_filMassive = os.environ['nenamefile'].split("MASSIV")
for i in range(SizeFielse):
sedMassive.append(int(slides_sedMassive[i]))
cptMassive.append(str(slides_cptMassive[i]).replace("_"," "))
filMassive.append(str(slides_filMassive[i]))
for i in range(SizeFielse):
sgenerator = torch.Generator("cuda").manual_seed(sedMassive[i])
filemodel = aspipe(cptMassive[i], num_inference_steps=50, guidance_scale=7.5, generator=sgenerator).images[0]
filemodel.save(os.environ['nunafile']+"/"+filMassive[i]+".png")
else:
if not os.environ['ylsed']=='':
longnewsed=int(os.environ['ylsed'])
sgenerator = torch.Generator("cuda").manual_seed(longnewsed)
aspipe = aspipe(os.environ['apt'].replace("_"," "), num_inference_steps=50, guidance_scale=7.5, generator=sgenerator).images[0]
else:
aspipe = aspipe(os.environ['apt'].replace("_"," "), num_inference_steps=50, guidance_scale=7.5).images[0]
aspipe.save(os.environ['nunafile']+"/"+os.environ['nenamefile']+".png")
time.sleep(1.05)
###aaa@aab@aac@aac@aad@aad@aaf@aaf@aag@aah@aaj@aaj@aak@aal@aal@aam@aam@aan@aan@aap@aap@aar@aar@aas@aas@aat@aat@aau@aay@aay@aaz@aba@aba@abb@abb@abc@abc@abd@abe@abe@abh@abh@abi@abi@abo@abo@abq@abr@abs@abs@abt@abu@abu@abv@aby@aby@abz@aca@acc@acc@ace@ace@acf@ach@ach@aci@aci@ack@ack@acl@acl@acm@aco@aco@acp@acr@acs@act@act@acu@acu@acy@acy@ada@ada@adb@adc@add@add@ade@ade@adh@adi@adi@adl@adm@adm@adn@ado@ado@adp@adr@ads@adu@adu@adv@adv@ady@ady@aea@aed@ael@ael@aen@aer@aes@aes@aew@afa@afb@afc@afc@afd@afe@afe@aff@aff@afg@afi@afi@afl@afl@afm@afp@afs@aft@aga@aga@age@age@agg@agh@agh@agi@agi@agm@agn@ago@ago@agp@agr@ags@agt@agu@agu@aha@aha@ahe@ahh@ahi@ahi@ahl@ahn@aho@aho@ahs@ahu@ahu@aia@aib@aic@aid@aid@aig@aig@aii@aik@ail@ail@aim@aim@ain@ain@air@air@ais@ais@ait@ait@aja@aja@aje@aje@aji@aji@ajo@aju@aka@aka@akb@ake@ake@akh@akh@aki@aki@ako@ako@aks@aku@aku@aky@ala@ala@alb@ald@ald@ale@ale@alf@ali@ali@alk@alk@all@all@alm@aln@alo@alo@alp@alp@als@als@alt@alt@alu@alu@alv@aly@aly@alz@alz@ama@ama@amb@amb@amc@amc@amd@ame@ame@amg@ami@ami@aml@amn@amo@amo@amp@amp@amr@ams@amu@amu@amy@amy@ana@ana@anc@anc@and@and@ane@ane@ang@ang@ani@ani@anj@ank@ank@ann@ann@ano@ano@ans@ans@ant@ant@anu@anu@any@any@anz@anz@aoa@aoc@aol@aon@aon@aor@aos@apa@apa@apc@apd@ape@ape@aph@aph@api@api@apk@apo@apo@app@app@apr@apr@aps@apt@apu@aqu@ara@ara@arc@arc@ard@ard@are@are@arg@ari@ari@ark@ark@arl@arm@arm@arn@arn@aro@aro@arr@arr@ars@ars@art@art@aru@aru@ary@ary@asa@asa@asb@asc@asc@asd@ase@ase@asf@asg@ash@ash@asi@asi@ask@ask@asl@asm@aso@aso@asp@asp@asr@ass@ass@ast@ast@asu@asu@asx@asy@asy@ata@atc@atd@ate@ate@atf@ath@ath@ati@ati@atl@atl@atm@ato@ato@atp@atp@atr@ats@ats@att@att@atu@atu@atv@atx@atx@aty@aty@atz@aua@aub@auc@aud@aud@auf@aug@aug@auk@aul@aul@aun@aun@aur@aur@aus@aus@aut@aux@aux@ava@ave@ave@avg@avi@avi@avl@avo@avo@avs@avy@awa@awa@awd@awe@awe@awg@awh@awi@awk@awk@awn@awp@aws@aww@awx@axe@axi@axx@aya@aye@aye@ayi@ayo@ayo@ayr@ayr@ays@ayu@ayy@aza@aze@aze@azi@azi@azo@azu@azu@azy@azz@azz@añ@baa@bab@bab@bac@bac@bad@bad@bae@bae@baf@bag@bag@bah@bah@bai@bai@baj@bak@bak@bal@bal@bam@bam@ban@ban@bao@bao@bap@bap@bar@bar@bas@bas@bat@bat@bau@bau@bav@baw@bax@bay@bay@baz@baz@bba@bbb@bbc@bbc@bbe@bbi@bbl@bbm@bbn@bbo@bbq@bbq@bbs@bby@bby@bcc@bce@bch@bcn@bcs@bcu@bdg@bds@bea@bea@bec@bec@bed@bed@bee@bee@beg@beg@beh@beh@bei@bei@bek@bek@bel@bel@ben@ben@ber@ber@bes@bes@bet@bet@beu@bev@bev@bex@bex@bey@bey@bez@bez@bfc@bff@bfi@bgc@bgs@bgt@bha@bha@bhi@bhi@bhk@bhm@bho@bhp@bhs@bhu@bia@bib@bib@bic@bic@bid@bid@bie@bie@big@big@bih@bij@bik@bil@bil@bim@bim@bin@bin@bio@bio@bir@bir@bis@bis@bit@bit@bix@biz@biz@bjj@bjp@bjp@bkk@bla@bla@ble@ble@bli@bli@blk@blk@blm@bln@blo@blo@blr@bls@blu@blu@bly@bly@bma@bmc@bmi@bmo@bms@bmw@bmw@bmx@bnb@bnp@bnw@boa@bob@bob@boc@boc@bod@bod@boe@boe@bog@bog@boh@boi@boi@bok@bok@bol@bol@bom@bom@bon@bon@boo@boo@bop@bor@bor@bos@bos@bot@bot@bou@bou@bow@bow@box@box@boy@boy@bpa@bpd@bpl@bpm@bps@bra@bra@brb@brc@bre@bre@bri@bri@bro@bro@brs@brt@bru@bru@bry@bry@bsa@bsb@bsc@bsd@bse@bsf@bsp@bst@bsu@btc@btn@bto@btr@bts@bts@btv@btw@bub@bub@buc@bud@bud@buf@bug@bug@buh@buk@buk@bul@bul@bum@bum@bun@bun@bur@bur@bus@bus@but@but@buu@buy@buy@bvb@bwo@bye@bye@byl@byn@byn@byo@byr@bys@byu@byu@byz@bé@bü@caa@cab@cab@cac@cac@cad@cad@cae@caf@caf@cag@cah@cai@cai@cak@cal@cal@cam@cam@can@can@cao@cap@cap@car@car@cas@cas@cat@cat@cau@cau@cav@cav@caw@caw@cay@cay@caz@cba@cbb@cbc@cbc@cbd@cbe@cbi@cbj@cbn@cbp@cbr@cbs@cbs@cca@ccc@ccd@ccg@cch@cci@cci@ccl@ccm@cco@ccp@ccs@ccu@cda@cdc@cdc@cdn@cdn@cdo@cdp@cds@cdt@cea@cec@cec@ced@ced@cee@cee@cek@cel@cel@cem@cen@cen@ceo@ceo@cep@cep@cer@cer@ces@ces@cet@ceu@cey@cfa@cfb@cfc@cfd@cfl@cfl@cfo@cfp@cfr@cfs@cgc@cgi@cha@cha@chc@chd@che@che@chf@chi@chi@chk@chl@cho@cho@chp@chr@chs@chs@cht@chu@chu@chy@chy@cia@cic@cic@cid@cie@cif@cii@cil@cil@cim@cin@cin@cio@cio@cip@cir@cir@cis@cis@cit@cit@ciu@civ@cke@cke@cki@cki@cko@cks@cky@cky@cla@cla@clc@cle@cle@clg@cli@cll@clo@cls@clt@clt@clu@cly@cma@cma@cmc@cme@cmo@cmp@cms@cmt@cmu@cna@cnc@cng@cnn@cnn@cns@cny@coa@cob@cob@coc@coc@cod@cod@coe@cog@cog@col@col@com@com@con@con@coo@coo@cop@cop@cor@cor@cos@cos@cot@cot@cou@cov@cov@cow@cow@cox@cox@coy@coy@coz@coz@cpa@cpc@cpd@cpi@cpl@cpr@cps@cpt@cpu@cra@cra@crc@cre@cre@cri@cri@crm@cro@cro@crs@crt@cru@cru@cry@cry@csa@csc@csc@csd@cse@csg@csi@csi@csk@csm@csn@cso@csp@csr@csr@css@css@cst@csu@csu@csw@cta@ctc@cte@ctf@cto@ctr@ctr@cts@ctu@ctv@ctv@cub@cub@cud@cue@cuk@cul@cum@cum@cun@cun@cup@cup@cur@cur@cus@cut@cut@cuz@cvs@cwc@cws@cyn@cyp@cze@cé@cé@daa@dab@dab@dac@dac@dad@dad@dae@dae@daf@daf@dag@dag@dah@dah@dai@dai@dak@dak@dal@dal@dam@dam@dan@dan@dao@dap@dap@daq@dar@dar@das@das@dat@dat@dau@dau@dav@dav@daw@daw@dax@day@day@daz@daz@dbs@dbz@dca@dcc@dci@dcs@dcu@dda@ddc@ddd@ddi@ddr@dds@ddu@ddy@ddy@dea@deb@deb@dec@dec@ded@ded@dee@dee@def@def@deg@deh@dei@dei@dek@del@del@dem@dem@den@den@deo@deo@dep@dep@der@der@des@des@det@det@deu@dev@dev@dew@dew@dex@dex@dey@dez@dez@dfc@dfs@dfw@dge@dge@dha@dha@dhe@dhi@dhi@dho@dhs@dhu@dia@dia@dic@dic@did@did@die@die@dif@dif@dig@dig@dih@dii@dik@dik@dil@dil@dim@dim@din@din@dio@dio@dip@dip@dir@dir@dis@dis@dit@dit@div@div@dix@dix@diy@diy@diz@dji@dji@djo@djs@dlc@dle@dle@dly@dma@dmc@dms@dmv@dmx@dna@dnb@dnc@dnd@dnr@dns@dnt@doa@dob@doc@doc@dod@dod@doe@dof@dog@dog@doh@doi@doj@dok@dok@dol@dol@dom@dom@don@don@doo@doo@dop@dop@dor@dor@dos@dos@dot@dot@dou@dou@dov@dow@dow@dox@dox@doz@dps@dra@dra@drc@dre@dre@dri@dri@drm@dro@dro@drs@dru@dru@dry@dry@dsa@dsb@dsb@dsc@dsd@dsm@dsp@dss@dtm@dts@dua@dub@dub@duc@duc@due@duf@dug@dug@duh@dui@duk@dul@dum@dum@dun@dun@duo@dup@dup@dur@dur@dus@dut@dux@dvd@dvn@dvr@dwp@dye@dye@dyk@dyn@dyn@dys@dys@dé@dü@dÃŃ@ead@ead@eae@eag@eal@ean@ear@ear@eas@eat@eat@eau@eba@ebo@eca@ecb@ecc@ece@ecg@ech@ech@eci@eck@eck@eco@eco@ecr@ecs@ect@ecu@ecu@ecz@eda@edc@edd@ede@edg@edi@edi@edm@edm@edo@edo@edp@eds@edt@edu@edu@edy@edy@eed@eee@eee@eek@eel@eem@een@een@eer@eer@ees@eet@eez@efa@efc@eff@eff@efl@efs@ega@egg@egg@ego@ego@egy@eha@ehr@ehs@eic@eid@eid@eil@ein@ein@eis@ela@ela@eld@ele@ele@elf@elf@elg@eli@eli@elk@elk@ell@ell@elm@elm@elo@elo@els@els@elt@elu@ely@ely@ema@ema@emb@emc@emc@eme@eme@emi@emi@emo@emo@emp@emp@ems@emt@emu@emu@emy@ena@enc@end@end@ene@ene@enf@eng@eng@enh@eni@eni@enn@eno@eno@ens@ens@ent@ent@enu@env@env@eny@enz@enz@eon@eos@epa@eph@eph@epi@epi@epl@epo@epp@epp@eps@equ@era@era@erc@erc@erd@ere@ere@eri@eri@erm@ern@ern@ero@ero@erp@err@err@ers@ers@ert@ert@eru@ery@ery@erz@esa@esa@esc@esc@ese@ese@esg@esh@esh@esi@esk@esl@eso@eso@esp@esp@esq@ess@ess@est@est@esy@eta@etc@ete@ete@etf@eth@eth@eti@eti@eto@eto@etr@ets@ett@ett@etu@etv@etv@ety@ety@etz@etz@eul@eun@eun@eup@eur@eur@eus@eux@eva@eve@eve@evi@evi@evo@evo@evp@evs@ewe@ews@exc@exe@exe@exi@exo@exo@exp@exp@ext@ext@eye@eye@eze@eze@faa@fab@fab@fac@fac@fad@fad@faf@faf@fag@fag@fah@fah@fai@fai@fal@fal@fam@fam@fan@fan@fao@faq@far@far@fas@fas@fat@fat@fau@fau@fav@fav@faw@fax@fax@fay@fay@faz@fbf@fbi@fbs@fca@fcb@fcb@fcc@fck@fck@fcs@fcu@fda@fdi@fdn@fdr@feb@fed@fed@fee@fee@fei@fei@fel@fel@fem@fem@fen@fen@fer@fer@fes@fet@feu@feu@few@fex@fex@fey@fey@fez@ffa@ffc@ffe@ffe@fff@ffi@ffl@ffo@ffs@ffy@ffy@fgm@fgo@fhs@fia@fib@fic@fic@fid@fid@fie@fie@fif@fig@fig@fik@fil@fil@fim@fin@fin@fir@fir@fis@fis@fit@fit@fiu@fix@fix@fla@fla@fle@fle@fli@flo@flo@flu@flu@fly@fly@fml@fmr@fnc@fob@fod@fod@foe@fog@fol@fol@fom@fon@fon@foo@foo@for@for@fos@fos@fou@fow@fox@fox@foy@fpl@fpp@fps@fpv@fra@fra@frc@fre@fre@fri@fri@frm@fro@fro@frs@fru@fry@fry@fsa@fsu@fsu@fta@ftc@ftp@fts@ftw@fty@fue@fug@fuk@ful@ful@fum@fun@fun@fur@fur@fus@fut@fut@fwd@fyi@fé@gaa@gab@gab@gac@gad@gad@gae@gaf@gaf@gag@gag@gah@gai@gai@gal@gal@gam@gam@gan@gan@gao@gap@gap@gar@gar@gas@gas@gat@gat@gau@gau@gav@gaw@gay@gay@gaz@gaz@gba@gbc@gbp@gbr@gby@gcc@gcu@gdc@gdp@gea@ged@ged@gee@gee@geh@gel@gel@gem@gem@gen@gen@geo@geo@ger@ger@ges@get@get@gey@gfs@gga@gge@gge@ggg@ggi@ggs@ggy@ggy@gha@gha@ghc@ghe@ghe@ghi@ghi@ghj@gho@ghs@ght@ght@ghu@ghz@gia@gib@gic@gic@gid@gid@gie@gie@gif@gif@gig@gig@gil@gil@gim@gin@gin@gio@gio@gir@gir@gis@gis@git@git@giu@giz@gla@gla@gle@gle@gli@gli@glo@glo@glu@glu@gly@gma@gmb@gmb@gmc@gmo@gms@gmt@gna@gne@gni@gno@gno@goa@gob@god@god@goe@gof@gog@goi@gol@gol@gom@gon@gon@goo@goo@gop@gop@gor@gor@gos@gos@got@got@gou@gou@gov@gov@gow@gow@gpa@gps@gpu@gra@gra@grc@gre@gre@gri@gri@grl@gro@gro@grp@grt@gru@gry@gry@gsa@gsc@gsm@gsp@gst@gta@gta@gti@gto@gtr@gts@gtx@gua@gud@gud@gue@gue@gug@gui@gui@guj@guk@gul@gul@gum@gum@gun@gun@gup@gup@gur@gur@gus@gut@gut@guy@guy@gwy@gya@gye@gym@gym@gyn@gyp@gö@gü@haa@hab@hab@hac@had@had@hae@hae@hag@hag@hah@hah@hai@hai@haj@haj@hak@hak@hal@hal@ham@ham@han@han@hao@hap@hap@haq@har@har@has@has@hat@hat@hau@hav@hav@haw@haw@hay@hay@haz@haz@hbd@hbd@hbo@hcs@hdd@hdr@hea@hea@heb@heb@hec@hed@hee@hee@hef@heg@heh@hei@hei@hel@hel@hem@hem@hen@hen@hep@hep@her@her@hes@hes@het@het@heu@hew@hew@hex@hex@hey@hey@hez@hfx@hhh@hhs@hia@hib@hic@hic@hid@hid@hie@hig@hii@hil@hil@him@him@hin@hin@hio@hip@hip@hir@hir@his@his@hit@hit@hiv@hiv@hle@hmm@hms@hmu@hmv@hns@hoa@hob@hoc@hod@hoe@hoe@hof@hof@hog@hog@hoh@hoi@hok@hok@hol@hol@hom@hom@hon@hon@hoo@hoo@hop@hop@hor@hor@hos@hos@hot@hot@hou@hou@hov@how@how@hoy@hoy@hpa@hpc@hpe@hpv@hra@hra@hrc@hrh@hri@hrs@hru@hrw@hsc@hse@hsv@hta@hta@htc@htc@hts@htt@hua@hub@hub@hud@hud@hue@hue@hug@hug@huh@hui@hul@hum@hum@hun@hun@hur@hur@hus@hus@hut@hut@hwa@hwy@hya@hyd@hye@hye@hyo@hyo@hyp@iac@iac@iaf@iah@ial@ial@iam@iam@ian@ian@ias@ias@iba@ibc@ibd@ibi@ibm@ibm@ibn@ibs@ibu@ibu@ica@icc@ice@ice@ich@ich@ici@ici@ick@ick@icn@ico@ico@ics@ict@icu@icu@icy@icy@icz@ida@ida@idc@ide@ide@idf@idh@idi@idi@idk@ido@ido@idr@ids@idu@idy@iec@ied@iel@iel@ier@ier@ies@ies@ifa@ifc@ife@ife@iff@ift@ifu@ify@iga@ige@igh@igh@igi@ign@ign@igs@igu@iii@iii@iit@iit@ija@ika@ike@ike@ikh@ikh@iko@iko@iku@ila@ild@ild@ile@ile@ili@ili@ill@ill@ilm@ilo@ilo@ils@ilt@ilu@ily@ily@ima@ima@imc@ime@ime@imf@img@imi@imo@imo@imp@imp@ims@imv@ina@ina@inc@inc@ind@ind@ine@ine@inf@inf@ing@ing@ini@ini@inj@ink@ink@inn@inn@ino@ino@inr@ins@ins@int@int@inu@inv@inv@iny@ioc@iom@iom@ion@ion@ior@ior@ios@iot@iot@iow@ipa@ipc@ipl@ipo@ipo@ipp@ips@ira@ira@irc@ird@ire@ire@iri@iri@irl@irl@irn@iro@iro@irr@irs@iru@iry@isa@isa@isc@isd@isd@ise@ise@isf@ish@ish@isi@isi@isk@isl@ism@ism@isn@iso@iso@isp@isp@iss@iss@ist@ist@isu@isu@ita@ita@itc@ite@ite@itf@ith@ith@iti@iti@ito@ito@its@its@itt@itt@itu@itu@itv@itv@ity@ity@itz@itz@ium@ius@iva@ive@ive@ivf@ivy@ivy@iwd@iwm@iya@iza@ize@izo@izz@izz@jab@jab@jac@jac@jad@jad@jae@jae@jaf@jag@jag@jah@jah@jai@jai@jak@jak@jal@jal@jam@jam@jan@jan@jap@jap@jar@jar@jas@jas@jat@jau@jav@jaw@jaw@jax@jax@jay@jay@jaz@jaz@jdm@jeb@jec@jed@jed@jee@jee@jef@jel@jem@jem@jen@jen@jer@jer@jes@jes@jet@jet@jew@jfc@jfk@jha@jha@jhb@jia@jic@jic@jid@jie@jig@jig@jil@jim@jim@jin@jin@jio@jis@jis@jit@jit@jiu@jiu@jkt@jlo@jnr@jnu@job@job@joe@joe@jog@jog@joh@jol@jol@jom@jon@jon@joo@joo@jop@jor@jor@jos@jos@jou@jou@joy@joy@jpg@jpn@jst@jud@jug@jul@jul@jum@jun@jun@jur@jus@jux@jyo@jä@kaa@kab@kab@kac@kad@kae@kaf@kag@kag@kah@kah@kai@kai@kaj@kaj@kak@kak@kal@kal@kam@kam@kan@kan@kap@kap@kar@kar@kas@kas@kat@kat@kau@kau@kav@kaw@kaw@kay@kay@kaz@kaz@kbs@kca@kcr@kea@ked@ked@kee@kee@keg@keh@keh@kei@kei@kej@kel@kel@kem@kem@ken@ken@keo@ker@ker@kes@kes@ket@ket@kev@kev@kew@kew@kex@key@key@kfc@kgs@kha@kha@khe@khi@khi@kho@kho@khs@khu@khy@khz@kia@kib@kic@kic@kid@kid@kie@kie@kii@kik@kil@kil@kim@kim@kin@kin@kio@kio@kip@kip@kir@kir@kis@kis@kit@kit@kja@kjv@kka@kke@kki@kkk@kko@kkr@kla@kle@kle@kli@klm@klo@klu@kly@kms@kne@kni@kno@kno@knu@knw@kof@koh@koh@koi@kok@kok@kol@kol@kom@kom@kon@kon@koo@koo@kop@kop@kor@kor@kos@kos@kot@kot@kou@kou@kov@kov@kow@kow@koz@kpa@kph@kpk@kra@kre@kri@kro@kru@kry@ksa@ksh@kst@ksu@ktm@ktn@kts@ktv@kud@kul@kul@kum@kum@kun@kun@kup@kur@kus@kus@kut@kut@kuz@kwa@kwa@kwe@kwi@kya@kyc@kyo@kyo@kyr@kyu@kyu@kzn@kö@laa@lab@lab@lac@lac@lad@lad@laf@lag@lag@lah@lah@lai@lak@lak@lal@lal@lam@lam@lan@lan@lao@lao@lap@lap@laq@lar@lar@las@las@lat@lat@lau@lau@lav@lav@law@law@lax@lax@lay@lay@laz@lbc@lbj@lbs@lcd@lcs@ldn@ldn@ldr@lds@lea@lea@lec@lec@led@led@lee@lee@lef@leg@leg@leh@leh@lei@lei@lek@lek@lel@lem@lem@len@len@leo@leo@lep@ler@ler@les@les@let@let@leu@lev@lev@lew@lew@lex@lex@ley@ley@lez@lfc@lfc@lfw@lga@lgb@lgm@lhp@lhs@lia@lia@lib@lib@lic@lic@lid@lid@lie@lie@lif@lig@lig@lik@lik@lil@lil@lim@lim@lin@lin@lio@lip@lip@lis@lis@lit@lit@liu@liv@liv@lix@liz@liz@lju@lka@lla@llc@lle@lle@lli@lli@lll@llo@llp@lls@lly@lma@lmp@lms@lng@lnp@loa@lob@lob@loc@loc@lod@loe@loe@lof@log@log@loh@loh@loi@lok@lok@lol@lol@lom@lon@lon@loo@loo@lop@lop@lor@lor@los@los@lot@lot@lou@lou@lov@lov@low@low@lox@loy@loy@lpc@lpg@lps@lrt@lsd@lse@lse@lsu@lsu@ltc@ltd@lte@lub@lub@luc@luc@lud@lue@luf@lug@luk@lul@lum@lum@lun@lun@lup@lur@lus@luv@luv@lux@lux@luz@lvl@lyf@lyk@lym@lyn@lyn@lys@lé@maa@maa@mab@mac@mac@mad@mad@mae@mae@mag@mag@mah@mah@mai@mai@maj@maj@mak@mak@mal@mal@mam@mam@man@man@mao@mao@map@map@mar@mar@mas@mas@mat@mat@mau@mau@mav@maw@maw@max@max@may@may@maz@maz@mba@mbb@mbc@mbe@mbe@mbi@mbo@mbo@mbs@mbu@mca@mca@mcc@mcd@mce@mcg@mcg@mci@mci@mck@mcl@mcm@mcn@mco@mcr@mcr@mcs@mcu@mdc@mdc@mds@mdt@mea@mea@mec@med@med@mee@mee@meg@meg@meh@meh@mei@mei@mek@mel@mel@mem@mem@men@men@meo@mep@mer@mer@mes@mes@met@met@meu@mew@mex@mex@mey@mey@mez@mez@mfa@mfc@mfg@mfw@mga@mgm@mgr@mgs@mgt@mha@mhs@mhz@mia@mib@mic@mic@mid@mid@mie@mie@mig@mii@mik@mik@mil@mil@mim@min@min@mio@mir@mir@mis@mis@mit@mit@mix@mix@miy@miz@miz@mke@mkt@mla@mlb@mlb@mlg@mlk@mlm@mln@mlp@mls@mma@mma@mmc@mme@mmi@mmj@mmm@mmm@mmo@mms@mmy@mmy@mna@mnd@mnf@mnl@mns@mnt@moa@mob@mob@moc@moc@mod@mod@moe@moe@mof@mog@moh@moh@moi@moi@moj@mok@mol@mol@mom@mom@mon@mon@moo@moo@mop@mor@mor@mos@mos@mot@mot@mou@mou@mov@mow@mow@moy@moy@moz@moz@mpa@mpc@mpd@mpg@mpg@mph@mpi@mpo@mpp@mps@mpu@mpy@mqm@mra@mrc@mri@mrs@mrs@mrt@mru@mrw@msa@msc@msc@msd@msd@msf@msg@msg@msh@msi@msi@msk@msl@msm@msn@msn@msp@msp@mss@mss@mst@msu@msu@msy@mta@mtb@mtb@mtc@mtg@mtg@mth@mtl@mtn@mtn@mtr@mts@mtv@mtv@mua@muc@mud@mud@mue@mue@muf@mug@mug@muh@muh@muj@muk@muk@mul@mul@mum@mum@mun@mun@mup@mur@mur@mus@mus@mut@mut@muy@mvc@mvp@mwc@mwf@mya@mye@myo@myr@mys@má@mé@mü@naa@nab@nab@nac@nac@nad@nad@nae@naf@naf@nag@nag@nah@nah@nai@nai@naj@nak@nak@nal@nal@nam@nam@nan@nan@nao@nap@nap@naq@nar@nar@nas@nas@nat@nat@nau@nau@nav@nav@naw@naw@nax@nay@nay@naz@naz@nba@nba@nbc@nbc@nbd@nbl@nca@ncc@ncc@ncr@ncs@nct@nct@nda@ndc@ndi@ndp@nds@nea@neb@nec@nec@ned@ned@nee@nee@neg@neh@neh@nei@nek@nel@nel@nem@nen@nen@neo@neo@nep@nep@ner@ner@nes@nes@net@net@neu@neu@nev@nev@new@new@nex@nex@ney@ney@nez@nfc@nfl@nfl@nga@ngc@ngo@ngo@nhc@nhl@nhl@nhm@nhq@nhs@nhs@nia@nib@nic@nic@nie@nie@nig@nig@nih@nik@nik@nil@nil@nim@nim@nin@nin@nip@nip@nir@nir@nis@nis@nit@nit@niu@niv@nix@nix@nko@nli@nlp@nmd@nme@nnn@noc@noc@nod@nof@nog@noh@noi@noi@nol@nom@nom@non@non@noo@noo@nor@nor@nos@not@not@nou@nou@nov@nov@now@now@nox@noy@npa@npc@npr@npr@nps@npt@nra@nrc@nrf@nrg@nrl@nrl@nsa@nsc@nsd@nsf@nsi@nsw@nsw@ntr@nts@ntt@ntv@ntv@nue@nug@nuh@nuk@nul@num@num@nun@nun@nup@nur@nur@nus@nus@nut@nut@nvi@nwa@nwo@nws@nws@nwt@nxt@nxt@nya@nyc@nyc@nye@nye@nyk@nyo@nyo@nyr@nys@nys@nyt@nyt@nyu@nyu@oak@oak@oat@oat@oax@oba@oba@obe@obe@obi@obi@obl@obo@obo@obs@oca@occ@ocd@oce@och@och@oci@ock@ock@oco@ocr@ocs@oct@ocu@oda@odd@odd@ode@ode@odi@odi@odo@odo@odu@odu@oec@oem@oes@ofa@ofc@ofe@off@off@ofi@ofi@oft@oga@ohh@ohi@ohl@ohl@ohn@ohs@oic@oid@oil@oil@oir@oir@ois@oit@oka@oka@okc@okc@oke@oke@oki@oko@oko@oku@oku@ola@ola@old@old@ole@ole@olf@oli@oli@oll@oll@olo@olo@ols@olt@olu@olu@oly@oly@oma@oma@omb@omd@ome@ome@omf@omg@omg@omi@omi@omo@omo@oms@omy@omy@ona@ond@ond@one@one@onf@ong@ong@oni@oni@ono@ono@ons@ons@ont@ont@onu@ony@ony@ood@ood@oof@ooh@ook@ook@ool@ool@oom@oom@oon@oon@ooo@oop@oor@oos@oot@opa@opd@ope@ope@oph@opi@opi@opp@opp@ops@opt@opt@opy@ora@orb@orb@orc@ord@ord@ore@ore@org@org@ori@ori@ork@ork@orl@orm@orn@orn@oro@oro@orr@ors@ort@oru@oru@ory@ory@osa@osa@osc@ose@ose@osh@osh@osi@osi@osm@oso@oso@osp@oss@oss@ost@ost@osu@osu@ota@ota@otc@otd@ote@ote@oth@oth@oti@oti@oto@oto@otp@otr@ots@ott@ott@otw@oud@oue@ouf@oui@ouk@oul@oul@oun@oun@oup@our@our@ous@ous@out@out@oux@oux@ova@ove@ove@ovi@ovo@ovo@owa@owe@owl@owl@own@own@owo@ows@oxi@oxi@oxo@oxy@oya@oye@paa@pab@pac@pac@pad@pad@paf@pag@pag@pah@pah@pai@pai@pak@pak@pal@pal@pam@pam@pan@pan@pao@pap@pap@par@par@pas@pas@pat@pat@pau@pau@pav@paw@paw@pax@pax@pay@pay@paz@pba@pbb@pbb@pbc@pbl@pbr@pbs@pca@pcb@pcc@pci@pcm@pcr@pcs@pct@pdc@pdf@pdp@pdt@pdx@pdx@pea@pec@pec@ped@ped@pee@pee@peg@peg@pei@pei@pel@pel@pen@pen@pep@pep@per@per@pes@pes@pet@pet@peu@pew@pew@pex@pey@pey@pez@pez@pfa@pfc@pff@pfi@pfw@pga@pgh@pgh@pgs@pha@pha@phc@phd@phd@phe@phe@phi@phi@phl@pho@pho@php@phs@phu@phx@phx@phy@phy@pia@pic@pic@pid@pie@pie@pig@pig@pik@pil@pil@pim@pim@pin@pin@pio@pip@pir@pir@pis@pis@pit@pit@pix@pix@pjs@pkg@pkk@pla@pla@plc@ple@ple@pli@pli@pll@pll@pln@plo@plo@pls@plu@ply@ply@plz@pmi@pmo@pms@pnc@pne@png@pnp@pnw@poa@poc@poc@pod@pod@poe@poe@pof@pok@pol@pol@pom@pom@pon@pon@poo@poo@pop@pop@por@por@pos@pos@pot@pot@pou@pov@pow@pow@pox@poy@poz@ppa@ppc@ppe@ppe@ppg@ppi@ppl@ppm@ppo@ppp@pps@ppv@ppy@ppy@pra@pra@prc@pre@pre@pri@pri@prk@pro@pro@prs@pru@pry@psa@psb@psc@psd@pse@pse@psg@psi@psi@psl@psn@pso@psp@pss@pss@pst@psu@psu@psv@psy@psy@pta@ptc@pte@pti@pti@pto@pto@pts@ptv@pub@pub@puc@pud@pue@pug@pug@puj@puk@pul@pul@pum@pun@pun@pup@pup@pur@pur@pus@put@put@pvc@pvp@pvt@pwc@pye@pyg@pé@qad@qbs@qld@qld@qpr@qtr@qua@que@que@qui@qui@quo@quo@qur@raa@rab@rab@rac@rac@rad@rad@rae@rae@raf@raf@rag@rag@rah@rah@rai@rai@raj@raj@rak@rak@ral@ral@ram@ram@ran@ran@rao@rap@rap@raq@raq@rar@rar@ras@ras@rat@rat@rau@rav@rav@raw@raw@rax@ray@ray@raz@raz@rbc@rbi@rbs@rca@rcb@rcn@rda@rdr@rds@rea@reb@reb@rec@rec@red@red@ree@ree@ref@ref@reg@reg@reh@rei@rei@rek@rek@rel@rel@rem@rem@ren@ren@reo@reo@rep@rep@req@rer@rer@res@res@ret@ret@reu@reu@rev@rev@rew@rex@rex@rey@rey@rez@rez@rfc@rgb@rgv@rha@rhe@rhi@rho@rhp@rhs@rhu@rhy@ria@rib@rib@ric@ric@rid@rid@rie@rie@rif@rig@rig@rij@rik@rik@ril@ril@rim@rim@rin@rin@rio@rio@rip@rip@rir@ris@ris@rit@rit@riv@rix@rix@riz@riz@rly@rmb@rms@rna@rnb@rnc@roa@rob@rob@roc@roc@rod@rod@roe@roe@rof@rog@rog@roh@roh@roi@rok@rol@rol@rom@rom@ron@ron@roo@roo@rop@ror@ror@ros@ros@rot@rot@rou@rou@rov@row@row@rox@rox@roy@roy@roz@roz@rpa@rpg@rpm@rps@rrp@rrr@rsa@rsc@rsd@rsi@rsl@rsp@rss@rss@rtc@rte@rte@rtg@rti@rtr@rts@rtw@rub@rub@rud@rue@rue@rug@rug@rui@ruk@rum@rum@run@run@rup@rup@rus@rus@rut@rut@ruz@rva@rwa@rwc@rye@rye@ryn@ryo@rys@ryu@ryu@ré@saa@sab@sab@sac@sac@sad@sad@sae@sae@saf@saf@sag@sag@sah@sah@sai@sai@saj@sak@sak@sal@sal@sam@sam@san@san@sao@sap@sap@sar@sar@sas@sas@sat@sat@sau@sau@sav@sav@saw@saw@sax@sax@say@say@saz@sba@sbc@sbi@sbk@sbs@sbu@sbu@sby@sby@sca@scc@scd@sch@sch@sci@sci@sco@sco@scp@scr@scs@sct@scu@scu@scy@sda@sdc@sdf@sdg@sdk@sdn@sea@sea@seb@seb@sec@sec@sed@sed@see@see@sef@seg@seh@seh@sei@sei@sek@sek@sel@sel@sem@sem@sen@sen@seo@seo@sep@sep@seq@ser@ser@ses@ses@set@set@seu@sev@sev@sew@sex@sex@sey@sey@sez@sfa@sfb@sfc@sff@sfo@sfw@sfx@sga@sgh@sgo@sgo@sgt@sha@sha@shc@shd@she@she@shh@shi@shi@sho@sho@shp@shq@shr@shs@sht@shu@shu@shy@shy@sia@sic@sic@sid@sid@sie@sie@sif@sig@sig@sii@sik@sik@sil@sil@sim@sim@sin@sin@sio@sip@sir@sir@sis@sis@sit@sit@siu@six@six@sjo@ska@skc@ske@ske@ski@ski@sko@sko@sks@sku@sky@sky@sla@sla@slc@sle@sli@sli@slo@slo@slp@slr@sls@slt@slu@slu@slv@sly@sly@sma@sma@smb@smc@smc@smd@sme@sme@smg@smh@smi@smi@smm@smo@smo@smp@sms@smt@smu@smu@smw@smx@smy@sna@snc@sne@sne@snf@sng@sni@sni@snl@sno@sno@snp@sns@snt@snu@sny@snz@soa@sob@sob@soc@soc@sod@soe@soe@sof@sof@sog@soi@sok@sol@sol@som@som@son@son@soo@soo@sop@sop@sor@sor@sos@sos@sot@sot@sou@sou@sov@sow@sox@sox@soy@soy@spa@spa@spc@spd@spd@spe@spe@spf@spg@sph@sph@spi@spi@spl@spl@spn@spn@spo@spo@spp@spr@spr@sps@spu@spx@spy@spy@sql@sql@sqm@sqn@squ@src@sre@sri@sri@srk@srk@srl@srp@srs@srt@sru@ssa@ssb@ssc@ssc@ssd@sse@sse@ssf@ssg@ssh@ssi@ssi@ssl@ssn@sso@sso@ssp@ssr@sss@sst@ssu@ssw@ssy@ssy@sta@sta@stc@std@ste@ste@stg@sth@sth@sti@sti@stl@stl@stm@stn@sto@sto@stp@str@str@sts@stu@stu@stv@stv@stx@sty@sty@sua@sub@sub@suc@sud@sud@sue@sue@suf@suf@sug@sui@suk@suk@sul@sul@sum@sum@sun@sun@sup@sup@sur@sur@sus@sus@sut@sut@suv@suz@svc@sve@svp@svt@svu@swa@swa@swc@swe@swe@swi@swi@swo@swt@swx@sya@syd@syd@syl@sym@sym@syn@syn@sys@sze@szn@sé@taa@tab@tab@tac@tac@tad@tad@tae@tae@taf@tag@tag@tah@tah@tai@tai@taj@taj@tak@tak@tal@tal@tam@tam@tan@tan@tao@tao@tap@tap@tar@tar@tas@tas@tat@tat@tau@tau@taw@taw@tax@tax@tay@tay@taz@taz@tba@tbc@tbd@tbh@tbi@tbl@tbo@tbr@tbs@tbt@tca@tch@tch@tcm@tcm@tcs@tcu@tdf@tdi@tdp@tds@tea@tea@tec@tec@ted@ted@tee@tee@teh@teh@tej@tek@tek@tel@tel@tem@tem@ten@ten@teo@tep@ter@ter@tes@tes@tet@tet@teu@tex@tex@tey@tez@tfc@tfl@tfw@tha@tha@thc@thd@the@the@thi@thi@thm@thn@thn@tho@tho@thr@thr@ths@tht@thu@thu@thx@thy@thy@tia@tib@tic@tic@tid@tid@tie@tie@tif@tig@tik@tik@til@til@tim@tim@tin@tin@tio@tip@tip@tir@tir@tis@tis@tit@tit@tiv@tix@tiz@tko@tks@tlc@tle@tle@tls@tly@tly@tmc@tml@tmr@tms@tmw@tmz@tna@tng@tnt@tnx@toa@tob@toc@toc@tod@tod@toe@toe@tof@tog@toh@toi@toi@tok@tok@tol@tol@tom@tom@ton@ton@too@too@top@top@tor@tor@tos@tot@tot@tou@tou@tov@tow@tow@tox@tox@toy@toy@tpp@tps@tra@tra@trc@tre@tre@tri@tri@tro@tro@trs@tru@tru@trx@try@try@tsa@tsb@tsc@tsd@tse@tsh@tsi@tsi@tsk@tsm@tsn@tsn@tsp@tsu@tsu@tta@ttc@tte@tte@tti@ttm@tto@tto@ttp@ttr@tts@ttt@ttu@ttv@tty@tty@tua@tub@tub@tuc@tuc@tue@tuf@tug@tug@tuk@tuk@tul@tul@tum@tum@tun@tun@tup@tup@tur@tur@tus@tus@tut@tux@tux@tvc@tvd@tvn@tvs@twa@twc@twd@twd@twe@twi@two@two@twp@twt@twx@twy@txt@tya@tye@tyl@tym@tyr@tzu@té@té@uab@uae@ual@uan@uas@uav@uba@ubc@ubc@ube@ubi@ubs@uca@ucc@ucc@ucd@ucd@ucf@uch@uch@uci@uci@uck@ucl@ucl@ucn@uda@ude@ude@uel@uer@ues@ufc@ufc@uff@ufo@uga@ugh@ugh@ugu@uhc@uhh@uhm@uil@uit@uit@uji@uka@uke@uke@uki@uki@uko@uku@uku@ula@ula@ule@ulf@uli@uli@ull@ulo@ulo@ult@ulu@ulu@uly@uma@uma@umb@umc@umd@ume@umi@umi@umm@umm@ump@ums@umu@una@unc@unc@und@und@une@une@unf@ung@ung@unh@uni@uni@unk@unl@unn@uno@uno@uns@unt@unt@uof@uon@upa@upd@uph@upl@upp@upp@ups@ura@ura@urd@ure@ure@urg@uri@uri@url@urn@uro@uro@urs@urt@uru@uru@ury@ury@usa@usa@usb@usc@usc@usd@use@use@usf@usf@ush@ush@usi@usl@usm@usn@uso@usp@uss@uss@ust@ust@usu@usu@uta@uta@utc@utd@ute@ute@uth@uth@uti@utm@uto@uto@utr@uts@utt@utv@utz@uuu@uuu@uva@uwe@uwu@vaa@vac@vac@vad@vae@vag@vah@vai@vai@vaj@vak@vak@val@val@vam@van@van@vap@var@var@vas@vas@vat@vat@vau@vaw@vay@vaz@vcs@vcu@vea@vec@ved@ved@vee@vee@veg@veg@vel@vel@ven@ven@ver@ver@ves@ves@vet@vet@vex@vex@vey@vey@vez@vez@vfl@vfx@vhs@via@vic@vic@vid@vid@vie@vie@vig@vig@vii@vik@vik@vil@vil@vin@vin@vio@vio@vip@vip@vir@vir@vis@vis@vit@vit@viv@viv@vix@vix@viz@viz@vla@vma@voc@voc@vod@vod@vol@vol@vom@von@von@voo@vor@vor@vos@vot@vou@vow@vox@vox@voy@voy@vpn@vre@vre@vss@vue@vue@vul@waa@wab@wab@wac@wac@wad@wad@waf@wag@wag@wah@wah@wai@wai@waj@wak@wak@wal@wal@wam@wan@wan@wap@wap@waq@war@war@was@was@wat@wat@wau@wav@waw@wax@wax@way@way@waz@waz@wba@wbb@wbc@wbo@wbz@wcc@wcc@wcs@wcw@wdw@wea@wea@web@web@wec@wed@wed@wee@wee@wef@weg@weg@weh@weh@wei@wei@wel@wel@wen@wen@wer@wer@wes@wes@wet@wet@wex@wey@wey@wfa@wfc@wfp@wga@wgn@wha@wha@whe@whi@whi@whl@who@who@whs@wht@why@why@wib@wic@wid@wid@wie@wie@wif@wig@wig@wii@wil@wil@wim@wim@win@win@wip@wir@wir@wis@wis@wit@wit@wiv@wiz@wiz@wks@wku@wns@wnt@wny@wob@woc@wod@wof@woj@wok@wol@wol@wom@won@won@woo@woo@wor@wot@wou@wow@wow@woz@wpg@wps@wra@wra@wrc@wre@wri@wri@wro@wrs@wsb@wsj@wsl@wsu@wsu@wsw@wta@wtc@wtf@wth@wti@wto@wts@wud@wul@wur@wut@wvu@wvu@wwc@wwe@wwe@wwf@wwg@wwi@www@www@wwx@wyd@wye@wye@wyn@wyn@xan@xen@xer@xia@xia@xie@xie@xii@xim@xin@xin@xis@xit@xiv@xma@xon@xon@xox@xox@xpo@xrp@xvi@xxl@xxx@xxx@yaa@yaa@yab@yad@yad@yaf@yag@yah@yah@yak@yak@yal@yal@yam@yam@yan@yan@yao@yap@yap@yar@yar@yas@yas@yat@yat@yav@yaw@yay@yay@yaz@yaz@yds@yea@yed@yed@yee@yee@yeg@yeg@yeh@yel@yel@yen@yen@yeo@yeo@yep@yer@yer@yes@yes@yet@yev@yew@yey@ygk@ygo@yin@yin@yle@yle@ymc@ymi@ymm@yne@ynn@yof@yog@yog@yoh@yol@yol@yom@yom@yon@yon@yoo@yoo@yor@yor@yos@yot@you@you@yoy@ypg@yql@yqr@yrs@ysl@ysm@yst@ytd@yte@yuh@yui@yuk@yuk@yul@yum@yum@yun@yun@yup@yur@yuv@yvr@yxe@yya@yyc@yyc@yyj@yyy@yü@zab@zac@zac@zad@zad@zaf@zag@zag@zah@zah@zai@zai@zak@zak@zal@zal@zam@zam@zan@zan@zap@zar@zar@zas@zay@zeb@zed@zed@zee@zee@zek@zel@zel@zen@zen@zer@zer@zes@zet@zey@zhu@zia@zid@zie@zie@zig@zig@zik@zil@zil@zim@zim@zin@zin@zio@zip@zip@zir@zoe@zoe@zog@zol@zom@zon@zon@zoo@zoo@zor@zou@zul@zum@zun@zur@zyk@zyn@zza@zzi@zzo@zzy@zzy@zzz