Diffusers documentation

Trạng thái

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Trạng thái

Các Block dựa vào các cấu trúc dữ liệu PipelineState và BlockState để truyền thông và chia sẻ dữ liệu.

Trạng tháiMô tả
PipelineStateDuy trì toàn bộ dữ liệu cần thiết cho việc thực thi của một pipeline và cho phép các khối đọc và cập nhật dữ liệu của nó.
BlockStateCho phép mỗi khối thực hiện phép tính của nó với dữ liệu cần thiết từ inputs

Hướng dẫn này giải thích cách các trạng thái hoạt động và cách chúng kết nối các khối.

PipelineState

PipelineState là một bộ chứa trạng thái toàn cục cho tất cả các khối. Nó duy trì trạng thái thời gian chạy đầy đủ của pipeline và cung cấp một cách có cấu trúc để các khối đọc và ghi vào dữ liệu dùng chung.

PipelineState lưu trữ tất cả dữ liệu trong một dict values, đây là một trạng thái mutable chứa các giá trị đầu vào do người dùng cung cấp và các giá trị đầu ra trung gian được tạo ra bởi các block. Nếu một block sửa đổi một input, thay đổi đó sẽ được phản ánh trong dict values sau khi gọi set_block_state.

PipelineState(
  values={
    'prompt': 'a cat'
    'guidance_scale': 7.0
    'num_inference_steps': 25
    'prompt_embeds': Tensor(dtype=torch.float32, shape=torch.Size([1, 1, 1, 1]))
    'negative_prompt_embeds': None
  },
)

BlockState

BlockState là một góc nhìn cục bộ về các biến liên quan mà một khối riêng lẻ cần từ PipelineState để thực hiện các phép tính của nó.

Truy cập trực tiếp các biến này dưới dạng thuộc tính như block_state.image.

BlockState(
    image: <PIL.Image.Image image mode=RGB size=512x512 at 0x7F3ECC494640>
)

Khi phương thức __call__ của một block được thực thi, nó lấy BlockState bằng self.get_block_state(state), thực hiện các thao tác của nó, và cập nhật PipelineState bằng self.set_block_state(state, block_state).

def __call__(self, components, state):
    # retrieve BlockState
    block_state = self.get_block_state(state)

    # computation logic on inputs

    # update PipelineState
    self.set_block_state(state, block_state)
    return components, state

Tương tác trạng thái

Tương tác giữa PipelineState và BlockState được xác định bởi inputs và intermediate_outputs của một block.

  • inputs, một khối có thể sửa đổi một đầu vào - chẳng hạn như block_state.image - và thay đổi này có thể được lan truyền toàn cục đến PipelineState bằng cách gọi set_block_state.
  • intermediate_outputs là một biến mới được tạo bởi một khối. Nó được thêm vào dict values của PipelineState và có sẵn cho các khối tiếp theo hoặc được người dùng truy cập như một đầu ra cuối cùng từ pipeline.
Update on GitHub