daKhosa commited on
Commit
83e482c
·
1 Parent(s): 0b97720

Load raw Gemma weights with Sulphur key mapping

Browse files
Files changed (1) hide show
  1. app.py +29 -6
app.py CHANGED
@@ -86,9 +86,11 @@ builtins.__import__ = _import_without_xformers
86
  try:
87
  from ltx_core.loader import LTXV_LORA_COMFY_RENAMING_MAP, LoraPathStrengthAndSDOps
88
  from ltx_core.loader.primitives import StateDict
 
89
  from ltx_core.loader.sft_loader import SafetensorsStateDictLoader
90
  from ltx_core.model.video_vae import TilingConfig, get_video_chunks_number
91
  from ltx_core.quantization import QuantizationPolicy
 
92
  from ltx_pipelines.distilled import DistilledPipeline
93
  from ltx_pipelines.utils.args import ImageConditioningInput
94
  from ltx_pipelines.utils.media_io import encode_video
@@ -96,6 +98,24 @@ finally:
96
  builtins.__import__ = _real_import
97
 
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  _SAFETENSORS_DTYPE_MAP = {
100
  "F64": torch.float64,
101
  "F32": torch.float32,
@@ -168,12 +188,11 @@ def _download(repo_id, filename, local_dir):
168
  def _ensure_gemma_model_alias(gemma_weight):
169
  gemma_weight = Path(gemma_weight)
170
  alias = gemma_weight.with_name("model.safetensors")
171
- if alias.exists():
172
  return alias
173
- try:
174
- alias.symlink_to(gemma_weight.name)
175
- except OSError:
176
- os.link(gemma_weight, alias)
177
  print(f"[download] ready: {alias}")
178
  return alias
179
 
@@ -198,9 +217,10 @@ def download_assets():
198
 
199
  gemma_folder = "gemma-3-12b-it-qat-q4_0-unquantized"
200
  gemma_files = [
201
- f"{gemma_folder}/{gemma_folder}_quanto_bf16_int8.safetensors",
202
  f"{gemma_folder}/added_tokens.json",
203
  f"{gemma_folder}/chat_template.json",
 
204
  f"{gemma_folder}/config_light.json",
205
  f"{gemma_folder}/generation_config.json",
206
  f"{gemma_folder}/preprocessor_config.json",
@@ -216,6 +236,9 @@ def download_assets():
216
  if filename.endswith(".safetensors"):
217
  gemma_weight = path
218
 
 
 
 
219
  _ensure_gemma_model_alias(gemma_weight)
220
 
221
  return {
 
86
  try:
87
  from ltx_core.loader import LTXV_LORA_COMFY_RENAMING_MAP, LoraPathStrengthAndSDOps
88
  from ltx_core.loader.primitives import StateDict
89
+ from ltx_core.loader.sd_ops import KeyValueOperationResult, SDOps
90
  from ltx_core.loader.sft_loader import SafetensorsStateDictLoader
91
  from ltx_core.model.video_vae import TilingConfig, get_video_chunks_number
92
  from ltx_core.quantization import QuantizationPolicy
93
+ import ltx_pipelines.utils.model_ledger as _model_ledger_mod
94
  from ltx_pipelines.distilled import DistilledPipeline
95
  from ltx_pipelines.utils.args import ImageConditioningInput
96
  from ltx_pipelines.utils.media_io import encode_video
 
98
  builtins.__import__ = _real_import
99
 
100
 
101
+ _model_ledger_mod.GEMMA_LLM_KEY_OPS = (
102
+ SDOps("GEMMA_LLM_KEY_OPS_SULPHUR")
103
+ .with_matching(prefix="model.language_model.")
104
+ .with_matching(prefix="model.vision_tower.")
105
+ .with_matching(prefix="model.multi_modal_projector.")
106
+ .with_replacement("model.language_model.", "model.model.language_model.")
107
+ .with_replacement("model.vision_tower.", "model.model.vision_tower.")
108
+ .with_replacement("model.multi_modal_projector.", "model.model.multi_modal_projector.")
109
+ .with_kv_operation(
110
+ operation=lambda key, value: [
111
+ KeyValueOperationResult(key, value),
112
+ KeyValueOperationResult("model.lm_head.weight", value),
113
+ ],
114
+ key_prefix="model.model.language_model.embed_tokens.weight",
115
+ )
116
+ )
117
+
118
+
119
  _SAFETENSORS_DTYPE_MAP = {
120
  "F64": torch.float64,
121
  "F32": torch.float32,
 
188
  def _ensure_gemma_model_alias(gemma_weight):
189
  gemma_weight = Path(gemma_weight)
190
  alias = gemma_weight.with_name("model.safetensors")
191
+ if gemma_weight == alias:
192
  return alias
193
+ if alias.exists() or alias.is_symlink():
194
+ alias.unlink()
195
+ gemma_weight.replace(alias)
 
196
  print(f"[download] ready: {alias}")
197
  return alias
198
 
 
217
 
218
  gemma_folder = "gemma-3-12b-it-qat-q4_0-unquantized"
219
  gemma_files = [
220
+ f"{gemma_folder}/{gemma_folder}.safetensors",
221
  f"{gemma_folder}/added_tokens.json",
222
  f"{gemma_folder}/chat_template.json",
223
+ f"{gemma_folder}/config.json",
224
  f"{gemma_folder}/config_light.json",
225
  f"{gemma_folder}/generation_config.json",
226
  f"{gemma_folder}/preprocessor_config.json",
 
236
  if filename.endswith(".safetensors"):
237
  gemma_weight = path
238
 
239
+ old_quanto = ASSETS_DIR / gemma_folder / f"{gemma_folder}_quanto_bf16_int8.safetensors"
240
+ if old_quanto.exists():
241
+ old_quanto.unlink()
242
  _ensure_gemma_model_alias(gemma_weight)
243
 
244
  return {