ollamadiffuser 2.0.1__py3-none-any.whl → 2.0.3__py3-none-any.whl

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.
@@ -4,7 +4,7 @@ OllamaDiffuser - Local AI Image Generation with Ollama-style CLI
4
4
  A tool for managing and running Stable Diffusion, FLUX.1, and other AI image generation models locally.
5
5
  """
6
6
 
7
- __version__ = "2.0.1"
7
+ __version__ = "2.0.3"
8
8
  __author__ = "OllamaDiffuser Team"
9
9
  __email__ = "ollamadiffuser@gmail.com"
10
10
  __description__ = "🎨 Local AI Image Generation with Ollama-style CLI for Stable Diffusion, FLUX.1, and LoRA support"
@@ -38,6 +38,11 @@ class FluxStrategy(InferenceStrategy):
38
38
  if device == "cpu":
39
39
  load_kwargs["torch_dtype"] = torch.float32
40
40
  logger.warning("FLUX on CPU will be very slow for this 12B parameter model")
41
+ elif device == "mps":
42
+ # MPS has limited bfloat16 support; float16 avoids VAE decode crashes
43
+ load_kwargs["torch_dtype"] = torch.float16
44
+ load_kwargs["use_safetensors"] = True
45
+ load_kwargs["low_cpu_mem_usage"] = True
41
46
  else:
42
47
  load_kwargs["torch_dtype"] = torch.bfloat16
43
48
  load_kwargs["use_safetensors"] = True
@@ -46,11 +51,11 @@ class FluxStrategy(InferenceStrategy):
46
51
  model_config.path, **load_kwargs
47
52
  )
48
53
 
49
- if device in ("cuda", "mps") and hasattr(self.pipeline, "enable_model_cpu_offload"):
50
- # CPU offloading manages device placement itself — don't call _move_to_device
54
+ if device == "cuda" and hasattr(self.pipeline, "enable_model_cpu_offload"):
51
55
  self.pipeline.enable_model_cpu_offload(device=device)
52
56
  logger.info(f"Enabled CPU offloading for FLUX on {device}")
53
57
  else:
58
+ # MPS: unified memory means CPU offload adds overhead without saving memory
54
59
  self._move_to_device(device)
55
60
  self._apply_memory_optimizations()
56
61
 
@@ -102,7 +107,9 @@ class FluxStrategy(InferenceStrategy):
102
107
 
103
108
  max_seq_len = kwargs.get("max_sequence_length", params.get("max_sequence_length", 512))
104
109
 
105
- generator, used_seed = self._make_generator(seed, self.device)
110
+ # CPU offload moves tensors between CPU/device; use CPU generator to avoid device mismatches
111
+ gen_device = "cpu" if self.device == "mps" else self.device
112
+ generator, used_seed = self._make_generator(seed, gen_device)
106
113
 
107
114
  gen_kwargs = {
108
115
  "prompt": prompt,
@@ -72,20 +72,8 @@ class GenericPipelineStrategy(InferenceStrategy):
72
72
 
73
73
  # Device placement
74
74
  enable_offload = params.get("enable_cpu_offload", False)
75
- # Auto-enable CPU offload on MPS to avoid OOM on unified memory
76
- if device == "mps":
77
- enable_offload = True
78
-
79
- if enable_offload and device in ("cuda", "mps"):
80
- if device == "mps" and hasattr(self.pipeline, "enable_model_cpu_offload"):
81
- # MPS/unified memory: model-level offload is more effective than
82
- # sequential offload because it fully deallocates entire components
83
- # (T5 encoder, transformer, VAE) between stages, reducing peak
84
- # memory pressure on the MPS allocator.
85
- self.pipeline.enable_model_cpu_offload(device=device)
86
- logger.info(f"Enabled model CPU offloading on {device}")
87
- elif hasattr(self.pipeline, "enable_sequential_cpu_offload"):
88
- # CUDA: sequential offload moves individual layers, lowest VRAM usage
75
+ if enable_offload and device == "cuda":
76
+ if hasattr(self.pipeline, "enable_sequential_cpu_offload"):
89
77
  self.pipeline.enable_sequential_cpu_offload(device=device)
90
78
  logger.info(f"Enabled sequential CPU offloading on {device}")
91
79
  elif hasattr(self.pipeline, "enable_model_cpu_offload"):
@@ -94,6 +82,7 @@ class GenericPipelineStrategy(InferenceStrategy):
94
82
  else:
95
83
  self._move_to_device(device)
96
84
  else:
85
+ # MPS: unified memory means CPU offload adds overhead without saving memory
97
86
  self._move_to_device(device)
98
87
 
99
88
  self._apply_memory_optimizations()
@@ -34,6 +34,9 @@ class HiDreamStrategy(InferenceStrategy):
34
34
  load_kwargs = {**SAFETY_DISABLED_KWARGS}
35
35
  if device == "cpu":
36
36
  load_kwargs["torch_dtype"] = torch.float32
37
+ elif device == "mps":
38
+ load_kwargs["torch_dtype"] = torch.float16
39
+ load_kwargs["low_cpu_mem_usage"] = True
37
40
  else:
38
41
  load_kwargs["torch_dtype"] = torch.bfloat16
39
42
 
@@ -41,8 +44,7 @@ class HiDreamStrategy(InferenceStrategy):
41
44
  model_config.path, **load_kwargs
42
45
  )
43
46
 
44
- if device in ("cuda", "mps") and hasattr(self.pipeline, "enable_model_cpu_offload"):
45
- # CPU offloading manages device placement itself — don't call _move_to_device
47
+ if device == "cuda" and hasattr(self.pipeline, "enable_model_cpu_offload"):
46
48
  self.pipeline.enable_model_cpu_offload(device=device)
47
49
  else:
48
50
  self._move_to_device(device)
@@ -77,7 +79,8 @@ class HiDreamStrategy(InferenceStrategy):
77
79
  guidance = guidance_scale if guidance_scale is not None else params.get("guidance_scale", 5.0)
78
80
  max_seq_len = kwargs.get("max_sequence_length", params.get("max_sequence_length", 128))
79
81
 
80
- generator, used_seed = self._make_generator(seed, self.device)
82
+ gen_device = "cpu" if self.device == "mps" else self.device
83
+ generator, used_seed = self._make_generator(seed, gen_device)
81
84
 
82
85
  gen_kwargs = {
83
86
  "prompt": prompt,
@@ -46,8 +46,7 @@ class VideoStrategy(InferenceStrategy):
46
46
  steps_offset=1,
47
47
  )
48
48
 
49
- if device in ("cuda", "mps") and hasattr(self.pipeline, "enable_model_cpu_offload"):
50
- # CPU offloading manages device placement itself — don't call _move_to_device
49
+ if device == "cuda" and hasattr(self.pipeline, "enable_model_cpu_offload"):
51
50
  self.pipeline.enable_model_cpu_offload(device=device)
52
51
  else:
53
52
  self._move_to_device(device)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ollamadiffuser
3
- Version: 2.0.1
3
+ Version: 2.0.3
4
4
  Summary: Local AI Image Generation with Ollama-style CLI for Stable Diffusion, FLUX, and LoRA support
5
5
  Home-page: https://github.com/ollamadiffuser/ollamadiffuser
6
6
  Author: OllamaDiffuser Team
@@ -1,4 +1,4 @@
1
- ollamadiffuser/__init__.py,sha256=WNSenduGIDUa8FBGS-GSR0yS3430KCofd102wjN7K7E,1127
1
+ ollamadiffuser/__init__.py,sha256=DrDVJ1zOBxtKD04fUKIidYLBgLORzagrUcTPw4zDqZM,1127
2
2
  ollamadiffuser/__main__.py,sha256=tNWMvEHq4ddtKLp7DrhIoOdnFw3F8RNrETC_u5xpkFI,141
3
3
  ollamadiffuser/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  ollamadiffuser/api/server.py,sha256=MqEKjckz8x8pU9dhZlLXET5XWt7ERfVcAfvdVfDLFWw,15464
@@ -19,14 +19,14 @@ ollamadiffuser/core/inference/base.py,sha256=AyoM6j37nhhh5RXQeH9Ycn9x1_eRPQQfC5n
19
19
  ollamadiffuser/core/inference/engine.py,sha256=xUCSQmGke9yAIoKGzh9jRaH1XE3GP9-uGM2hseuUzao,8139
20
20
  ollamadiffuser/core/inference/strategies/__init__.py,sha256=5LQgTeS5JVin-HiGX7UvjlPzd0awombKrNhvAVr3SSw,53
21
21
  ollamadiffuser/core/inference/strategies/controlnet_strategy.py,sha256=_lGlCaYhrrdn7N6Aw0X9a4L90wKPjCrr6EBfQqPVH2E,6712
22
- ollamadiffuser/core/inference/strategies/flux_strategy.py,sha256=NPlwoKC9TsoVOkCLP0Gzf33D2cWg-77McO6_hYWWbsU,5216
23
- ollamadiffuser/core/inference/strategies/generic_strategy.py,sha256=fGD4nnUspSlOtK7XWTjDJRRN5uDfQIQIuefBJSJhCEA,6843
22
+ ollamadiffuser/core/inference/strategies/flux_strategy.py,sha256=E5OIWlylL886V2lOxGSxHS-LULlBMj-kjWRpdFnFxdQ,5660
23
+ ollamadiffuser/core/inference/strategies/generic_strategy.py,sha256=IyCuIDi-MyscUD4LVvbrF6ZcpJRsLbDfQ6juHFU7JHU,6129
24
24
  ollamadiffuser/core/inference/strategies/gguf_strategy.py,sha256=kIGT85tDCcSsliXdaxEJoQz4Gm7Xt7TfEcu6xcmTvJg,3893
25
- ollamadiffuser/core/inference/strategies/hidream_strategy.py,sha256=D1BeqEXiMRzJER5SEPAGJAGm9B_lnczMM94wu6sVrHE,3707
25
+ ollamadiffuser/core/inference/strategies/hidream_strategy.py,sha256=qVCI1Z5S0_p7A5mlHvs2ueZeGTiR6FpMN-K2xM33brE,3818
26
26
  ollamadiffuser/core/inference/strategies/sd15_strategy.py,sha256=qz5eGA2xkcA_3oNywP-rCliXzP7jYpH60728QmOT5fw,4966
27
27
  ollamadiffuser/core/inference/strategies/sd3_strategy.py,sha256=6DjWebeyjaH7jiRm8hf2ismkJ3Gth69u71enVgMMPi8,2772
28
28
  ollamadiffuser/core/inference/strategies/sdxl_strategy.py,sha256=tslfENJIvEhDuj1D6aClFF6hv8i0JO2PukFQZsTCwQY,5137
29
- ollamadiffuser/core/inference/strategies/video_strategy.py,sha256=xJJU5GbHol8SMpNBllga8AkjQRTgZ0sZUkAwFIoJqk8,3939
29
+ ollamadiffuser/core/inference/strategies/video_strategy.py,sha256=WnzTkWY_b70kZQa0j4w6iSEnv0gwkqKG8IaAYrP3bRI,3834
30
30
  ollamadiffuser/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  ollamadiffuser/core/models/gguf_loader.py,sha256=ocfl3_MDVXC9nSjW8YJdz4kX1Q-Qe2ltu6w4fbqhxVY,35724
32
32
  ollamadiffuser/core/models/manager.py,sha256=rTEAameGih3wPcVG_Y-4k_brBeEqEoBjoI7fjggNtiY,16799
@@ -53,9 +53,9 @@ ollamadiffuser/ui/samples/scribble/face_sketch.png,sha256=MVVYy_aS48xoS_RnIDzLUa
53
53
  ollamadiffuser/ui/samples/scribble/tree_sketch.png,sha256=3P-NGgW25xRwreDxiBYKcDhd2oHZAwKSkjNVM5oPTWY,3017
54
54
  ollamadiffuser/ui/templates/index.html,sha256=XcrYZqtDR65dAiu959Ea19t3MbtYmXl9PVyMnR1Telk,42358
55
55
  ollamadiffuser/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- ollamadiffuser-2.0.1.dist-info/licenses/LICENSE,sha256=cnGL9l2P510Uk3TCnv62kot6vAfdSawhOZh7Y-oYoIE,1071
57
- ollamadiffuser-2.0.1.dist-info/METADATA,sha256=9MSH7COrR7xKmnSCL_1hK9OPmiJgZcS5LdeEWrYZlNo,31097
58
- ollamadiffuser-2.0.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
59
- ollamadiffuser-2.0.1.dist-info/entry_points.txt,sha256=Bp-ZzV3F7QpQu02Mcafeza-oTMjDslomz9qrhvfcQUA,116
60
- ollamadiffuser-2.0.1.dist-info/top_level.txt,sha256=97wOGgTCxDE765Nr_o7B4Kwr_M_jy8fCCeQ81sMKlC4,15
61
- ollamadiffuser-2.0.1.dist-info/RECORD,,
56
+ ollamadiffuser-2.0.3.dist-info/licenses/LICENSE,sha256=cnGL9l2P510Uk3TCnv62kot6vAfdSawhOZh7Y-oYoIE,1071
57
+ ollamadiffuser-2.0.3.dist-info/METADATA,sha256=64JcTKGPRp343mivzk_Y7Je06KZ7N0KB-96-9UcWQZo,31097
58
+ ollamadiffuser-2.0.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
59
+ ollamadiffuser-2.0.3.dist-info/entry_points.txt,sha256=Bp-ZzV3F7QpQu02Mcafeza-oTMjDslomz9qrhvfcQUA,116
60
+ ollamadiffuser-2.0.3.dist-info/top_level.txt,sha256=97wOGgTCxDE765Nr_o7B4Kwr_M_jy8fCCeQ81sMKlC4,15
61
+ ollamadiffuser-2.0.3.dist-info/RECORD,,