Skip to content

add Z-Image#239

Open
LVZJself wants to merge 5 commits intov1from
dev/oss/z-image
Open

add Z-Image#239
LVZJself wants to merge 5 commits intov1from
dev/oss/z-image

Conversation

@LVZJself
Copy link
Collaborator

No description provided.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request integrates the Z-Image text-to-image generation model into the DiffSynth-Engine. It provides the core transformer architecture, a dedicated pipeline for generation, and all necessary configurations. This enhancement allows users to leverage the Z-Image model within the DiffSynth-Engine framework, offering a new option for high-quality image synthesis.

Highlights

  • New Z-Image Model Integration: Introduced the Z-Image model and its associated pipeline, expanding the image generation capabilities of DiffSynth-Engine.
  • Transformer Model Adaptation: Added the ZImageTransformer2DModel, adapted from Hugging Face Diffusers, which includes custom attention mechanisms, feed-forward networks, and rotary positional embeddings.
  • Pipeline Implementation: Implemented the ZImagePipeline for text-to-image generation, featuring prompt encoding, latent preparation, and noise prediction with classifier-free guidance (CFG) and CFG parallelism support.
  • Configuration and Initialization: Added ZImagePipelineConfig and integrated the new model and pipeline into the engine's configuration and initialization flow.
  • Examples and Tests: Provided an example script demonstrating the usage of the Z-Image pipeline and added dedicated test cases for both Z-Image and Z-Image-Turbo models to ensure correctness and stability.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request integrates the Z-Image model and its corresponding pipeline into the diffsynth_engine. This includes adding ZImagePipelineConfig, ZImageTransformer2DModel, and ZImagePipeline classes, along with an example script and test cases. The review identified a critical bug in the ZImagePipeline's non-CFG forward pass where latents.to(self) was incorrectly used, leading to a runtime error. Additionally, a potential type mismatch bug was noted in ZImageTransformer2DModel's forward method when return_dict=True is used, as it returns a list of tensors instead of a single torch.FloatTensor. A suggestion was also made to add a return type hint to the from_pretrained class method in ZImagePipeline for improved type checking and readability.

# Unpatchify
x = self.unpatchify(list(unified.unbind(dim=0)), x_size, patch_size, f_patch_size, x_pos_offsets)

return (x,) if not return_dict else Transformer2DModelOutput(sample=x)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The Transformer2DModelOutput expects a torch.FloatTensor for its sample argument, but x is a List[torch.Tensor]. This type mismatch will cause issues if return_dict=True is ever used. Since the pipeline code seems to rely on return_dict=False, it's safer to remove the return_dict logic to avoid potential bugs.

Consider always returning the tuple (x,).

Suggested change
return (x,) if not return_dict else Transformer2DModelOutput(sample=x)
return (x,)

)

@classmethod
def from_pretrained(cls, model_path_or_config: str | ZImagePipelineConfig):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For better type checking and code readability, please add a return type hint to the from_pretrained class method.

Suggested change
def from_pretrained(cls, model_path_or_config: str | ZImagePipelineConfig):
def from_pretrained(cls, model_path_or_config: str | ZImagePipelineConfig) -> "ZImagePipeline":

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant