lycoris-lora 3.0.1.dev7__tar.gz → 3.0.1.dev9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {lycoris_lora-3.0.1.dev7/lycoris_lora.egg-info → lycoris_lora-3.0.1.dev9}/PKG-INFO +1 -1
  2. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/loha.py +1 -1
  3. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/lokr.py +2 -2
  4. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/wrapper.py +1 -0
  5. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9/lycoris_lora.egg-info}/PKG-INFO +1 -1
  6. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/setup.py +1 -1
  7. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/test/wrapper.py +65 -41
  8. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/LICENSE.md +0 -0
  9. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/README.md +0 -0
  10. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/__init__.py +0 -0
  11. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/config.py +0 -0
  12. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/functional/__init__.py +0 -0
  13. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/functional/boft.py +0 -0
  14. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/functional/diag_oft.py +0 -0
  15. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/functional/general.py +0 -0
  16. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/functional/locon.py +0 -0
  17. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/functional/loha.py +0 -0
  18. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/functional/lokr.py +0 -0
  19. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/kohya.py +0 -0
  20. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/logging.py +0 -0
  21. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/__init__.py +0 -0
  22. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/base.py +0 -0
  23. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/boft.py +0 -0
  24. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/diag_oft.py +0 -0
  25. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/dylora.py +0 -0
  26. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/full.py +0 -0
  27. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/glora.py +0 -0
  28. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/ia3.py +0 -0
  29. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/locon.py +0 -0
  30. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/modules/norms.py +0 -0
  31. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/utils/__init__.py +0 -0
  32. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/utils/bnb.py +0 -0
  33. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/utils/general.py +0 -0
  34. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/utils/logger.py +0 -0
  35. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/utils/preset.py +0 -0
  36. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris/utils/xformers_utils.py +0 -0
  37. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris_lora.egg-info/SOURCES.txt +0 -0
  38. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris_lora.egg-info/dependency_links.txt +0 -0
  39. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris_lora.egg-info/not-zip-safe +0 -0
  40. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris_lora.egg-info/requires.txt +0 -0
  41. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/lycoris_lora.egg-info/top_level.txt +0 -0
  42. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/setup.cfg +0 -0
  43. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/test/__init__.py +0 -0
  44. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/test/functional.py +0 -0
  45. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/test/kohya.py +0 -0
  46. {lycoris_lora-3.0.1.dev7 → lycoris_lora-3.0.1.dev9}/test/module.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lycoris_lora
3
- Version: 3.0.1.dev7
3
+ Version: 3.0.1.dev9
4
4
  Summary: Lora beYond Conventional methods, Other Rank adaptation Implementations for Stable diffusion
5
5
  Home-page: https://github.com/KohakuBlueleaf/LyCORIS
6
6
  Author: Shih-Ying Yeh(KohakuBlueLeaf), Yu-Guan Hsieh, Zhidong Gao
@@ -130,7 +130,7 @@ class LohaModule(LycorisBaseModule):
130
130
  if use_scalar:
131
131
  self.scalar = nn.Parameter(torch.tensor(0.0))
132
132
  else:
133
- self.scalar = torch.tensor(1.0)
133
+ self.register_buffer("scalar", torch.tensor(1.0), persistent=False)
134
134
  # Need more experiments on init method
135
135
  if self.tucker:
136
136
  torch.nn.init.normal_(self.hada_t1, std=0.1)
@@ -213,7 +213,7 @@ class LokrModule(LycorisBaseModule):
213
213
  if use_scalar:
214
214
  self.scalar = nn.Parameter(torch.tensor(0.0))
215
215
  else:
216
- self.scalar = torch.tensor(1.0)
216
+ self.register_buffer("scalar", torch.tensor(1.0), persistent=False)
217
217
 
218
218
  if self.use_w2:
219
219
  if use_scalar:
@@ -498,7 +498,7 @@ class LokrModule(LycorisBaseModule):
498
498
  hc = hc.transpose(-1, -2)
499
499
  h = hc.reshape(*hc.shape[:-2], -1)
500
500
 
501
- return self.drop(h * scale)
501
+ return self.drop(h * scale * self.scalar)
502
502
 
503
503
  def bypass_forward(self, x, scale=1):
504
504
  return self.org_forward(x) + self.bypass_forward_diff(x, scale=scale)
@@ -377,6 +377,7 @@ class LycorisNetwork(torch.nn.Module):
377
377
  for lora_name, lora in zip(new_lora_names, new_loras):
378
378
  if lora_name not in loras and lora_name not in current_lora_map:
379
379
  loras[lora_name] = lora
380
+ if lora_name not in lora_names:
380
381
  lora_names.append(lora_name)
381
382
  continue
