Diffusers documentation

Các khối Pipeline

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Các khối Pipeline

ModularPipelineBlocks

lớp diffusers.ModularPipelineBlocks

< >

( )

Lớp cơ sở cho tất cả các Khối Pipeline: ConditionalPipelineBlocks, AutoPipelineBlocks, SequentialPipelineBlocks, LoopSequentialPipelineBlocks

ModularPipelineBlocks cung cấp phương thức để tải và lưu trữ định nghĩa của các khối pipeline.

get_block_state

< >

( state: PipelineState )

Lấy tất cả các đầu vào và các giá trị trung gian trong một từ điển

get_execution_blocks

< >

( **kwargs )

Tham số

  • **kwargs — Tên và giá trị đầu vào. Chỉ các đầu vào kích hoạt mới ảnh hưởng đến việc chọn khối.

Lấy khối (hoặc các khối) sẽ được thực thi dựa trên các đầu vào. Phải được triển khai bởi các lớp con hỗ trợ chọn khối có điều kiện.

get_workflow

< >

( workflow_name: str )

Tham số

  • workflow_name — Tên của workflow cần lấy.

Lấy các khối thực thi cho một workflow cụ thể. Phải được triển khai bởi các lớp con định nghĩa _workflow_map.

init_pipeline

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = None )

tạo một ModularPipeline, tùy chọn chấp nhận pretrained_model_name_or_path để tải từ hub.

SequentialPipelineBlocks

lớp diffusers.SequentialPipelineBlocks

< >

( )

Tham số

  • block_classes — danh sách các lớp khối sẽ được sử dụng
  • block_names — danh sách các tiền tố cho mỗi khối

Một Pipeline Blocks kết hợp nhiều lớp pipeline block thành một. Khi được gọi, nó sẽ gọi từng block theo thứ tự.

Lớp này kế thừa từ ModularPipelineBlocks. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các khối pipeline (chẳng hạn như tải hoặc lưu, v.v.)

from_blocks_dict

< >

( blocks_dict: dictdescription: str | None = None )

Tham số

  • blocks_dict — Từ điển ánh xạ tên khối đến các lớp hoặc đối tượng của khối

Tạo một instance của SequentialPipelineBlocks từ một từ điển các khối.

get_execution_blocks

< >

( **kwargs )

Tham số

  • **kwargs — Tên và giá trị đầu vào. Chỉ các đầu vào kích hoạt mới ảnh hưởng đến việc chọn khối.

Lấy các khối sẽ được thực thi dựa trên các đầu vào được chỉ định.

Khi quá trình duyệt đi qua các khối tuần tự, các đầu ra trung gian từ các khối đã được giải quyết sẽ được thêm vào các đầu vào đang hoạt động. Điều này có nghĩa là các khối điều kiện phụ thuộc vào các giá trị trung gian (ví dụ: “chạy img2img nếu image_latents có mặt”) sẽ được giải quyết chính xác, miễn là điều kiện dựa trên sự hiện diện hay vắng mặt (None hoặc không phải None), chứ không dựa trên giá trị thực tế.

LoopSequentialPipelineBlocks

lớp diffusers.LoopSequentialPipelineBlocks

< >

( )

Tham số

  • block_classes — danh sách các lớp khối sẽ được sử dụng
  • block_names — danh sách các tiền tố cho mỗi khối

Pipeline blocks là các khối kết hợp nhiều lớp khối pipeline khác nhau vào một vòng lặp For. Khi được gọi, nó sẽ gọi từng khối theo thứ tự.

Lớp này kế thừa từ ModularPipelineBlocks. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các khối pipeline (chẳng hạn như tải hoặc lưu, v.v.)

from_blocks_dict

< >

( blocks_dict: dict )

Tham số

  • blocks_dict — Từ điển ánh xạ tên khối đến các instance của khối

Tạo một instance của LoopSequentialPipelineBlocks từ một từ điển các blocks.

AutoPipelineBlocks

lớp diffusers.AutoPipelineBlocks

< >

( )

Tham số

  • block_classes — Danh sách các lớp khối sẽ được sử dụng. Phải có cùng độ dài với block_names và block_trigger_inputs.
  • block_names — Danh sách tên cho từng khối. Phải có cùng độ dài với block_classes và block_trigger_inputs.
  • block_trigger_inputs — Danh sách tên đầu vào, trong đó mỗi phần tử chỉ định đầu vào kích hoạt cho khối tương ứng. Sử dụng None để đánh dấu khối mặc định.

Một Pipeline Blocks tự động chọn khối để chạy dựa trên sự hiện diện của các đầu vào kích hoạt.

