remove unnecessary changes

This commit is contained in:
Aryan
2025-01-11 01:11:27 +01:00
parent d6821c3da8
commit 06dd96c0a3
4 changed files with 27 additions and 35 deletions
+1 -2
View File
@@ -42,9 +42,8 @@ def load_diffusion_models(
cache_dir: Optional[str] = None, cache_dir: Optional[str] = None,
**kwargs, **kwargs,
): ):
subfolder = kwargs.get("subfolder", "transformer")
transformer = CogVideoXTransformer3DModel.from_pretrained( transformer = CogVideoXTransformer3DModel.from_pretrained(
model_id, subfolder=subfolder, torch_dtype=transformer_dtype, revision=revision, cache_dir=cache_dir model_id, subfolder="transformer", torch_dtype=transformer_dtype, revision=revision, cache_dir=cache_dir
) )
scheduler = CogVideoXDDIMScheduler.from_pretrained(model_id, subfolder="scheduler") scheduler = CogVideoXDDIMScheduler.from_pretrained(model_id, subfolder="scheduler")
return {"transformer": transformer, "scheduler": scheduler} return {"transformer": transformer, "scheduler": scheduler}
@@ -63,9 +63,8 @@ def load_diffusion_models(
cache_dir: Optional[str] = None, cache_dir: Optional[str] = None,
**kwargs, **kwargs,
) -> Dict[str, Union[nn.Module, FlowMatchEulerDiscreteScheduler]]: ) -> Dict[str, Union[nn.Module, FlowMatchEulerDiscreteScheduler]]:
subfolder = kwargs.get("subfolder", "transformer")
transformer = HunyuanVideoTransformer3DModel.from_pretrained( transformer = HunyuanVideoTransformer3DModel.from_pretrained(
model_id, subfolder=subfolder, torch_dtype=transformer_dtype, revision=revision, cache_dir=cache_dir model_id, subfolder="transformer", torch_dtype=transformer_dtype, revision=revision, cache_dir=cache_dir
) )
scheduler = FlowMatchEulerDiscreteScheduler(shift=shift) scheduler = FlowMatchEulerDiscreteScheduler(shift=shift)
return {"transformer": transformer, "scheduler": scheduler} return {"transformer": transformer, "scheduler": scheduler}
+1 -2
View File
@@ -45,9 +45,8 @@ def load_diffusion_models(
cache_dir: Optional[str] = None, cache_dir: Optional[str] = None,
**kwargs, **kwargs,
) -> Dict[str, nn.Module]: ) -> Dict[str, nn.Module]:
subfolder = kwargs.get("subfolder", "transformer")
transformer = LTXVideoTransformer3DModel.from_pretrained( transformer = LTXVideoTransformer3DModel.from_pretrained(
model_id, subfolder=subfolder, torch_dtype=transformer_dtype, revision=revision, cache_dir=cache_dir model_id, subfolder="transformer", torch_dtype=transformer_dtype, revision=revision, cache_dir=cache_dir
) )
scheduler = FlowMatchEulerDiscreteScheduler() scheduler = FlowMatchEulerDiscreteScheduler()
return {"transformer": transformer, "scheduler": scheduler} return {"transformer": transformer, "scheduler": scheduler}
+24 -29
View File
@@ -5,7 +5,7 @@ import os
import random import random
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pathlib import Path from pathlib import Path
from typing import Any, Dict from typing import Any, Dict, List
import diffusers import diffusers
import torch import torch
@@ -207,16 +207,6 @@ class Trainer:
if self.args.enable_tiling: if self.args.enable_tiling:
self.vae.enable_tiling() self.vae.enable_tiling()
def _disable_grad_for_components(self, components: list):
for component in components:
if component is not None:
component.requires_grad_(False)
def _enable_grad_for_components(self, components: list):
for component in components:
if component is not None:
component.requires_grad_(True)
def prepare_precomputations(self) -> None: def prepare_precomputations(self) -> None:
if not self.args.precompute_conditions: if not self.args.precompute_conditions:
return return
@@ -391,20 +381,14 @@ class Trainer:
diffusion_components = self.model_config["load_diffusion_models"](**self._get_load_components_kwargs()) diffusion_components = self.model_config["load_diffusion_models"](**self._get_load_components_kwargs())
self._set_components(diffusion_components) self._set_components(diffusion_components)
self._disable_grad_for_components( components = [self.text_encoder, self.text_encoder_2, self.text_encoder_3, self.vae]
components=[ self._disable_grad_for_components(components)
self.text_encoder,
self.text_encoder_2,
self.text_encoder_3,
self.vae,
]
)
if self.args.training_type == "full-finetune": if self.args.training_type == "full-finetune":
logger.info("Full Fine Tuning Enabled") logger.info("Finetuning transformer with no additional parameters.")
self._enable_grad_for_components(components=[self.transformer]) self._enable_grad_for_components(components=[self.transformer])
else: else:
logger.info("Lora Fine Tuning Enabled") logger.info("Finetuning transformer with low-rank peft parameters.")
self._disable_grad_for_components(components=[self.transformer]) self._disable_grad_for_components(components=[self.transformer])
# For mixed precision training we cast all non-trainable weights (vae, text_encoder and transformer) to half-precision # For mixed precision training we cast all non-trainable weights (vae, text_encoder and transformer) to half-precision
@@ -412,7 +396,7 @@ class Trainer:
weight_dtype = self._get_training_dtype(accelerator=self.state.accelerator) weight_dtype = self._get_training_dtype(accelerator=self.state.accelerator)
if torch.backends.mps.is_available() and weight_dtype == torch.bfloat16: if torch.backends.mps.is_available() and weight_dtype == torch.bfloat16:
# due to pytorch#99272, MPS does not yet support bfloat16. # Due to pytorch#99272, MPS does not yet support bfloat16.
raise ValueError( raise ValueError(
"Mixed precision training with bfloat16 is not supported on MPS. Please use fp16 (recommended) or fp32 instead." "Mixed precision training with bfloat16 is not supported on MPS. Please use fp16 (recommended) or fp32 instead."
) )
@@ -1174,14 +1158,13 @@ class Trainer:
enable_model_cpu_offload=self.args.enable_model_cpu_offload, enable_model_cpu_offload=self.args.enable_model_cpu_offload,
) )
else: else:
# `torch_dtype` is manually set within `initialize_pipeline()`.
self._delete_components() self._delete_components()
if self.args.training_type == "lora":
transformer = None # Load the transformer weights from the final checkpoint if performing full-finetune
else: transformer = None
transformer = self.model_config["load_diffusion_models"]( if self.args.training_type == "full-finetune":
model_id=self.args.output_dir, subfolder=None transformer = self.model_config["load_diffusion_models"](model_id=self.args.output_dir)["transformer"]
)["transformer"]
pipeline = self.model_config["initialize_pipeline"]( pipeline = self.model_config["initialize_pipeline"](
model_id=self.args.pretrained_model_name_or_path, model_id=self.args.pretrained_model_name_or_path,
transformer=transformer, transformer=transformer,
@@ -1192,7 +1175,19 @@ class Trainer:
enable_tiling=self.args.enable_tiling, enable_tiling=self.args.enable_tiling,
enable_model_cpu_offload=self.args.enable_model_cpu_offload, enable_model_cpu_offload=self.args.enable_model_cpu_offload,
) )
# Load the LoRA weights if performing LoRA finetuning
if self.args.training_type == "lora": if self.args.training_type == "lora":
pipeline.load_lora_weights(self.args.output_dir) pipeline.load_lora_weights(self.args.output_dir)
return pipeline return pipeline
def _disable_grad_for_components(self, components: List[torch.nn.Module]):
for component in components:
if component is not None:
component.requires_grad_(False)
def _enable_grad_for_components(self, components: List[torch.nn.Module]):
for component in components:
if component is not None:
component.requires_grad_(True)