From 36d5e9661c794da04a161e2bd056353a9c323c3c Mon Sep 17 00:00:00 2001
From: frostydad <64224601+Cyberes@users.noreply.github.com>
Date: Sat, 1 Oct 2022 13:41:10 -0600
Subject: [PATCH] more doc, textual inversion training, organize files
---
StableDiffusionUI_Voldemort_paperspace.ipynb | 27 ++-
Textual Inversion Training.ipynb | 173 ++++++++++++++++++
lfs/latent-diffusion/.gitattributes | 1 +
lfs/latent-diffusion/project.yaml | 80 ++++++++
.../CodeFormer_Inference_Simplified.ipynb | 0
...ggingface Textual Inversion Training.ipynb | 0
.../sd-concepts-library_Exporter.ipynb | 0
7 files changed, 273 insertions(+), 8 deletions(-)
create mode 100644 Textual Inversion Training.ipynb
create mode 100644 lfs/latent-diffusion/.gitattributes
create mode 100644 lfs/latent-diffusion/project.yaml
rename CodeFormer_Inference_Simplified.ipynb => other/CodeFormer_Inference_Simplified.ipynb (100%)
rename Huggingface Textual Inversion Training.ipynb => other/Huggingface Textual Inversion Training.ipynb (100%)
rename sd-concepts-library_Exporter.ipynb => other/sd-concepts-library_Exporter.ipynb (100%)
diff --git a/StableDiffusionUI_Voldemort_paperspace.ipynb b/StableDiffusionUI_Voldemort_paperspace.ipynb
index 1caff39..c17132e 100644
--- a/StableDiffusionUI_Voldemort_paperspace.ipynb
+++ b/StableDiffusionUI_Voldemort_paperspace.ipynb
@@ -48,7 +48,13 @@
"\n",
"`/notebooks/` is storage for this notebook only.\n",
"\n",
- "We're going to store models in `/storage/models` and create a symlink.\n",
+ "`/tmp/` is not a persistent directory, meaning your files there will be deleted when the machine turns off.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "If you are having storage issues, set `repo_storage_dir` to `/tmp/stable-diffusion`.\n",
+ "\n",
+ "
\n",
"\n",
"You must uncomment the correct section and run the block below or else the notebook won't work!"
]
@@ -62,7 +68,7 @@
"# Free tier\n",
"# free_tier = True # Enables the creation of symlinks back to /notebooks/\n",
"# model_storage_dir = '/tmp/stable-diffusion/models' # Where the models will be downloaded to\n",
- "# repo_storage_dir = '/tmp/stable-diffusion' # Where the repository will be downloaded to\n",
+ "# repo_storage_dir = '/notebooks' # Where the repository will be downloaded to\n",
"\n",
"# Paid Tier\n",
"# free_tier = False\n",
@@ -97,7 +103,6 @@
"source": [
"import os\n",
"%store -r free_tier model_storage_dir repo_storage_dir\n",
- "%cd /notebooks/\n",
"\n",
"def delete_broken_symlinks(path):\n",
" # make sure to pass this function a path without a trailing slash\n",
@@ -110,8 +115,12 @@
"if not os.path.exists(f'{repo_storage_dir}/stable-diffusion-webui'):\n",
" if free_tier:\n",
" delete_broken_symlinks('/notebooks/') # remove broken symlinks since it might have been installed in a non-persistent directory\n",
- " !mkdir -p \"{repo_storage_dir}\"\n",
- " !ln -s \"{repo_storage_dir}\" /notebooks/\n",
+ " if not os.path.exists(repo_storage_dir) and '/notebooks/' not in repo_storage_dir:\n",
+ " # symlink repo_storage_dir back to /notebooks/ only if it hasn't been downloaded to /notebooks/\n",
+ " !mkdir -p \"{repo_storage_dir}\"\n",
+ " !ln -s \"{repo_storage_dir}\" /notebooks/\n",
+ " else:\n",
+ " print('Not symlinking repo_storage_dir back to /notebooks/')\n",
" %cd \"{repo_storage_dir}\"\n",
" !git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui\n",
"else: # update repo if already exists\n",
@@ -147,9 +156,8 @@
"# They require a few specific external git repo commits so we have to do it their way. \n",
"import launch\n",
"\n",
- "# latent-diffusion is a requirement but launch.py isn't downloading it so we'll do it manually.\n",
- "if not os.path.exists(f'{repo_storage_dir}/stable-diffusion-webui/repositories/latent-diffusion'):\n",
- " !git clone https://github.com/crowsonkb/k-diffusion.git \"{repo_storage_dir}/stable-diffusion-webui/repositories/k-diffusion\"\n",
+ "# latent-diffusion is a requirement but launch.py isn't downloading it so we'll do it manually\n",
+ "if not os.path.exists(f'{repo_storage_dir}/stable-diffusion-webui/repositories/latent-diffusion'): # check that it hasn't been downloaded in case they fix this issue\n",
" !git clone https://github.com/Hafiidz/latent-diffusion.git \"{repo_storage_dir}/stable-diffusion-webui/repositories/latent-diffusion\"\n",
" # I don't think it's necessary to do this:\n",
" # %mkdir \"{repo_storage_dir}/stable-diffusion-webui/repositories/latent-diffusion/experiments/\"\n",
@@ -466,6 +474,9 @@
"outputs": [],
"source": [
"%store -r free_tier model_storage_dir repo_storage_dir\n",
+ "\n",
+ "!echo -e \"You are using $(du -sh /notebooks/ | cut -f1) in /notebooks/\\n\"\n",
+ "\n",
"%cd \"{repo_storage_dir}/stable-diffusion-webui\"\n",
"!python webui.py --share # --gradio-auth me:password1234"
]
diff --git a/Textual Inversion Training.ipynb b/Textual Inversion Training.ipynb
new file mode 100644
index 0000000..cbd631a
--- /dev/null
+++ b/Textual Inversion Training.ipynb
@@ -0,0 +1,173 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "60b8e4a2-4e54-4dae-9220-31fc24fa719f",
+ "metadata": {
+ "scrolled": true,
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "%cd /notebooks/\n",
+ "# Download and run the Anaconda3 installer\n",
+ "import sys\n",
+ "!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh\n",
+ "!bash ./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local\n",
+ "sys.path.append('/usr/local/lib/python3.7/site-packages/')\n",
+ "!rm Miniconda3-latest-Linux-x86_64.sh\n",
+ "!conda init bash\n",
+ "!mkdir -p /notebooks/textual\\ inversion/\n",
+ "!mkdir -p /notebooks/Stable-textual-inversion_win/logs/"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "d5743d8c-f0ba-4f07-971b-b498b0e306f4",
+ "metadata": {
+ "scrolled": true,
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "import os.path\n",
+ "if not os.path.exists('/notebooks/Stable-textual-inversion_win'):\n",
+ " %cd /notebooks/\n",
+ " !git clone https://github.com/nicolai256/Stable-textual-inversion_win.git\n",
+ " !mkdir -p /notebooks/textual\\ inversion/\n",
+ " \n",
+ "# Uncomment this to copy the detault config\n",
+ " # !cp /notebooks/Stable-textual-inversion_win/configs/stable-diffusion/v1-finetune.yaml /notebooks/textual\\ inversion\n",
+ "else: # update repo if already exists\n",
+ " print('stable-diffusion-webui already downloaded, updating...')\n",
+ " %cd /notebooks/Stable-textual-inversion_win\n",
+ " !git pull\n",
+ " \n",
+ "# Symlink the output dir to /notebooks/\n",
+ "!mkdir -p /notebooks/textual\\ inversion/output/\n",
+ "!ln -s /notebooks/Stable-textual-inversion_win/logs/ \"/notebooks/textual inversion/\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "53ee34a7-e5f3-4529-b3b9-2bdac9a45c54",
+ "metadata": {
+ "scrolled": true,
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "%cd /notebooks/Stable-textual-inversion_win/\n",
+ "!conda env update -n base --file environment.yaml\n",
+ "!conda activate ldm\n",
+ "!pip install setuptools==59.5.0\n",
+ "!pip install pillow==9.0.1\n",
+ "!pip install torchmetrics==0.6.0\n",
+ "!pip install -e ."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "fa5eda42-c1c6-47b9-80ce-39b777c77bb5",
+ "metadata": {
+ "scrolled": true,
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "# Config\n",
+ "\n",
+ "config_path = '/notebooks/textual inversion/v1-finetune.yaml'\n",
+ "\n",
+ "# Directory holding the images you want to feed into the AI\n",
+ "source_image_directory = '/notebooks/textual inversion/source/'\n",
+ "\n",
+ "# Word to activate the embedding in the SD WebUI\n",
+ "init_word = 'simonstalenhag'\n",
+ "\n",
+ "project_name = 'simonstalenhag'\n",
+ "\n",
+ "actual_resume = '/storage/models/trinart2_step115000.ckpt' # trinart2_step115000.ckpt sd-v1-4.ckpt\n",
+ "\n",
+ "# ============================================================================================================\n",
+ "\n",
+ "!rm -rf \"{source_image_directory}/.ipynb_checkpoints\"\n",
+ "%cd /notebooks/Stable-textual-inversion_win/\n",
+ "!python main.py \\\n",
+ " --base \"{config_path}\" \\\n",
+ " -t --no-test \\\n",
+ " --actual_resume \"{actual_resume}\" \\\n",
+ " --gpus=1 \\\n",
+ " --data_root \"{source_image_directory}\" \\\n",
+ " --init_word {init_word} \\\n",
+ " -n {project_name} \\"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "be231cb1-a562-48ac-abb7-2cbee730c9a9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Resuming\n",
+ "\n",
+ "# Config\n",
+ "\n",
+ "config_path = '/notebooks/textual inversion/v1-finetune.yaml'\n",
+ "\n",
+ "# Directory holding the images you want to feed into the AI\n",
+ "source_image_directory = '/notebooks/textual inversion/source/'\n",
+ "\n",
+ "# Word to activate the embedding in the SD WebUI\n",
+ "init_word = 'simonstalenhag'\n",
+ "\n",
+ "project_path = '/notebooks/textual inversion/logs/source2022-10-01T03-52-45_simonstalenhag'\n",
+ "\n",
+ "actual_resume = '/storage/models/trinart2_step115000.ckpt' # trinart2_step115000.ckpt sd-v1-4.ckpt\n",
+ "\n",
+ "# ============================================================================================================\n",
+ "\n",
+ "from datetime import datetime\n",
+ "datetime_str = datetime.now().strftime('%m-%d-%Y_%H:%M:%S')\n",
+ "\n",
+ "!python \"main.py\" \\\n",
+ " --base \"{config_path}\" \\\n",
+ " -t --no-test \\\n",
+ " --actual_resume \"{actual_resume}\" \\\n",
+ " --gpus=1 \\\n",
+ " --data_root \"{source_image_directory}\" \\\n",
+ " --init_word \"{init_word}\" \\\n",
+ " --project \"{project_path}\" \\\n",
+ " --embedding_manager_ckpt \"{project_path}/checkpoints/embeddings.pt\" \\\n",
+ " --resume_from_checkpoint \"{project_path}/checkpoints/last.ckpt\" \\\n",
+ " -n \"{init_word}_continue_{datetime_str}\""
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.13"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/lfs/latent-diffusion/.gitattributes b/lfs/latent-diffusion/.gitattributes
new file mode 100644
index 0000000..ba3ae19
--- /dev/null
+++ b/lfs/latent-diffusion/.gitattributes
@@ -0,0 +1 @@
+model.ckpt filter=lfs diff=lfs merge=lfs -text
diff --git a/lfs/latent-diffusion/project.yaml b/lfs/latent-diffusion/project.yaml
new file mode 100644
index 0000000..4065ca2
--- /dev/null
+++ b/lfs/latent-diffusion/project.yaml
@@ -0,0 +1,80 @@
+model:
+ base_learning_rate: 1.0e-06
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.0015
+ linear_end: 0.0155
+ log_every_t: 100
+ timesteps: 1000
+ loss_type: l2
+ first_stage_key: image
+ cond_stage_key: LR_image
+ image_size: 64
+ channels: 3
+ concat_mode: true
+ cond_stage_trainable: false
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 6
+ out_channels: 3
+ model_channels: 160
+ attention_resolutions:
+ - 16
+ - 8
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 2
+ - 4
+ num_head_channels: 32
+ first_stage_config:
+ target: ldm.models.autoencoder.VQModelInterface
+ params:
+ embed_dim: 3
+ n_embed: 8192
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: false
+ z_channels: 3
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Module # todo
+ cond_stage_config:
+ target: torch.nn.Identity
+data:
+ target: cutlit.DataModuleFromConfig
+ params:
+ batch_size: 64
+ wrap: false
+ num_workers: 12
+ train:
+ target: ldm.data.openimages.SuperresOpenImagesAdvancedTrain
+ params:
+ size: 256
+ degradation: bsrgan_light
+ downscale_f: 4
+ min_crop_f: 0.5
+ max_crop_f: 1.0
+ random_crop: true
+ validation:
+ target: ldm.data.openimages.SuperresOpenImagesAdvancedValidation
+ params:
+ size: 256
+ degradation: bsrgan_light
+ downscale_f: 4
+ min_crop_f: 0.5
+ max_crop_f: 1.0
+ random_crop: true
diff --git a/CodeFormer_Inference_Simplified.ipynb b/other/CodeFormer_Inference_Simplified.ipynb
similarity index 100%
rename from CodeFormer_Inference_Simplified.ipynb
rename to other/CodeFormer_Inference_Simplified.ipynb
diff --git a/Huggingface Textual Inversion Training.ipynb b/other/Huggingface Textual Inversion Training.ipynb
similarity index 100%
rename from Huggingface Textual Inversion Training.ipynb
rename to other/Huggingface Textual Inversion Training.ipynb
diff --git a/sd-concepts-library_Exporter.ipynb b/other/sd-concepts-library_Exporter.ipynb
similarity index 100%
rename from sd-concepts-library_Exporter.ipynb
rename to other/sd-concepts-library_Exporter.ipynb