Đây là một phiên bản chuyên dụng của ConditionalPipelineBlocks trong đó:

  • Mỗi khối có một đầu vào kích hoạt tương ứng (lớp ánh xạ 1:1)
  • Việc chọn khối là tự động: khối đầu tiên có đầu vào kích hoạt sẽ được chọn
  • block_trigger_inputs phải có cùng độ dài với block_names và block_classes
  • Sử dụng None trong block_trigger_inputs để chỉ định khối mặc định, tức là khối sẽ được thực thi nếu không có đầu vào kích hoạt nào

Ví dụ:

    class MyAutoBlock(AutoPipelineBlocks):
        block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
        block_names = ["inpaint", "img2img", "text2img"]
        block_trigger_inputs = ["mask_image", "image", None]  # text2img is the default

Với định nghĩa này:

  • Miễn là mask_image được cung cấp, khối “inpaint” sẽ được thực thi (bất kể image có được cung cấp hay không)
  • Nếu mask_image không được cung cấp nhưng image được cung cấp, khối “img2img” sẽ chạy
  • Ngược lại, khối “text2img” sẽ được thực thi (mặc định, trigger là None)

select_block

< >

( **kwargs )

Chọn khối dựa trên đầu vào kích hoạt nào có mặt (không phải None).

ConditionalPipelineBlocks

lớp diffusers.ConditionalPipelineBlocks

< >

( )

Tham số

  • block_classes — Danh sách các lớp khối sẽ được sử dụng. Phải có cùng độ dài với block_names.
  • block_names — Danh sách tên cho từng khối. Phải có cùng độ dài với block_classes.
  • block_trigger_inputs — Danh sách tên đầu vào mà select_block() sử dụng để xác định khối nào cần chạy. Đối với ConditionalPipelineBlocks, giá trị này không cần tương ứng với block_names và block_classes. Đối với AutoPipelineBlocks, giá trị này phải có cùng độ dài với block_names và block_classes, trong đó mỗi phần tử chỉ định đầu vào kích hoạt cho khối tương ứng.
  • default_block_name — Tên của khối mặc định để chạy khi không có đầu vào kích hoạt nào khớp. Nếu là None, khối này có thể bị bỏ qua hoàn toàn khi không có đầu vào kích hoạt nào được cung cấp.

A Pipeline Blocks chọn có điều kiện một block để chạy dựa trên các đầu vào. Các lớp con phải triển khai phương thức select_block để định nghĩa logic chọn block. Hiện tại, chúng tôi chỉ hỗ trợ logic chọn dựa trên sự hiện diện hay vắng mặt của các đầu vào (tức là chúng có phải là None hay không)

Lớp này kế thừa từ ModularPipelineBlocks. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các khối pipeline (chẳng hạn như tải hoặc lưu, v.v.)

get_execution_blocks

< >

( **kwargs ) →

  • ModularPipelineBlocks

Tham số

  • **kwargs — Tên và giá trị đầu vào. Chỉ các đầu vào kích hoạt mới ảnh hưởng đến việc chọn khối.

Trả về

  • ModularPipelineBlocks

Một khối lá hoặc SequentialPipelineBlocks đã được giải quyết

  • None: Nếu khối này bị bỏ qua (không có bộ kích hoạt nào khớp và không có giá trị mặc định)

Lấy khối (các khối) sẽ được thực thi dựa trên các đầu vào.

Giải quyết đệ quy các ConditionalPipelineBlocks lồng nhau cho đến khi đạt được một trong các điều kiện sau:

  • Một khối lá (không có sub_blocks hay LoopSequentialPipelineBlocks) → trả về một ModularPipelineBlocks đơn
  • A SequentialPipelineBlocks → chuyển tiếp đến get_execution_blocks() của nó, hàm này trả về một SequentialPipelineBlocks chứa các khối thực thi đã được phân giải

select_block

< >

( **kwargs ) → str | None

Tham số

  • **kwargs — Tên và giá trị của các đầu vào kích hoạt từ trạng thái.

Trả về

str | None

Tên của khối cần chạy, hoặc None để sử dụng mặc định/bỏ qua.

Chọn khối để chạy dựa trên các đầu vào kích hoạt. Các lớp con phải triển khai phương thức này để định nghĩa logic cho việc chọn khối.

Lưu ý: Khi các đầu vào kích hoạt bao gồm các đầu ra trung gian từ các khối trước đó, logic chọn lọc chỉ nên phụ thuộc vào sự hiện diện hay vắng mặt của đầu vào (tức là có phải None hay không), chứ không phải giá trị thực tế của nó. Điều này là do get_execution_blocks() giải quyết các điều kiện một cách tĩnh bằng cách lan truyền tên của các đầu ra trung gian mà không kèm theo giá trị thời gian chạy của chúng.

Update on GitHub