Skip to content

Commit

Permalink
refresh
Browse files Browse the repository at this point in the history
  • Loading branch information
vladmandic committed Mar 1, 2024
1 parent 8925cdc commit d182cd5
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 10 deletions.
57 changes: 52 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,60 @@
# Change Log for SD.Next

## Update for 2024-02-24

## TODO

- EDM samplers for Playground require `diffusers==0.27.0`
- StableCascade requires diffusers `kashif/diffusers.git@wuerstchen-v3`

## Update for 2024-03-01

- [Playground v2.5](https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic)
- new model version from Playground: based on SDXL, but with some cool new concepts
- download using networks -> reference
- set sampler to *DPM++ 2M EDM* or *Euler EDM*
- [KOALA 700M](https://github.com/youngwanLEE/sdxl-koala)
- another very fast & light sd-xl model where original unet was compressed and distilled to 54% of original size
- download using networks -> reference
- *note* to download fp16 variant (recommended), set settings -> diffusers -> preferred model variant
- **Image2Video**
- new module for creating videos from images
- simply enable from *img2img -> scripts -> image2video*
- based on [VGen](https://huggingface.co/ali-vilab/i2vgen-xl)
- **VQA** visual question & answer in interrogate
- with support for multiple variations of base models: *GIT, BLIP, ViLT, PIX*
- **Second Pass / Refine**
- independent upscale and hires options: run hires without upscale or upscale without hires or both
- upscale can now run 0.1-8.0 scale and will also run if enabled at 1.0 to allow for upscalers that simply improve image quality
- update ui section to reflect changes
- *note*: behavior using backend:original is unchanged for backwards compatibilty
- **Samplers**
- [TCD](https://mhh0318.github.io/tcd/): Trajectory Consistency Distillation
new sampler that produces consistent results in a very low number of steps (comparable to LCM but without reliance on LoRA)
for best results, use with TCD LoRA: <https://huggingface.co/h1t/TCD-SDXL-LoRA>
- *DPM++ 2M EDM* and *Euler EDM*
EDM is a new solver algorithm currently available for DPM++2M and Euler samplers
Note that using EDM samplers with non-EDM optimized models will provide just noise and vice-versa
- **Improvements**
- default theme updates
- additional built-in theme *black-gray*
- **FaceID** extend support for LoRA, HyperTile and FreeU, thanks @Trojaner
- **Tiling** now extends to both Unet and VAE producing smoother outputs, thanks @AI-Casanova
- new setting in image options: *include mask in output*
- default theme updates and additional built-in theme *black-gray*
- add **ROCm** 6.0 nightly option to installer, thanks @jicka
- support models with their own YAML model config files
- support models with their own JSON per-component config files, for example: `playground-v2.5_vae.config`
- **Internal**
- remove obsolete textual inversion training code
- remove obsolete hypernetworks training code
- **Fixes**
- improve model cpu offload compatibility
- improve model sequential offload compatibility
- improve bfloat16 compatibility
- fix extra networks refresh
- improve ZLUDA installer when using `--use-zluda` cli param, thanks @lshqqytiger
- fix sdp memory attention in backend original
- fix autodetect sd21 models
- fix api info endpoint
- fix sampler eta in xyz grid, thanks @AI-Casanova
- exception handler around vram memory stats gather
- improve ZLUDA installer with `--use-zluda` cli param, thanks @lshqqytiger

## Update for 2024-02-22

Expand Down
39 changes: 35 additions & 4 deletions installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,13 +482,33 @@ def is_rocm_available():
torch_command = os.environ.get('TORCH_COMMAND', 'torch==2.2.0 torchvision --index-url https://download.pytorch.org/whl/cu118')
log.warning("ZLUDA support: experimental")
zluda_need_dll_patch = is_windows and not installed('torch')
zluda_path = find_zluda()
if zluda_path is None:
import urllib.request
if is_windows:
import zipfile
archive_type = zipfile.ZipFile
zluda_url = 'https://github.com/lshqqytiger/ZLUDA/releases/download/v3.5-win/ZLUDA-windows-amd64.zip'
else:
import tarfile
archive_type = tarfile.TarFile
zluda_url = 'https://github.com/vosen/ZLUDA/releases/download/v3/zluda-3-linux.tar.gz'
urllib.request.urlretrieve(zluda_url, '_zluda')
with archive_type('_zluda', 'r') as f:
f.extractall('.zluda')
zluda_path = os.path.abspath('./.zluda')
os.remove('_zluda')
log.debug(f'Found ZLUDA in {zluda_path}')
paths = os.environ.get('PATH', '.')
if zluda_path not in paths:
os.environ['PATH'] = paths + ';' + zluda_path
elif is_windows: # TODO TBD after ROCm for Windows is released
log.warning("HIP SDK is detected, but no Torch release for Windows available")
log.info("For ZLUDA support specify '--use-zluda'")
log.info('Using CPU-only torch')
torch_command = os.environ.get('TORCH_COMMAND', 'torch torchvision')
else:
if rocm_ver in {"5.7"}:
if rocm_ver in {"5.7", "6.0"}:
torch_command = os.environ.get('TORCH_COMMAND', f'torch torchvision --pre --index-url https://download.pytorch.org/whl/nightly/rocm{rocm_ver}')
elif rocm_ver in {"5.5", "5.6"}:
torch_command = os.environ.get('TORCH_COMMAND', f'torch torchvision --index-url https://download.pytorch.org/whl/nightly/rocm{rocm_ver}')
Expand Down Expand Up @@ -909,14 +929,19 @@ def get_onnxruntime_source_for_rocm(rocm_ver):
return 'onnxruntime-gpu'


def patch_zluda():
def find_zluda():
zluda_path = os.environ.get('ZLUDA', None)
if zluda_path is None:
paths = os.environ.get('PATH', '').split(';')
for path in paths:
if os.path.exists(os.path.join(path, 'zluda_redirect.dll')):
zluda_path = path
break
return zluda_path


def patch_zluda():
zluda_path = find_zluda()
if zluda_path is None:
log.warning('Failed to automatically patch torch with ZLUDA. Could not find ZLUDA from PATH.')
return
Expand Down Expand Up @@ -1028,8 +1053,6 @@ def check_timestamp():

def add_args(parser):
group = parser.add_argument_group('Setup options')
group.add_argument("--log", type=str, default=os.environ.get("SD_LOG", None), help="Set log file, default: %(default)s")
group.add_argument('--debug', default = os.environ.get("SD_DEBUG",False), action='store_true', help = "Run installer with debug logging, default: %(default)s")
group.add_argument('--reset', default = os.environ.get("SD_RESET",False), action='store_true', help = "Reset main repository to latest version, default: %(default)s")
group.add_argument('--upgrade', default = os.environ.get("SD_UPGRADE",False), action='store_true', help = "Upgrade main repository to latest version, default: %(default)s")
group.add_argument('--requirements', default = os.environ.get("SD_REQUIREMENTS",False), action='store_true', help = "Force re-check of requirements, default: %(default)s")
Expand All @@ -1039,6 +1062,7 @@ def add_args(parser):
group.add_argument("--use-ipex", default = os.environ.get("SD_USEIPEX",False), action='store_true', help="Force use Intel OneAPI XPU backend, default: %(default)s")
group.add_argument("--use-cuda", default = os.environ.get("SD_USECUDA",False), action='store_true', help="Force use nVidia CUDA backend, default: %(default)s")
group.add_argument("--use-rocm", default = os.environ.get("SD_USEROCM",False), action='store_true', help="Force use AMD ROCm backend, default: %(default)s")
group.add_argument('--use-zluda', default=os.environ.get("SD_USEZLUDA", False), action='store_true', help = "Force use ZLUDA, AMD GPUs only, default: %(default)s")
group.add_argument("--use-xformers", default = os.environ.get("SD_USEXFORMERS",False), action='store_true', help="Force use xFormers cross-optimization, default: %(default)s")
group.add_argument('--skip-requirements', default = os.environ.get("SD_SKIPREQUIREMENTS",False), action='store_true', help = "Skips checking and installing requirements, default: %(default)s")
group.add_argument('--skip-extensions', default = os.environ.get("SD_SKIPEXTENSION",False), action='store_true', help = "Skips running individual extension installers, default: %(default)s")
Expand All @@ -1053,6 +1077,13 @@ def add_args(parser):
group.add_argument('--ignore', default = os.environ.get("SD_IGNORE",False), action='store_true', help = "Ignore any errors and attempt to continue")
group.add_argument('--safe', default = os.environ.get("SD_SAFE",False), action='store_true', help = "Run in safe mode with no user extensions")

group = parser.add_argument_group('Logging options')
group.add_argument("--log", type=str, default=os.environ.get("SD_LOG", None), help="Set log file, default: %(default)s")
group.add_argument('--debug', default = os.environ.get("SD_DEBUG",False), action='store_true', help = "Run installer with debug logging, default: %(default)s")
group.add_argument("--profile", default=os.environ.get("SD_PROFILE", False), action='store_true', help="Run profiler, default: %(default)s")
group.add_argument('--docs', default=os.environ.get("SD_DOCS", False), action='store_true', help = "Mount API docs, default: %(default)s")
group.add_argument("--api-log", default=os.environ.get("SD_APILOG", False), action='store_true', help="Enable logging of all API requests, default: %(default)s")


def parse_args(parser):
# command line args
Expand Down
2 changes: 1 addition & 1 deletion wiki
Submodule wiki updated from ddd815 to 5c52cb

0 comments on commit d182cd5

Please sign in to comment.