controlnet.rst 4.11 KB
Newer Older
1
2
3
ControlNets
===========

Muyang Li's avatar
Muyang Li committed
4
5
.. image:: https://huggingface.co/datasets/nunchaku-tech/cdn/resolve/main/nunchaku/assets/control.jpg
   :alt: ControlNet Integration with Nunchaku
6
7

Nunchaku supports mainly two types of ControlNets for FLUX.1.
Muyang Li's avatar
Muyang Li committed
8
9
The first one is `FLUX.1-tools <blog_flux1-tools_>`_ from Black-Forest-Labs.
The second one is the community-contributed ControlNets, like `ControlNet-Union-Pro <hf_cn-union-pro_>`_.
10
11
12
13
14
15
16
17
18

FLUX.1-tools
------------

FLUX.1-tools Base Models
^^^^^^^^^^^^^^^^^^^^^^^^

Nunchaku provides quantized FLUX.1-tools base models.
The implementation follows the same pattern as described in :doc:`Basic Usage <./basic_usage>`,
Muyang Li's avatar
Muyang Li committed
19
20
utilizing an API interface compatible with `Diffusers <github_diffusers_>`_
where the ``FluxTransformer2dModel`` is replaced with :class:`~nunchaku.models.transformers.transformer_flux.NunchakuFluxTransformer2dModel`.
21
22
23
24
25
26
27
28
29
The primary modification involves switching to the appropriate ControlNet pipeline.
Refer to the following examples for detailed implementation guidance.

.. tabs::

   .. tab:: FLUX.1-Canny-Dev

      .. literalinclude:: ../../../examples/flux.1-canny-dev.py
         :language: python
Muyang Li's avatar
Muyang Li committed
30
         :caption: Running FLUX.1-Canny-Dev (`examples/flux.1-canny-dev.py <https://github.com/nunchaku-tech/nunchaku/blob/main/examples/flux.1-canny-dev.py>`__)
31
32
33
34
35
36
         :linenos:

   .. tab:: FLUX.1-Depth-Dev

      .. literalinclude:: ../../../examples/flux.1-depth-dev.py
         :language: python
Muyang Li's avatar
Muyang Li committed
37
         :caption: Running FLUX.1-Depth-Dev (`examples/flux.1-depth-dev.py <https://github.com/nunchaku-tech/nunchaku/blob/main/examples/flux.1-depth-dev.py>`__)
38
39
40
41
42
43
         :linenos:

   .. tab:: FLUX.1-Fill-Dev

      .. literalinclude:: ../../../examples/flux.1-fill-dev.py
         :language: python
Muyang Li's avatar
Muyang Li committed
44
         :caption: Running FLUX.1-Fill-Dev (`examples/flux.1-fill-dev.py <https://github.com/nunchaku-tech/nunchaku/blob/main/examples/flux.1-fill-dev.py>`__)
45
46
47
48
49
50
         :linenos:

   .. tab:: FLUX.1-Redux-Dev

      .. literalinclude:: ../../../examples/flux.1-redux-dev.py
         :language: python
Muyang Li's avatar
Muyang Li committed
51
         :caption: Running FLUX.1-Redux-Dev (`examples/flux.1-redux-dev.py <https://github.com/nunchaku-tech/nunchaku/blob/main/examples/flux.1-redux-dev.py>`__)
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
         :linenos:

FLUX.1-tools LoRAs
^^^^^^^^^^^^^^^^^^

Nunchaku supports FLUX.1-tools LoRAs for converting quantized FLUX.1-dev models to controllable variants.
Implementation follows the same pattern as :doc:`Customized LoRAs <lora>`,
requiring only the ``FluxControlPipeline`` for the target model.

.. tabs::

   .. tab:: FLUX.1-Canny-Dev

      .. literalinclude:: ../../../examples/flux.1-canny-dev-lora.py
         :language: python
Muyang Li's avatar
Muyang Li committed
67
         :caption: Running FLUX.1-Canny-Dev-LoRA (`examples/flux.1-canny-dev-lora.py <https://github.com/nunchaku-tech/nunchaku/blob/main/examples/flux.1-canny-dev-lora.py>`__)
68
69
70
71
72
73
         :linenos:

   .. tab:: FLUX.1-Depth-Dev

      .. literalinclude:: ../../../examples/flux.1-depth-dev-lora.py
         :language: python
Muyang Li's avatar
Muyang Li committed
74
         :caption: Running FLUX.1-Depth-Dev-LoRA (`examples/flux.1-depth-dev-lora.py <https://github.com/nunchaku-tech/nunchaku/blob/main/examples/flux.1-depth-dev-lora.py>`__)
75
76
77
78
79
         :linenos:

ControlNet-Union-Pro
--------------------

Muyang Li's avatar
Muyang Li committed
80
`ControlNet-Union-Pro <hf_cn-union-pro_>`_ is a community-developed ControlNet implementation for FLUX.1.
81
Unlike FLUX.1-tools that directly fine-tunes the model to incorporate control signals,
Muyang Li's avatar
Muyang Li committed
82
`ControlNet-Union-Pro <hf_cn-union-pro_>`_ uses additional control modules.
83
84
85
It provides native support for multiple control types including Canny edges and depth maps.

Nunchaku currently executes these control modules at their original precision levels.
Muyang Li's avatar
Muyang Li committed
86
The following example demonstrates running `ControlNet-Union-Pro <hf_cn-union-pro_>`_ with Nunchaku.
87
88
89

.. literalinclude:: ../../../examples/flux.1-dev-controlnet-union-pro.py
   :language: python
Muyang Li's avatar
Muyang Li committed
90
   :caption: Running ControlNet-Union-Pro (`examples/flux.1-dev-controlnet-union-pro.py <https://github.com/nunchaku-tech/nunchaku/blob/main/examples/flux.1-dev-controlnet-union-pro.py>`__)
91
92
   :linenos:

Muyang Li's avatar
Muyang Li committed
93
Usage for `ControlNet-Union-Pro2 <hf_cn-union-pro2_>`_ is similar.
94
Quantized ControlNet support is currently in development. Stay tuned!