[O] Better logging
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
from .nf4 import *
|
||||
|
||||
import argparse
|
||||
import time
|
||||
import Time
|
||||
import logging
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.getLogger("transformers.modeling_utils").setLevel(logging.ERROR)
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument("prompt", type=str, help="Prompt to generate image from")
|
||||
|
||||
+5
-6
@@ -38,15 +38,14 @@ MODEL_CONFIGS = {
|
||||
|
||||
|
||||
def log_vram(msg: str):
|
||||
print(msg)
|
||||
print(f"GPU memory usage: {torch.cuda.memory_allocated() / 1024**2:.2f} MB")
|
||||
print(f"{msg} (used {torch.cuda.memory_allocated() / 1024**2:.2f} MB VRAM)\n")
|
||||
|
||||
|
||||
def load_models(model_type: str):
|
||||
config = MODEL_CONFIGS[model_type]
|
||||
|
||||
tokenizer_4 = PreTrainedTokenizerFast.from_pretrained(LLAMA_MODEL_NAME)
|
||||
log_vram("Tokenizer loaded!")
|
||||
log_vram("✅ Tokenizer loaded!")
|
||||
|
||||
text_encoder_4 = LlamaForCausalLM.from_pretrained(
|
||||
LLAMA_MODEL_NAME,
|
||||
@@ -56,14 +55,14 @@ def load_models(model_type: str):
|
||||
torch_dtype=torch.bfloat16,
|
||||
device_map="auto",
|
||||
)
|
||||
log_vram("Text encoder loaded!")
|
||||
log_vram("✅ Text encoder loaded!")
|
||||
|
||||
transformer = HiDreamImageTransformer2DModel.from_pretrained(
|
||||
config["path"],
|
||||
subfolder="transformer",
|
||||
torch_dtype=torch.bfloat16
|
||||
)
|
||||
log_vram("Transformer loaded!")
|
||||
log_vram("✅ Transformer loaded!")
|
||||
|
||||
pipe = HiDreamImagePipeline.from_pretrained(
|
||||
config["path"],
|
||||
@@ -73,7 +72,7 @@ def load_models(model_type: str):
|
||||
torch_dtype=torch.bfloat16,
|
||||
)
|
||||
pipe.transformer = transformer
|
||||
log_vram("Pipeline loaded!")
|
||||
log_vram("✅ Pipeline loaded!")
|
||||
pipe.enable_sequential_cpu_offload()
|
||||
|
||||
return pipe, config
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
from .nf4 import *
|
||||
|
||||
import argparse
|
||||
import time
|
||||
import IPython
|
||||
import logging
|
||||
|
||||
from IPython.display import Image, display
|
||||
|
||||
|
||||
def gen(prompt: str, seed: int = -1, res: str = "1024x1024", output="output.png"):
|
||||
"""Generate and display an image from the prompt."""
|
||||
resolution = tuple(map(int, res.strip().split("x")))
|
||||
|
||||
st = time.time()
|
||||
image, final_seed = generate_image(pipe, args.model, prompt, resolution, seed)
|
||||
image.save(output)
|
||||
print(f"Image saved to {output}")
|
||||
print(f"Seed used: {final_seed}, Time: {time.time() - st:.2f} seconds")
|
||||
|
||||
# Display the image
|
||||
display(Image(filename=output))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.getLogger("transformers.modeling_utils").setLevel(logging.ERROR)
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-m", "--model", type=str, default="dev",
|
||||
help="Model to use",
|
||||
choices=["dev", "full", "fast"])
|
||||
args = parser.parse_args()
|
||||
|
||||
# Load model
|
||||
print(f"Loading model {args.model}...")
|
||||
pipe, _ = load_models(args.model)
|
||||
print()
|
||||
print("✅ Model loaded successfully!")
|
||||
print("Try gen('your prompt here') to generate an image.")
|
||||
print()
|
||||
|
||||
# Set up IPython shell
|
||||
banner = f"""
|
||||
HiDream-I1-nf4 Shell
|
||||
|
||||
Model: {args.model} NF4 Quantized
|
||||
"""
|
||||
IPython.start_ipython(argv=[], user_ns={"gen": gen}, banner=banner, display_banner=True)
|
||||
Reference in New Issue
Block a user