Skip to content

Commit d5ab97b

Browse files
authored
Merge pull request kohya-ss#1067 from kohya-ss/dev
Dev
2 parents d2a99a1 + 7cb44e4 commit d5ab97b

22 files changed

+839
-641
lines changed

README.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,64 @@ ControlNet-LLLite, a novel method for ControlNet with SDXL, is added. See [docum
249249

250250
## Change History
251251

252+
### Jan 23, 2024 / 2024/1/23: v0.8.2
253+
254+
- [Experimental] The `--fp8_base` option is added to the training scripts for LoRA etc. The base model (U-Net, and Text Encoder when training modules for Text Encoder) can be trained with fp8. PR [#1057](https://github.com/kohya-ss/sd-scripts/pull/1057) Thanks to KohakuBlueleaf!
255+
- Please specify `--fp8_base` in `train_network.py` or `sdxl_train_network.py`.
256+
- PyTorch 2.1 or later is required.
257+
- If you use xformers with PyTorch 2.1, please see [xformers repository](https://github.com/facebookresearch/xformers) and install the appropriate version according to your CUDA version.
258+
- The sample image generation during training consumes a lot of memory. It is recommended to turn it off.
259+
260+
- [Experimental] The network multiplier can be specified for each dataset in the training scripts for LoRA etc.
261+
- This is an experimental option and may be removed or changed in the future.
262+
- For example, if you train with state A as `1.0` and state B as `-1.0`, you may be able to generate by switching between state A and B depending on the LoRA application rate.
263+
- Also, if you prepare five states and train them as `0.2`, `0.4`, `0.6`, `0.8`, and `1.0`, you may be able to generate by switching the states smoothly depending on the application rate.
264+
- Please specify `network_multiplier` in `[[datasets]]` in `.toml` file.
265+
- Some options are added to `networks/extract_lora_from_models.py` to reduce the memory usage.
266+
- `--load_precision` option can be used to specify the precision when loading the model. If the model is saved in fp16, you can reduce the memory usage by specifying `--load_precision fp16` without losing precision.
267+
- `--load_original_model_to` option can be used to specify the device to load the original model. `--load_tuned_model_to` option can be used to specify the device to load the derived model. The default is `cpu` for both options, but you can specify `cuda` etc. You can reduce the memory usage by loading one of them to GPU. This option is available only for SDXL.
268+
269+
- The gradient synchronization in LoRA training with multi-GPU is improved. PR [#1064](https://github.com/kohya-ss/sd-scripts/pull/1064) Thanks to KohakuBlueleaf!
270+
- The code for Intel IPEX support is improved. PR [#1060](https://github.com/kohya-ss/sd-scripts/pull/1060) Thanks to akx!
271+
- Fixed a bug in multi-GPU Textual Inversion training.
272+
273+
- (実験的) LoRA等の学習スクリプトで、ベースモデル(U-Net、および Text Encoder のモジュール学習時は Text Encoder も)の重みを fp8 にして学習するオプションが追加されました。 PR [#1057](https://github.com/kohya-ss/sd-scripts/pull/1057) KohakuBlueleaf 氏に感謝します。
274+
- `train_network.py` または `sdxl_train_network.py``--fp8_base` を指定してください。
275+
- PyTorch 2.1 以降が必要です。
276+
- PyTorch 2.1 で xformers を使用する場合は、[xformers のリポジトリ](https://github.com/facebookresearch/xformers) を参照し、CUDA バージョンに応じて適切なバージョンをインストールしてください。
277+
- 学習中のサンプル画像生成はメモリを大量に消費するため、オフにすることをお勧めします。
278+
- (実験的) LoRA 等の学習で、データセットごとに異なるネットワーク適用率を指定できるようになりました。
279+
- 実験的オプションのため、将来的に削除または仕様変更される可能性があります。
280+
- たとえば状態 A を `1.0`、状態 B を `-1.0` として学習すると、LoRA の適用率に応じて状態 A と B を切り替えつつ生成できるかもしれません。
281+
- また、五段階の状態を用意し、それぞれ `0.2``0.4``0.6``0.8``1.0` として学習すると、適用率でなめらかに状態を切り替えて生成できるかもしれません。
282+
- `.toml` ファイルで `[[datasets]]``network_multiplier` を指定してください。
283+
- `networks/extract_lora_from_models.py` に使用メモリ量を削減するいくつかのオプションを追加しました。
284+
- `--load_precision` で読み込み時の精度を指定できます。モデルが fp16 で保存されている場合は `--load_precision fp16` を指定して精度を変えずにメモリ量を削減できます。
285+
- `--load_original_model_to` で元モデルを読み込むデバイスを、`--load_tuned_model_to` で派生モデルを読み込むデバイスを指定できます。デフォルトは両方とも `cpu` ですがそれぞれ `cuda` 等を指定できます。片方を GPU に読み込むことでメモリ量を削減できます。SDXL の場合のみ有効です。
286+
- マルチ GPU での LoRA 等の学習時に勾配の同期が改善されました。 PR [#1064](https://github.com/kohya-ss/sd-scripts/pull/1064) KohakuBlueleaf 氏に感謝します。
287+
- Intel IPEX サポートのコードが改善されました。PR [#1060](https://github.com/kohya-ss/sd-scripts/pull/1060) akx 氏に感謝します。
288+
- マルチ GPU での Textual Inversion 学習の不具合を修正しました。
289+
290+
- `.toml` example for network multiplier / ネットワーク適用率の `.toml` の記述例
291+
292+
```toml
293+
[general]
294+
[[datasets]]
295+
resolution = 512
296+
batch_size = 8
297+
network_multiplier = 1.0
298+
299+
... subset settings ...
300+
301+
[[datasets]]
302+
resolution = 512
303+
batch_size = 8
304+
network_multiplier = -1.0
305+
306+
... subset settings ...
307+
```
308+
309+
252310
### Jan 17, 2024 / 2024/1/17: v0.8.1
253311

254312
- Fixed a bug that the VRAM usage without Text Encoder training is larger than before in training scripts for LoRA etc (`train_network.py`, `sdxl_train_network.py`).

XTI_hijack.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
import torch
2-
try:
3-
import intel_extension_for_pytorch as ipex
4-
if torch.xpu.is_available():
5-
from library.ipex import ipex_init
6-
ipex_init()
7-
except Exception:
8-
pass
2+
from library.ipex_interop import init_ipex
3+
4+
init_ipex()
95
from typing import Union, List, Optional, Dict, Any, Tuple
106
from diffusers.models.unet_2d_condition import UNet2DConditionOutput
117

fine_tune.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,10 @@
1111
from tqdm import tqdm
1212
import torch
1313

14-
try:
15-
import intel_extension_for_pytorch as ipex
14+
from library.ipex_interop import init_ipex
1615

17-
if torch.xpu.is_available():
18-
from library.ipex import ipex_init
16+
init_ipex()
1917

20-
ipex_init()
21-
except Exception:
22-
pass
2318
from accelerate.utils import set_seed
2419
from diffusers import DDPMScheduler
2520

gen_img_diffusers.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,10 @@
6666
import numpy as np
6767
import torch
6868

69-
try:
70-
import intel_extension_for_pytorch as ipex
69+
from library.ipex_interop import init_ipex
7170

72-
if torch.xpu.is_available():
73-
from library.ipex import ipex_init
71+
init_ipex()
7472

75-
ipex_init()
76-
except Exception:
77-
pass
7873
import torchvision
7974
from diffusers import (
8075
AutoencoderKL,

0 commit comments

Comments
 (0)