382
383
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lycoris_lora
3
- Version: 3.0.1.dev7
3
+ Version: 3.0.1.dev9
4
4
  Summary: Lora beYond Conventional methods, Other Rank adaptation Implementations for Stable diffusion
5
5
  Home-page: https://github.com/KohakuBlueleaf/LyCORIS
6
6
  Author: Shih-Ying Yeh(KohakuBlueLeaf), Yu-Guan Hsieh, Zhidong Gao
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
  setup(
5
5
  name="lycoris_lora",
6
6
  packages=find_packages(),
7
- version="3.0.1.dev7",
7
+ version="3.0.1.dev9",
8
8
  url="https://github.com/KohakuBlueleaf/LyCORIS",
9
9
  description="Lora beYond Conventional methods, Other Rank adaptation Implementations for Stable diffusion",
10
10
  author="Shih-Ying Yeh(KohakuBlueLeaf), Yu-Guan Hsieh, Zhidong Gao",
@@ -331,7 +331,7 @@ class LycorisWrapperTests(unittest.TestCase):
331
331
  finally:
332
332
  reset_globals()
333
333
 
334
- def test_diffusers_models_and_state_dicts_single_blocks(self):
334
+ def test_diffusers_models_and_state_dicts_target_module_and_module_algo_map(self):
335
335
  try:
336
336
  transformer = FluxTransformer2DModel.from_config(
337
337
  {
@@ -340,8 +340,8 @@ class LycorisWrapperTests(unittest.TestCase):
340
340
  "in_channels": 64,
341
341
  "joint_attention_dim": 4096,
342
342
  "num_attention_heads": 24,
343
- "num_layers": 2,
344
- "num_single_layers": 2,
343
+ "num_layers": 4,
344
+ "num_single_layers": 4,
345
345
  "patch_size": 1,
346
346
  "pooled_projection_dim": 768,
347
347
  }
@@ -355,8 +355,8 @@ class LycorisWrapperTests(unittest.TestCase):
355
355
  "FluxSingleTransformerBlock",
356
356
  ],
357
357
  "module_algo_map": {
358
- "Attention": {"factor": 16},
359
- "FeedForward": {"factor": 8},
358
+ "Attention": {"factor": 6},
359
+ "FeedForward": {"factor": 4},
360
360
  },
361
361
  }
362
362
  )
@@ -368,50 +368,73 @@ class LycorisWrapperTests(unittest.TestCase):
368
368
  multiplier=1.0,
369
369
  linear_dim=10000,
370
370
  linear_alpha=1,
371
- factor=16,
371
+ factor=8,
372
+ full_matrix=True,
372
373
  )
373
374
  test_lycoris.apply_to()
374
375
 
