| #@title - Instant (Simple) |
| import requests |
| import os |
| import subprocess |
| cek = subprocess.getoutput('nvidia-smi') |
| from google.colab.output import eval_js |
| os.environ['colab_url'] = eval_js("google.colab.kernel.proxyPort(7860, {'cache': false})") |
|
|
| if not 'T4' in cek: |
| print("[1;32m-----Your colab session is over. Use other google account or wait 12-24 hours-----") |
| print("-----Sesi colab elu udah habis bro. Saran gw tunggu 12-24 jam atau bikin/pake akun google lain-----") |
| raise KeyboardInterrupt |
|
|
|
|
| #thanks to https://github.com/camenduru for the fork |
| print('[1;32mInstalling dependencies...') |
| print('[1;32m(This process will only happen once per session)') |
| print('[0m') |
| %cd /content |
| #!if ! [ -f xformers ]; then pip install -q https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.16/xformers-0.0.16+814314d.d20230118-cp38-cp38-linux_x86_64.whl; pip install -q --pre triton; touch xformers; fi |
| if not os.path.isfile('dependencies'): |
| !gdown http://launchpadlibrarian.net/367274644/libgoogle-perftools-dev_2.5-2.2ubuntu3_amd64.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/google-perftools_2.5-2.2ubuntu3_all.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/libtcmalloc-minimal4_2.5-2.2ubuntu3_amd64.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/libgoogle-perftools4_2.5-2.2ubuntu3_amd64.deb |
| !apt install -qq libunwind8-dev |
| !dpkg -i *.deb |
| %env LD_PRELOAD=libtcmalloc.so |
| !rm *.deb |
| # print("Grabbing pre-built xformers from camenduru's repo") |
| # url = 'https://api.github.com/repos/camenduru/stable-diffusion-webui-colab/releases/latest' |
| # response = requests.get(url) |
| # print("Status code: " + str(response.status_code)) |
| # if response.status_code == 200: |
| # data = response.json() |
| # templink = [link for link in [asset['browser_download_url'] for asset in data['assets'] if 'cp39' in asset['name']]] |
| # xformerlink = templink[0] |
| # else: |
| # print("Request failed, loading last updated xformers instead") |
| # xformerlink = 'https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.17/xformers-0.0.17+b6be33a.d20230315-cp39-cp39-linux_x86_64.whl' |
| # !pip install -q --pre xformers |
| !pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 torchtext==0.14.1 torchdata==0.5.1 --extra-index-url https://download.pytorch.org/whl/cu116 -U |
| !pip install -q xformers==0.0.16 triton==2.0.0 -U |
| # !pip install -q --pre xformers==0.0.17.dev476 -U |
| # !pip install -q --pre triton |
| !touch dependencies |
|
|
| print('[1;32mInstalling webui...') |
| print('[0m') |
| !if ! [ -d stable-diffusion-webui ]; then git clone -b v2.1 https://github.com/camenduru/stable-diffusion-webui; touch forkedwebui; fi |
| %cd stable-diffusion-webui |
|
|
| #AnythingV3 Model & Vae |
| print('[1;32mDownloading AnythingV3 model...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui/models/Stable-diffusion/ |
| !if ! [ -f Anything-V3.0.safetensors ]; then gdown https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/anything-v3-fp32-pruned.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.safetensors; fi |
| !if ! [ -f Anything-V3.0.vae.pt ]; then gdown https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -O /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.vae.pt; fi |
|
|
| #webui setup for nai |
| print('[1;32mSetting UI configs...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui |
| !if [ -f configinstan ]; then rm configinstan; fi |
| !if ! [ -f configinstanlite ]; then gdown https://pastebin.com/raw/fmN0i5Sd -O /content/stable-diffusion-webui/ui-config.json && gdown https://pastebin.com/raw/amVtB1NW -O /content/stable-diffusion-webui/config.json; fi |
| !if ! [ -f configinstanlite ]; then mv /content/stable-diffusion-webui/modules/ui.py /content/stable-diffusion-webui/modules/ui_backup.py && gdown https://pastebin.com/raw/pKFWUfLM -O /content/stable-diffusion-webui/modules/ui.py; fi |
| !touch configinstanlite |
|
|
| #notification bell |
| !gdown https://github.com/etherealxx/etherportal-webui-colab/raw/master/notification.mp3 -O /content/stable-diffusion-webui/notification.mp3 |
|
|
| #foolhardy remacri |
| ! [ ! -d models/ESRGAN ] && mkdir -p models/ESRGAN; [ ! -f models/ESRGAN/4x_foolhardy_Remacri.pth ] && gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/4x_foolhardy_Remacri.pth -O /content/stable-diffusion-webui/models/ESRGAN/4x_foolhardy_Remacri.pth |
|
|
| #extensions |
| print('[1;32mInstalling extensions...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui/extensions |
| !bash -c 'for repo in camenduru/stable-diffusion-webui-images-browser Extraltodeus/depthmap2mask ddPn08/kohya-sd-scripts-webui arenatemp/stable-diffusion-webui-model-toolkit; do if [ ! -d "repo" && true; fi; done' #DominikDoom/a1111-sd-webui-tagcomplete |
| !bash -c 'for repo in sd-civitai-browser kohya-sd-scripts-webui stable-diffusion-webui-model-toolkit batchlinks-webui; do if [ -d " |
| repo && true; fi; done' |
| #%cd /content/stable-diffusion-webui/extensions/UnivAICharGen |
| #!git checkout c56b5146049b91cfcd645c62bd356bd0631c4131 . |
| !git clone -b pre-embedding --single-branch https://github.com/etherealxx/Umi-AI |
|
|
| #badprompt & badartist |
| %cd /content/stable-diffusion-webui/embeddings/ |
| !if ! [ -f bad_prompt.pt ]; then gdown https://huggingface.co/datasets/Nerfgun3/bad_prompt/resolve/main/bad_prompt_version2.pt -O /content/stable-diffusion-webui/embeddings/bad_prompt.pt; fi |
| !if ! [ -f bad_artist.pt ]; then gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/bad_artist.pt -O /content/stable-diffusion-webui/embeddings/bad_artist.pt; fi |
| !if ! [ -f bad_hands.pt ]; then gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/bad-hands-5.pt -O /content/stable-diffusion-webui/embeddings/bad_hands.pt; fi |
|
|
| #some fix |
| !sed -i -e '''/ prepare_environment()/a\ os.system\(f\"""sed -i -e ''\"s/dict()))/dict())).cuda()/g\"'' /content/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/util.py""")''' /content/stable-diffusion-webui/launch.py |
| !sed -i -e 's/fastapi==0.90.1/fastapi==0.89.1/g' /content/stable-diffusion-webui/requirements_versions.txt |
|
|
| print('[1;32mInstallation Success!') |
| print('[1;32mLaunching the webui...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui |
| !python launch.py --ckpt /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.safetensors --vae-path /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.vae.pt --share --xformers --enable-insecure-extension-access --gradio-queue |
| |
|
|
| #@title - Instant (Advanced) |
| import requests |
| import os |
| import subprocess |
| cek = subprocess.getoutput('nvidia-smi') |
| if not 'T4' in cek: |
| print("[1;32m-----Your colab session is over. Use other google account or wait 12-24 hours-----") |
| print("-----Sesi colab elu udah habis bro. Saran gw tunggu 12-24 jam atau bikin/pake akun google lain-----") |
| raise KeyboardInterrupt |
| from google.colab.output import eval_js |
| os.environ['colab_url'] = eval_js("google.colab.kernel.proxyPort(7860, {'cache': false})") |
|
|
| #thanks to https://github.com/camenduru for the fork |
| print('[1;32mInstalling dependencies...') |
| print('[1;32m(This process will only happen once per session)') |
| print('[0m') |
| %cd /content |
| #!if ! [ -f xformers ]; then pip install -q https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.16/xformers-0.0.16+814314d.d20230118-cp38-cp38-linux_x86_64.whl; pip install -q --pre triton; touch xformers; fi |
| if not os.path.isfile('dependencies'): |
| !gdown http://launchpadlibrarian.net/367274644/libgoogle-perftools-dev_2.5-2.2ubuntu3_amd64.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/google-perftools_2.5-2.2ubuntu3_all.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/libtcmalloc-minimal4_2.5-2.2ubuntu3_amd64.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/libgoogle-perftools4_2.5-2.2ubuntu3_amd64.deb |
| !apt install -qq libunwind8-dev |
| !dpkg -i *.deb |
| %env LD_PRELOAD=libtcmalloc.so |
| !rm *.deb |
| # print("Grabbing pre-built xformers from camenduru's repo") |
| # url = 'https://api.github.com/repos/camenduru/stable-diffusion-webui-colab/releases/latest' |
| # response = requests.get(url) |
| # print("Status code: " + str(response.status_code)) |
| # if response.status_code == 200: |
| # data = response.json() |
| # templink = [link for link in [asset['browser_download_url'] for asset in data['assets'] if 'cp39' in asset['name']]] |
| # xformerlink = templink[0] |
| # else: |
| # print("Request failed, loading last updated xformers instead") |
| # xformerlink = 'https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.17/xformers-0.0.17+b6be33a.d20230315-cp39-cp39-linux_x86_64.whl' |
| # !pip install -q --pre xformers |
| !pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 torchtext==0.14.1 torchdata==0.5.1 --extra-index-url https://download.pytorch.org/whl/cu116 -U |
| !pip install -q xformers==0.0.16 triton==2.0.0 -U |
| # !pip install -q --pre xformers==0.0.17.dev476 -U |
| # !pip install -q --pre triton |
| !touch dependencies |
|
|
| print('[1;32mInstalling webui...') |
| print('[0m') |
| !if ! [ -d stable-diffusion-webui ]; then git clone -b v2.1 https://github.com/camenduru/stable-diffusion-webui; touch forkedwebui; fi |
| %cd stable-diffusion-webui |
|
|
| #AnythingV3 Model & Vae |
| print('[1;32mDownloading AnythingV3 model...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui/models/Stable-diffusion/ |
| !if ! [ -f Anything-V3.0.safetensors ]; then gdown https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/anything-v3-fp32-pruned.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.safetensors; fi |
| !if ! [ -f Anything-V3.0.vae.pt ]; then gdown https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -O /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.vae.pt; fi |
|
|
| #webui setup for nai |
| print('[1;32mSetting UI configs...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui |
| !if [ -f configinstanlite ]; then rm configinstanlite && rm /content/stable-diffusion-webui/modules/ui.py && mv /content/stable-diffusion-webui/modules/ui_backup.py /content/stable-diffusion-webui/modules/ui.py; fi |
| !if ! [ -f configinstan ]; then gdown https://pastebin.com/raw/gMTvTUUZ -O /content/stable-diffusion-webui/ui-config.json && gdown https://pastebin.com/raw/VviKmfiQ -O /content/stable-diffusion-webui/config.json; fi |
| !touch configinstan |
|
|
| #notification bell |
| !gdown https://github.com/etherealxx/etherportal-webui-colab/raw/master/notification.mp3 -O /content/stable-diffusion-webui/notification.mp3 |
|
|
| #foolhardy remacri |
| ! [ ! -d models/ESRGAN ] && mkdir -p models/ESRGAN; [ ! -f models/ESRGAN/4x_foolhardy_Remacri.pth ] && gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/4x_foolhardy_Remacri.pth -O /content/stable-diffusion-webui/models/ESRGAN/4x_foolhardy_Remacri.pth |
|
|
| #extensions |
| print('[1;32mInstalling extensions...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui/extensions |
| !bash -c 'for repo in camenduru/stable-diffusion-webui-images-browser camenduru/sd-civitai-browser Extraltodeus/depthmap2mask ddPn08/kohya-sd-scripts-webui arenatemp/stable-diffusion-webui-model-toolkit etherealxx/batchlinks-webui; do if [ ! -d " |
| repo" && true; fi; done' #DominikDoom/a1111-sd-webui-tagcomplete |
| # !git clone -b lora --single-branch https://github.com/etherealxx/sd-civitai-browser |
| !git clone -b pre-embedding --single-branch https://github.com/etherealxx/Umi-AI |
| #%cd /content/stable-diffusion-webui/extensions/UnivAICharGen |
| #!git checkout c56b5146049b91cfcd645c62bd356bd0631c4131 . |
|
|
| #badprompt & badartist |
| %cd /content/stable-diffusion-webui/embeddings/ |
| !if ! [ -f bad_prompt.pt ]; then gdown https://huggingface.co/datasets/Nerfgun3/bad_prompt/resolve/main/bad_prompt_version2.pt -O /content/stable-diffusion-webui/embeddings/bad_prompt.pt; fi |
| !if ! [ -f bad_artist.pt ]; then gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/bad_artist.pt -O /content/stable-diffusion-webui/embeddings/bad_artist.pt; fi |
| !if ! [ -f bad_hands.pt ]; then gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/bad-hands-5.pt -O /content/stable-diffusion-webui/embeddings/bad_hands.pt; fi |
|
|
| #some fix |
| !sed -i -e '''/ prepare_environment()/a\ os.system\(f\"""sed -i -e ''\"s/dict()))/dict())).cuda()/g\"'' /content/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/util.py""")''' /content/stable-diffusion-webui/launch.py |
| !sed -i -e 's/fastapi==0.90.1/fastapi==0.89.1/g' /content/stable-diffusion-webui/requirements_versions.txt |
|
|
| print('[1;32mInstallation Success!') |
| print('[1;32mLaunching the webui...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui |
| !python launch.py --ckpt /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.safetensors --vae-path /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.vae.pt --share --xformers --enable-insecure-extension-access --gradio-queue |
| |
|
|
| #@title (for mobile/android user, run this first before Instant/Manual) |
|
|
| %%html |
| Press play on the music player to keep the tab alive (Uses only 13MB of data) |
|
|
| Untuk pengguna mobile, tekan play di musik di bawah |
| Fungsinya agar bisa make Colabnya lebih lama (make kuota 13MB) |
| - Manual (Open Dropdown👇) |
|
|
| Run the 1. installation cell |
| Choose your desired model, then run the 2. Download Model cell (you can repeat this step to download several model before you launch the webui) |
| Open the dropdown of 3. Run (Choose one👇), then choose one of the two available methods (doesn't matter which one) |
|
|
|
|
| #@title 1. Installation |
| webui_version = "camenduru's fork (stable)" #@param ["camenduru's fork (stable)", "original automatic1111 repo (latest feature, might be buggy)"] |
| import shutil |
| import os |
| import requests |
| import subprocess |
| cek = subprocess.getoutput('nvidia-smi') |
| if not 'T4' in cek: |
| print("[1;32m-----Your colab session is over. Use other google account or wait 12-24 hours-----") |
| print("-----Sesi colab elu udah habis bro. Saran gw tunggu 12-24 jam atau bikin/pake akun google lain-----") |
| raise KeyboardInterrupt |
| from google.colab.output import eval_js |
| os.environ['colab_url'] = eval_js("google.colab.kernel.proxyPort(7860, {'cache': false})") |
|
|
|
|
| print('[1;32mInstalling dependencies...') |
| print('[1;32m(This process will only happen once per session)') |
| print('[0m') |
| %cd /content |
| #!if ! [ -f xformers ]; then pip install -q https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.16/xformers-0.0.16+814314d.d20230118-cp38-cp38-linux_x86_64.whl; pip install -q --pre triton; touch xformers; fi |
| if not os.path.isfile('dependencies'): |
| !gdown http://launchpadlibrarian.net/367274644/libgoogle-perftools-dev_2.5-2.2ubuntu3_amd64.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/google-perftools_2.5-2.2ubuntu3_all.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/libtcmalloc-minimal4_2.5-2.2ubuntu3_amd64.deb |
| !gdown https://launchpad.net/ubuntu/+source/google-perftools/2.5-2.2ubuntu3/+build/14795286/+files/libgoogle-perftools4_2.5-2.2ubuntu3_amd64.deb |
| !apt install -qq libunwind8-dev |
| !dpkg -i *.deb |
| %env LD_PRELOAD=libtcmalloc.so |
| !rm *.deb |
| # print("Grabbing pre-built xformers from camenduru's repo") |
| # url = 'https://api.github.com/repos/camenduru/stable-diffusion-webui-colab/releases/latest' |
| # response = requests.get(url) |
| # print("Status code: " + str(response.status_code)) |
| # if response.status_code == 200: |
| # data = response.json() |
| # templink = [link for link in [asset['browser_download_url'] for asset in data['assets'] if 'cp39' in asset['name']]] |
| # xformerlink = templink[0] |
| # else: |
| # print("Request failed, loading last updated xformers instead") |
| # xformerlink = 'https://github.com/camenduru/stable-diffusion-webui-colab/releases/download/0.0.17/xformers-0.0.17+b6be33a.d20230315-cp39-cp39-linux_x86_64.whl' |
| # !pip install -q --pre xformers |
| !pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 torchtext==0.14.1 torchdata==0.5.1 --extra-index-url https://download.pytorch.org/whl/cu116 -U |
| !pip install -q xformers==0.0.16 triton==2.0.0 -U |
| # !pip install -q --pre xformers==0.0.17.dev476 -U |
| # !pip install -q --pre triton |
| !touch dependencies |
|
|
| print('[1;32mInstalling webui...') |
| print('[0m') |
| if webui_version=="camenduru's fork (stable)": |
| !if ! [ -f forkedwebui ]; then echo "cloning from camenduru's fork"; rm -rf stable-diffusion-webui; git clone -b v2.1 https://github.com/camenduru/stable-diffusion-webui; sed -i -e '''/ prepare_environment()/a\ os.system\(f\"""sed -i -e ''\"s/dict()))/dict())).cuda()/g\"'' /content/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/util.py""")''' /content/stable-diffusion-webui/launch.py; sed -i -e 's/fastapi==0.90.1/fastapi==0.89.1/g' /content/stable-diffusion-webui/requirements_versions.txt; touch forkedwebui; fi |
| else: |
| !if [ -f forkedwebui ]; then rm forkedwebui; mv '/content/stable-diffusion-webui/models/Stable-diffusion' '/content/temp'; rm -rf stable-diffusion-webui; fi |
| !if ! [ -d stable-diffusion-webui ]; then echo "cloning from official repo"; git clone https://github.com/automatic1111/stable-diffusion-webui; cp -rf '/content/temp'/* '/content/stable-diffusion-webui/models/Stable-diffusion'; rm -rf '/content/temp'; fi |
| %cd stable-diffusion-webui |
|
|
| #webui setup for nai |
| print('[1;32mSetting UI configs...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui |
| !if [ -f configinstanlite ]; then rm configinstanlite && rm /content/stable-diffusion-webui/modules/ui.py && mv /content/stable-diffusion-webui/modules/ui_backup.py /content/stable-diffusion-webui/modules/ui.py; fi |
| !if ! [ -f configinstan ]; then gdown https://pastebin.com/raw/gMTvTUUZ -O /content/stable-diffusion-webui/ui-config.json && gdown https://pastebin.com/raw/VviKmfiQ -O /content/stable-diffusion-webui/config.json; fi |
| !touch configinstan |
|
|
| #notification bell |
| !gdown https://github.com/etherealxx/etherportal-webui-colab/raw/master/notification.mp3 -O /content/stable-diffusion-webui/notification.mp3 |
|
|
| #foolhardy remacri |
| ! [ ! -d models/ESRGAN ] && mkdir -p models/ESRGAN; [ ! -f models/ESRGAN/4x_foolhardy_Remacri.pth ] && gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/4x_foolhardy_Remacri.pth -O /content/stable-diffusion-webui/models/ESRGAN/4x_foolhardy_Remacri.pth |
|
|
| #temporaryfix |
|
|
| #extensions |
| print('[1;32mInstalling extensions...') |
| print('[0m') |
| %cd /content/stable-diffusion-webui/extensions |
| !bash -c 'for repo in camenduru/stable-diffusion-webui-images-browser camenduru/sd-civitai-browser Extraltodeus/depthmap2mask kohya-ss/sd-webui-additional-networks etherealxx/batchlinks-webui; do if [ ! -d " |
| repo" && true; fi; done' #DominikDoom/a1111-sd-webui-tagcomplete |
| !git clone -b pre-embedding --single-branch https://github.com/etherealxx/Umi-AI |
| #%cd /content/stable-diffusion-webui/extensions/UnivAICharGen |
| #!if [ -f forkedwebui ]; then git checkout c56b5146049b91cfcd645c62bd356bd0631c4131 .; fi |
| # !git clone -b lora --single-branch https://github.com/etherealxx/sd-civitai-browser |
|
|
| #badprompt & badartist |
| %cd /content/stable-diffusion-webui/embeddings/ |
| !if ! [ -f bad_prompt.pt ]; then gdown https://huggingface.co/datasets/Nerfgun3/bad_prompt/resolve/main/bad_prompt_version2.pt -O /content/stable-diffusion-webui/embeddings/bad_prompt.pt; fi |
| !if ! [ -f bad_artist.pt ]; then gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/bad_artist.pt -O /content/stable-diffusion-webui/embeddings/bad_artist.pt; fi |
| !if ! [ -f bad_hands.pt ]; then gdown https://huggingface.co/etherealxx/whoseisthis/resolve/main/bad-hands-5.pt -O /content/stable-diffusion-webui/embeddings/bad_hands.pt; fi |
|
|
| print('[1;32mInstallation Success!') |
| print('[0m') |
| |
|
|
| #@title 2. Download Model |
| Model_to_download="Anythingv3" #@param [ "Anythingv3", "WaifuDiffusion-Vae", "Eimis", "EvtV3", "ACertain", "ElysiumV3", "Wlop-any", "LeafMix", "Abyss7thLayer", "Healys", "LigneClaire", "KriboMix", "InizioSkinjob", "PantyStocking", "WaifuBodyBlenderMix", "StuffyMix", "AbyssOrangeMix2", "AbyssOrangeMix3", "8528", "AmbrosiaFusion", "AniMeth", "AnythingV4.0", "ArchonInstagram", "CounterveitV2.5", "CounterveitV2.2", "CounterveitV2.2", "HD-17", "HDDreamGape", "MomochaMix", "Mozarella", "PadoruDiffusion", "PastelMix", "Protothing", "Shirayuki", "NutMegMix", "KaniAnime", "EverythingMix", "BlossomExtract", "HentaiElysium", "BerryMix", "Systemy-CSR", "ElyOrangeMix", "AnyTwamMix", "DarkberryMix", "Grapefruit", "Mitsudoue"] |
| #@markdown Confused on what model to choose? Look for examples and comparison [here](https://github.com/etherealxx/etherportal-webui-colab/blob/master/ModelComparison.md). |
| #@markdown If the download speed is slow (Below 10MiB/s), press the stop button then re-run the cell) |
| #@markdown If the model you wanted isn't listed, and you have the direct link, paste it to the form below. (Supported link: Huggingface, MEGA) |
| optional_direct_link='' #@param {type:"string"} |
|
|
| import os |
| import urllib.request, subprocess, contextlib #these handle mega.nz |
| from IPython.display import clear_output #this also handle mega.nz |
| from IPython.utils import capture |
| import requests |
| from tqdm import tqdm |
|
|
| folder = '/content/stable-diffusion-webui/models/Stable-diffusion/' |
|
|
| def checkdownloaded(pathx): |
| if os.path.exists(pathx) or (os.path.exists(os.path.join(folder, 'Anything-V3.0.safetensors')) and Model_to_download=="Anythingv3"): |
|
|
| if pathx.endswith("tmp"): |
| os.remove(pathx) |
| else: |
| print(f'[1;32mThat model is already downloaded.') |
| print('[0m') |
| return 2 |
|
|
| #civitstuff |
| checkerpath = os.path.join(folder, 'civitmodel.txt') |
| alreadythere = False |
|
|
| def checkearlycivit(): |
| alreadythere = False |
| lines = [] |
| if not os.path.exists(checkerpath): |
| !touch {checkerpath} |
| #check for unavailable model first |
| if os.stat(checkerpath).st_size != 0: |
| with open(checkerpath, "r") as file: |
| for line in file: |
| key, value = line.strip().split(" = ") |
| modelfile = os.path.join(folder, value) |
| if os.path.exists(modelfile): |
| lines.append(line) |
| if key == Model_to_download: |
| alreadythere = True |
| else: |
| print(f"Seems like {key} model is not found on the model folder.") |
| print() |
|
|
| with open(checkerpath, "w") as file: |
| file.writelines(lines) |
|
|
| if alreadythere == True: return 2 |
| |
| def civitgetpath(modelname): |
| with open(checkerpath, "r") as file: |
| for line in file: |
| key, value = line.strip().split(" = ") |
| if key == modelname: |
| return os.path.join(folder, value) |
|
|
| def civitwrite(modelname): |
| towrite = f"{Model_to_download} = {modelname}" |
| with open(checkerpath, "a") as file: |
| file.write(towrite + "\n") |
| #civitstuffend |
|
|
| def download_hf(link): |
| filename = link.rsplit('/', 1)[-1] |
| if Model_to_download == 'WaifuDiffusion-Vae': |
| filename = 'WD-vae.vae.pt' |
| elif Model_to_download == 'Anythingv3': |
| filename = 'Anything-V3.0.safetensors' |
|
|
| hfpath = os.path.join(folder, filename) |
| check = checkdownloaded(hfpath) |
| if check == 2: |
| if Model_to_download=='Anythingv3' and not os.path.exists(os.path.join(folder, 'Anything-V3.0.vae.pt')): |
| !gdown https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -O /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.vae.pt |
| return |
|
|
| print(f'\033[1;32mDownloading {Model_to_download} Model...\033[0m') |
| !gdown {link} -O /content/stable-diffusion-webui/models/Stable-diffusion/{filename} |
| if Model_to_download=='Anythingv3': |
| !gdown https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -O /content/stable-diffusion-webui/models/Stable-diffusion/Anything-V3.0.vae.pt |
| print(f'\033[1;32mModel Downloaded.\033[0m') |
|
|
| def download_civit(url): |
| print(f'\033[1;32mDownloading {Model_to_download} Model...\033[0m') |
|
|
| head_response = requests.head(url) |
| total = int(head_response.headers.get('Content-Length', 0)) |
| civitcheck = checkearlycivit() |
| if civitcheck == 2: #model exist |
| civitpath = civitgetpath(Model_to_download) |
| downloaded_size = os.path.getsize(civitpath) |
| if total != 0 and downloaded_size != total: |
| os.remove(civitpath) |
| checkearlycivit() |
| print(f'Removed incomplete download: {Model_to_download}') |
| else: |
| print(f'[1;32mThat model is already downloaded.') |
| print('[0m') |
| return |
|
|
| downloaded_size = 0 |
|
|
| if not civitcheck == 2: |
| pathtemp = os.path.join(folder, Model_to_download + ".bdgh") |
| print(f'The model "{Model_to_download}" will be renamed correctly after downloading') |
| with open(pathtemp, 'wb') as file, tqdm( |
| desc=pathtemp, |
| total=total, |
| unit='iB', |
| unit_scale=True, |
| unit_divisor=1024, |
| initial=downloaded_size, |
| ) as bar: |
| resp = requests.get(url, stream=True) |
|
|
| for data in resp.iter_content(chunk_size=1024): |
| size = file.write(data) |
| bar.update(size) |
| # Check if the file has been downloaded successfully |
| downloaded_size = os.path.getsize(pathtemp) |
| if (total != 0 and downloaded_size != total) or (downloaded_size < 1000): |
| # Remove the file if it has not been downloaded successfully |
| os.remove(pathtemp) |
| print() |
| if downloaded_size < 1000: |
| print(f'The model "{Model_to_download}" is probably had the link changed. Contact the owner of this repo.') |
| else: |
| print(f'Removed incomplete download: {Model_to_download}') |
| return |
| actualfilename = resp.headers['Content-Disposition'].split("filename=")[1].strip('"') |
| #%cd {folder} |
| os.rename(pathtemp, os.path.join(folder, actualfilename)) |
| print (f'Model "{Model_to_download}.bdgh" renamed to "{actualfilename}"') |
| civitwrite(actualfilename) |
| print(f'\033[1;32mModel Downloaded.\033[0m') |
|
|
|
|
| print('[1;32mInstalling webui...') |
| with capture.capture_output() as cap: |
| %cd /content |
| !if ! [ -d stable-diffusion-webui ]; then git clone -b v1.6 https://github.com/camenduru/stable-diffusion-webui; touch forkedwebui; fi |
| print('[0m') |
| !if [ -f {folder}'Put Stable Diffusion checkpoints here.txt' ]; then rm {folder}'Put Stable Diffusion checkpoints here.txt'; fi |
|
|
| %cd {folder} |
| #sfw |
| if Model_to_download=='Anythingv3': |
| download_hf('https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/anything-v3-fp32-pruned.safetensors') |
| if Model_to_download=='WaifuDiffusion-Vae': |
| download_hf('https://huggingface.co/hakurei/waifu-diffusion-v1-4/resolve/main/vae/kl-f8-anime2.ckpt') |
| if Model_to_download=='Eimis': |
| download_hf('https://huggingface.co/eimiss/EimisAnimeDiffusion_1.0v/resolve/main/EimisAnimeDiffusion_1-0v.ckpt') |
| if Model_to_download=='EvtV3': |
| download_hf('https://huggingface.co/haor/Evt_V3/resolve/main/Evt_V3_ema.ckpt') |
| if Model_to_download=='ACertain': |
| download_hf('https://huggingface.co/JosephusCheung/ACertainModel/resolve/main/ACertainModel.ckpt') |
| if Model_to_download=='ElysiumV3': |
| download_hf('https://huggingface.co/hesw23168/SD-Elysium-Model/resolve/main/Elysium_Anime_V3.safetensors') |
| if Model_to_download=='Wlop-any': |
| download_hf('https://huggingface.co/SirVeggie/wlop/resolve/main/wlop-any.ckpt') |
| if Model_to_download=='LeafMix': |
| download_hf('https://huggingface.co/etherealxx/anyleaf-temp/resolve/main/Leaf-pruned.safetensors') |
| if Model_to_download=='Abyss7thLayer': |
| download_hf('https://huggingface.co/syaimu/7th_Layer/resolve/main/7th_layer/Abyss_7th_layer.ckpt') |
| if Model_to_download=='Healys': |
| download_civit('https://civitai.com/api/download/models/1498') |
| if Model_to_download=='LigneClaire': |
| download_hf('https://huggingface.co/breakcore2/ligne_claire_anime_diffusion/resolve/main/ligne_claire_anime_diffusion_v1.safetensors') |
| if Model_to_download=='KriboMix': |
| download_civit('https://civitai.com/api/download/models/1289') |
| if Model_to_download=='InizioSkinjob': |
| download_hf('https://huggingface.co/Cinnamomo/inizio/resolve/main/safetensor/inizio_skinjob.safetensors') |
| if Model_to_download=='PantyStocking': |
| download_civit('https://civitai.com/api/download/models/1560') |
| if Model_to_download=='WaifuBodyBlenderMix': |
| download_civit('https://civitai.com/api/download/models/1838') |
| if Model_to_download=='StuffyMix': |
| download_civit('https://civitai.com/api/download/models/3376') |
| if Model_to_download=='AbyssOrangeMix2': |
| download_hf('https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors') |
| if Model_to_download=='AbyssOrangeMix3': |
| download_hf('https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3 |
| .safetensors') |
| if Model_to_download=='8528': |
| download_hf('https://huggingface.co/ckpt/8528-diffusion/resolve/main/8528d-final.ckpt') |
| if Model_to_download=='AmbrosiaFusion': |
| download_hf('https://huggingface.co/NiteStormz/ProtoThing_200/resolve/main/AmbrosiaFusion.ckpt') |
| if Model_to_download=='AniMeth': |
| download_hf('https://huggingface.co/Rasgeath/self_made_sauce/resolve/main/AniMeth.safetensors') |
| if Model_to_download=='AnythingV4.0': |
| download_hf('https://huggingface.co/andite/anything-v4.0/resolve/main/anything-v4.0-pruned.safetensors') |
| if Model_to_download=='ArchonInstagram': |
| download_hf('https://huggingface.co/misobarisic/playground/resolve/main/ArchonInstagram-fp16.ckpt') |
| if Model_to_download=='CounterveitV2.5': |
| download_hf('https://huggingface.co/gsdf/Counterfeit-V2.5/resolve/main/Counterfeit-V2.5_pruned.safetensors') |
| if Model_to_download=='CounterveitV2.2': |
| download_hf('https://huggingface.co/gsdf/Counterfeit-V2.5/resolve/main/Counterfeit-V2.2.safetensors') |
| if Model_to_download=='CounterveitV2.2': |
| download_hf('https://huggingface.co/gsdf/Counterfeit-V2.5/resolve/main/Counterfeit-V2.2.safetensors') |
| if Model_to_download=='HD-17': |
| download_hf('https://huggingface.co/Deltaadams/HentaiDiffusion/resolve/main/HD-17.ckpt') |
| if Model_to_download=='HDDreamGape': |
| download_hf('https://huggingface.co/Horsebird/HDDream-G/resolve/main/HDDream-Gape.safetensors') |
| if Model_to_download=='MomochaMix': |
| download_hf('https://huggingface.co/NoCrypt/momocha-mix/resolve/main/momocha-6E7-0.315-AD-E7-0.15-WS.ckpt') |
| if Model_to_download=='Mozarella': |
| download_hf('https://huggingface.co/Rasgeath/self_made_sauce/resolve/main/Mozzarella-pruned.safetensors') |
| if Model_to_download=='PadoruDiffusion': |
| download_hf('https://huggingface.co/misobarisic/playground/resolve/main/padoruDiffusion_1.ckpt') |
| if Model_to_download=='PastelMix': |
| download_hf('https://huggingface.co/andite/pastel-mix/resolve/main/pastelmix-fp32.safetensors') |
| if Model_to_download=='Protothing': |
| download_hf('https://huggingface.co/NiteStormz/ProtoThing_200/resolve/main/ProtoThing_200.ckpt') |
| if Model_to_download=='Shirayuki': |
| download_hf('https://huggingface.co/hesw23168/SD_Shirayuki_Model/resolve/main/Shirayuki_Anime_V1-fp16.safetensors') |
| if Model_to_download=='NutMegMix': |
| download_hf('https://huggingface.co/acheong08/nutmegmix/resolve/main/nutmegmix.safetensors') |
| if Model_to_download=='KaniAnime': |
| download_hf('https://huggingface.co/Rasgeath/self_made_sauce/resolve/main/Kani-anime-pruned.ckpt') |
| if Model_to_download=='EverythingMix': |
| download_hf('https://huggingface.co/DrBob2142/Everything/resolve/main/Everything%20V1B.safetensors') |
| if Model_to_download=='BlossomExtract': |
| download_hf('https://huggingface.co/NUROISEA/anything-mix/resolve/main/blossom-extract.safetensors') |
| if Model_to_download=='HentaiElysium': |
| download_hf('https://huggingface.co/NUROISEA/anything-mix/resolve/main/hentai-elysium-50.safetensors') |
|
|
| #nsfw |
| if Model_to_download=='BerryMix': |
| download_hf('https://huggingface.co/misobarisic/berry-mix/resolve/main/berry_mix.ckpt') |
| if Model_to_download=='Systemy-CSR': |
| download_hf('https://huggingface.co/etherealxx/systemy-csrmodel-cutesexyrobutts/resolve/main/CSRmodel_1-CSRmodel_0-Weighted_sum-merged.ckpt') |
| if Model_to_download=='ElyOrangeMix': |
| download_hf('https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/ElyOrangeMix/ElyOrangeMix.ckpt') |
| if Model_to_download=='AnyTwamMix': |
| download_civit('https://civitai.com/api/download/models/4527') |
| if Model_to_download=='DarkberryMix': |
| download_civit('https://civitai.com/api/download/models/1992') |
| if Model_to_download=='Grapefruit': |
| download_civit('https://civitai.com/api/download/models/6360') |
| if Model_to_download=='Mitsudoue': |
| download_civit('https://civitai.com/api/download/models/1454') |
|
|
| #these code below handle mega.nz |
| def unbuffered(proc, stream='stdout'): |
| stream = getattr(proc, stream) |
| with contextlib.closing(stream): |
| while True: |
| out = [] |
| last = stream.read(1) |
| # Don't loop forever |
| if last == '' and proc.poll() is not None: |
| break |
| while last not in newlines: |
| # Don't loop forever |
| if last == '' and proc.poll() is not None: |
| break |
| out.append(last) |
| last = stream.read(1) |
| out = ''.join(out) |
| yield out |
|
|
| def transfare(): |
| import codecs |
| decoder = codecs.getincrementaldecoder("UTF-8")() |
| cmd = ["mega-get", optional_direct_link, folder] |
| proc = subprocess.Popen( |
| cmd, |
| stdout=subprocess.PIPE, |
| stderr=subprocess.STDOUT, |
| universal_newlines=True, |
| ) |
| for line in unbuffered(proc): |
| if not line.startswith("Download"): |
| print(f"\r{line}", end="") |
| else: |
| print(f"\n{line}") |
|
|
|
|
| def installmega(): |
| HOME = os.path.expanduser("~") |
| if not os.path.exists(f"{HOME}/.ipython/ocr.py"): |
| hCode = "https://raw.githubusercontent.com/biplobsd/" \ |
| "OneClickRun/master/res/ocr.py" |
| urllib.request.urlretrieve(hCode, f"{HOME}/.ipython/ocr.py") |
|
|
| from ocr import ( |
| runSh, |
| loadingAn, |
| ) |
|
|
| if not os.path.exists("/usr/bin/mega-cmd"): |
| loadingAn() |
| print("Installing MEGA ...") |
| runSh('sudo apt-get -y update') |
| runSh('sudo apt-get -y install libmms0 libc-ares2 libc6 libcrypto++6 libgcc1 libmediainfo0v5 libpcre3 libpcrecpp0v5 libssl1.1 libstdc++6 libzen0v5 zlib1g apt-transport-https') |
| runSh('sudo curl -sL -o /var/cache/apt/archives/MEGAcmd.deb https://mega.nz/linux/MEGAsync/Debian_9.0/amd64/megacmd-Debian_9.0_amd64.deb', output=True) |
| runSh('sudo dpkg -i /var/cache/apt/archives/MEGAcmd.deb', output=True) |
| print("MEGA is installed.") |
| clear_output() |
| #these code above handle mega.nz |
|
|
| if optional_direct_link!='': |
| if optional_direct_link.startswith("https://huggingface.co/"): |
| custom_download = os.path.basename(optional_direct_link) |
| custom_path = os.path.join(folder,custom_download) |
| if not os.path.isfile(custom_path): |
| print(f'[1;32mDownloading {custom_download}') |
| print('[0m') |
| !gdown {optional_direct_link} -O {custom_path} |
| else: |
| print(f'[1;32mThat custom model is already downloaded.') |
| print('[0m') |
| elif optional_direct_link.startswith("https://mega.nz/"): |
| print(f'[1;32mDownloading from a Mega link') |
| print('[0m') |
| installmega() |
| newlines = ['\n', '\r\n', '\r'] |
| transfare() |
|
|
| files = os.listdir(folder) |
| for file in files: |
| if file.endswith('tmp') or file.endswith('bdgh'): |
| file_path = os.path.join(folder, file) |
| print(f"Removed incomplete download: {file_path}") |
| os.remove(file_path) |
|
|
| for root, dirs, files in os.walk(folder): |
| for file in files: |
| if file.endswith('.ckpt') or file.endswith('.safetensors'): |
| checksizepath = os.path.join(root, file) |
| MB = 1000000 # 1 megabyte = 1000000 bytes |
| lorapath = '/content/stable-diffusion-webui/models/Lora' |
| if os.path.getsize(checksizepath) < 200 * MB: |
| if os.path.getsize(checksizepath) < MB: |
| os.remove(checksizepath) |
| print() |
| print(f'The model {checksizepath} is probably had the link changed. Contact the owner of this repo.') |
| else: |
| if not os.path.exists(lorapath): |
| os.makedirs(lorapath) |
| os.rename(checksizepath, os.path.join(lorapath, file)) |
| print() |
| print(f'The model {checksizepath} is probably a Lora, so it is moved to lora folder') |
|
|
| print() |
| print('[1;32mList of installed models:') |
| print('[0m') |
| !ls *.{ckpt,safetensors,pt} {folder} 2>/dev/null |
| |
| 3. Run (Choose one👇) |
|
|
| #@title Run with Gradio |
| #@markdown  |
|
|
| import subprocess |
| cek = subprocess.getoutput('nvidia-smi') |
| if not 'T4' in cek: |
| print("[1;32m-----Your colab session is over. Use other google account or wait 12-24 hours-----") |
| print("-----Sesi colab elu udah habis bro. Saran gw tunggu 12-24 jam atau bikin/pake akun google lain-----") |
| raise KeyboardInterrupt |
|
|
|
|
| %cd /content/stable-diffusion-webui/ |
| !python launch.py --share --xformers --enable-insecure-extension-access --gradio-queue --no-half-vae |
| |
|
|
| #@title Run with Localtunnel |
| #@markdown  |
|
|
| import subprocess |
| import time |
| !npm install -g localtunnel |
|
|
| cek = subprocess.getoutput('nvidia-smi') |
| if not 'T4' in cek: |
| print("[1;32m-----Your colab session is over. Use other google account or wait 12-24 hours-----") |
| print("-----Sesi colab elu udah habis bro. Saran gw tunggu 12-24 jam atau bikin/pake akun google lain-----") |
| raise KeyboardInterrupt |
|
|
|
|
| %cd /content/stable-diffusion-webui/ |
| !nohup lt -p 7860 > lt.log 2>&1 & |
| time.sleep(2) |
| with open('/content/stable-diffusion-webui/lt.log', 'r') as testwritefile: |
| print("\033[92m" + "Wait for the model to load and follow this link") |
| print(testwritefile.read()) |
| print("\033[95m") |
| !python launch.py --xformers --enable-insecure-extension-access |
| |
|
|