375
- state_dict = test_lycoris.state_dict()
376
- assert sorted(
376
+ def check_dims(lora, factor):
377
+ lokr_w2_shape = lora.state_dict()["lokr_w2"].shape
378
+ return lora.shape[0] // lokr_w2_shape[0] == factor
379
+
380
+ first_block = list(
381
+ filter(
382
+ lambda lor: "lycoris_transformer_blocks_0_" in lor.lora_name,
383
+ test_lycoris.loras,
384
+ )
385
+ )
386
+ assert sorted([lor.lora_name for lor in first_block]) == sorted(
377
387
  [
378
- "lycoris_transformer_blocks_0_norm1_linear.alpha",
379
- "lycoris_transformer_blocks_0_norm1_linear.lokr_w1",
380
- "lycoris_transformer_blocks_0_norm1_linear.lokr_w2",
381
- "lycoris_transformer_blocks_0_norm1_context_linear.alpha",
382
- "lycoris_transformer_blocks_0_norm1_context_linear.lokr_w1",
383
- "lycoris_transformer_blocks_0_norm1_context_linear.lokr_w2",
384
- "lycoris_transformer_blocks_1_norm1_linear.alpha",
385
- "lycoris_transformer_blocks_1_norm1_linear.lokr_w1",
386
- "lycoris_transformer_blocks_1_norm1_linear.lokr_w2",
387
- "lycoris_transformer_blocks_1_norm1_context_linear.alpha",
388
- "lycoris_transformer_blocks_1_norm1_context_linear.lokr_w1",
389
- "lycoris_transformer_blocks_1_norm1_context_linear.lokr_w2",
390
- "lycoris_single_transformer_blocks_0_norm_linear.alpha",
391
- "lycoris_single_transformer_blocks_0_norm_linear.lokr_w1",
392
- "lycoris_single_transformer_blocks_0_norm_linear.lokr_w2",
393
- "lycoris_single_transformer_blocks_0_proj_mlp.alpha",
394
- "lycoris_single_transformer_blocks_0_proj_mlp.lokr_w1",
395
- "lycoris_single_transformer_blocks_0_proj_mlp.lokr_w2",
396
- "lycoris_single_transformer_blocks_0_proj_out.alpha",
397
- "lycoris_single_transformer_blocks_0_proj_out.lokr_w1",
398
- "lycoris_single_transformer_blocks_0_proj_out.lokr_w2",
399
- "lycoris_single_transformer_blocks_1_norm_linear.alpha",
400
- "lycoris_single_transformer_blocks_1_norm_linear.lokr_w1",
401
- "lycoris_single_transformer_blocks_1_norm_linear.lokr_w2",
402
- "lycoris_single_transformer_blocks_1_proj_mlp.alpha",
403
- "lycoris_single_transformer_blocks_1_proj_mlp.lokr_w1",
404
- "lycoris_single_transformer_blocks_1_proj_mlp.lokr_w2",
405
- "lycoris_single_transformer_blocks_1_proj_out.alpha",
406
- "lycoris_single_transformer_blocks_1_proj_out.lokr_w1",
407
- "lycoris_single_transformer_blocks_1_proj_out.lokr_w2",
388
+ "lycoris_transformer_blocks_0_norm1_linear",
389
+ "lycoris_transformer_blocks_0_norm1_context_linear",
390
+ "lycoris_transformer_blocks_0_attn_to_q",
391
+ "lycoris_transformer_blocks_0_attn_to_k",
392
+ "lycoris_transformer_blocks_0_attn_to_v",
393
+ "lycoris_transformer_blocks_0_attn_add_k_proj",
394
+ "lycoris_transformer_blocks_0_attn_add_v_proj",
395
+ "lycoris_transformer_blocks_0_attn_add_q_proj",
396
+ "lycoris_transformer_blocks_0_attn_to_out_0",
397
+ "lycoris_transformer_blocks_0_attn_to_add_out",
398
+ "lycoris_transformer_blocks_0_ff_net_0_proj",
399
+ "lycoris_transformer_blocks_0_ff_net_2",
400
+ "lycoris_transformer_blocks_0_ff_context_net_0_proj",
401
+ "lycoris_transformer_blocks_0_ff_context_net_2",
408
402
  ]
409
- ) == sorted([k for k in state_dict.keys()])
403
+ )
404
+ first_single_block = list(
405
+ filter(
406
+ lambda lor: "lycoris_single_transformer_blocks_0_" in lor.lora_name,
407
+ test_lycoris.loras,
408
+ )
409
+ )
410
+ assert sorted([lor.lora_name for lor in first_single_block]) == sorted(
411
+ [
412
+ "lycoris_single_transformer_blocks_0_norm_linear",
413
+ "lycoris_single_transformer_blocks_0_proj_mlp",
414
+ "lycoris_single_transformer_blocks_0_proj_out",
415
+ "lycoris_single_transformer_blocks_0_attn_to_q",
416
+ "lycoris_single_transformer_blocks_0_attn_to_k",
417
+ "lycoris_single_transformer_blocks_0_attn_to_v",
418
+ ]
419
+ )
420
+
421
+ for lora in test_lycoris.loras:
422
+ if "_norm1_" in lora.lora_name:
423
+ self.assertTrue(check_dims(lora, 8))
424
+ elif "_norm_" in lora.lora_name:
425
+ self.assertTrue(check_dims(lora, 8))
426
+ elif "_proj_" in lora.lora_name:
427
+ self.assertTrue(check_dims(lora, 8))
428
+ elif "_attn_" in lora.lora_name:
429
+ self.assertTrue(check_dims(lora, 6))
430
+ elif "_ff_" in lora.lora_name:
431
+ self.assertTrue(check_dims(lora, 4))
432
+ else:
433
+ raise Exception(f"Unknown layer {lora.lora_name}")
410
434
 
411
- state_dict = test_lycoris.state_dict()
412
435
  test_lycoris_from_weights: LycorisNetwork
413
436
  test_lycoris_from_weights, _ = create_lycoris_from_weights(
414
- 1, None, transformer, state_dict
437
+ 1, None, transformer, test_lycoris.state_dict()
415
438
  )
416
439
  test_lycoris_from_weights.apply_to()
417
440
  test_lycoris_from_weights.load_state_dict(test_lycoris.state_dict())
@@ -427,6 +450,7 @@ class LycorisWrapperTests(unittest.TestCase):
427
450
  assert torch.equal(lora_sd["alpha"], lora_loaded_sd["alpha"])
428
451
  assert torch.equal(lora_sd["lokr_w1"], lora_loaded_sd["lokr_w1"])
429
452
  assert torch.equal(lora_sd["lokr_w2"], lora_loaded_sd["lokr_w2"])
453
+
430
454
  finally:
431
455
  reset_globals()
432
456