Diffusers documentation

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

Pipeline

ModularPipeline

lớp diffusers.ModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

Tham số

  • blocks — ModularPipelineBlocks, các khối sẽ được sử dụng trong pipeline

Lớp cơ sở cho tất cả các pipeline Modular.

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )

Tham số

  • pretrained_model_name_or_path (str hoặc os.PathLike, tùy chọn) — Đường dẫn đến cấu hình pipeline được huấn luyện trước. Hệ thống sẽ cố gắng tải cấu hình từ modular_model_index.json trước, sau đó chuyển sang model_index.json để đảm bảo tương thích với các kho lưu trữ chuẩn không dùng kiến trúc modular. Nếu pretrained_model_name_or_path không chứa bất kỳ cấu hình pipeline nào, nó sẽ được đặt thành None trong quá trình khởi tạo.
  • trust_remote_code (bool, tùy chọn) — Có tin tưởng mã từ xa khi tải pipeline hay không, cần đặt thành True nếu bạn muốn tạo các khối pipeline dựa trên mã tùy chỉnh trong pretrained_model_name_or_path
  • components_manager (ComponentsManager, optional) — Thư mục ComponentsManager để quản lý nhiều thành phần xuyên suốt các pipeline khác nhau và áp dụng các chiến lược offloading.
  • collection (str, optional) —` Tên bộ sưu tập để tổ chức các thành phần trong ComponentsManager.
  • workflow (str, optional) — Tên của một workflow được khai báo bởi các khối pipeline. Nếu được cung cấp, các khối sẽ được cắt giảm xuống các khối thực thi của workflow đó, do đó pipeline chỉ mong đợi — và load_components() chỉ tải — các thành phần mà workflow đó sử dụng.

Tải một ModularPipeline từ kho lưu trữ trên huggingface hub.

get_component_spec

< >

( name: str )

load_components

< >

( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )

Tham số

  • names — danh sách tên các thành phần cần nạp. Nếu là None, sẽ nạp tất cả các thành phần có default_creation_method == “from_pretrained”. Nếu được cung cấp dưới dạng danh sách hoặc chuỗi, sẽ chỉ nạp các thành phần được chỉ định.
  • workflow — tên của một workflow được khai báo bởi các khối pipeline. Nếu được cung cấp, chỉ các thành phần mà các khối thực thi của workflow sử dụng sẽ được tải. Không thể kết hợp với names.
  • **kwargs — các kwargs bổ sung để truyền cho from_pretrained().Có thể là:
    • một giá trị duy nhất được áp dụng cho tất cả các thành phần cần được nạp, ví dụ dtype=torch.bfloat16
    • một dict, ví dụ dtype={“unet”: torch.bfloat16, “default”: torch.float32}
    • nếu có thể ghi đè ComponentSpec nếu được truyền một trường nạp khác trong kwargs, ví dụ pretrained_model_name_or_path, variant, revision, v.v.
    • nếu có thể ghi đè ComponentSpec nếu được truyền một trường nạp khác trong kwargs, ví dụ pretrained_model_name_or_path, variant, revision, v.v.

Tải các thành phần đã chọn từ các thông số kỹ thuật.

register_components

< >

( **kwargs )

Tham số

  • **kwargs — Các đối số dạng từ khóa, trong đó các khóa là tên thành phần và các giá trị là các đối tượng thành phần. Ví dụ: register_components(unet=unet_model, text_encoder=encoder_model)

Đăng ký các thành phần cùng với thông số kỹ thuật tương ứng của chúng.

Phương thức này chịu trách nhiệm cho:

  1. Đặt các đối tượng thành phần làm thuộc tính trên loader (ví dụ: self.unet = unet)
  2. Cập nhật dict cấu hình, sẽ được lưu dưới dạng modular_model_index.json trong save_pretrained (chỉ dành cho các thành phần from_pretrained)
  3. Thêm các thành phần vào trình quản lý thành phần nếu có một trình quản lý được gắn kết (chỉ dành cho các thành phần từ from_pretrained)

Phương thức này được gọi khi:

  • Các thành phần được khởi tạo lần đầu trong init:
    • các thành phần from_pretrained không được nạp trong init nên chúng được đăng ký là None;
    • Các thành phần không có từ_pretrained được tạo trong quá trình init và được đăng ký dưới dạng chính đối tượng đó
  • Các thành phần được cập nhật bằng phương thức update_components(): ví dụ loader.update_components(unet=unet) hoặc loader.update_components(guider=guider_spec)
  • (from_pretrained) Các thành phần được nạp bằng phương thức load_components(): ví dụ loader.load_components(names=[“unet”]) hoặc loader.load_components() để nạp tất cả các thành phần mặc định

Ghi chú:

  • Khi đăng ký None cho một thành phần, thuộc tính sẽ được đặt thành None nhưng vẫn đồng bộ hóa các thông số với dict cấu hình, vốn sẽ được lưu dưới dạng modular_model_index.json trong quá trình save_pretrained
  • component_specs được cập nhật để khớp với component mới bên ngoài phương thức này, ví dụ trong phương thức update_components()

save_pretrained

< >

( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )

Tham số

  • save_directory (str hoặc os.PathLike) — Thư mục để lưu pipeline. Sẽ được tạo nếu chưa tồn tại.
  • safe_serialization (bool, tùy chọn, mặc định là True) — Liệu có lưu mô hình bằng safetensors hay theo cách truyền thống của PyTorch với pickle hay không.
  • variant (str, tùy chọn) — Nếu được chỉ định, trọng số sẽ được lưu ở định dạng pytorch_model.<variant>.bin.
  • max_shard_size (int hoặc str, mặc định là None) — Kích thước tối đa của một checkpoint trước khi được chia nhỏ. Các checkpoint sau khi chia nhỏ sẽ có kích thước nhỏ hơn giá trị này. Nếu biểu diễn dưới dạng chuỗi, cần là các chữ số theo sau bởi một đơn vị (ví dụ "5GB"). Nếu biểu diễn dưới dạng số nguyên, đơn vị là byte.
  • push_to_hub (bool, tùy chọn, mặc định là False) — Có nên đẩy pipeline lên Hugging Face model hub sau khi lưu nó hay không.
  • **kwargs — Các tham số từ khóa bổ sung:
    • overwrite_modular_index (bool, tùy chọn, mặc định là True): Có nên cập nhật modular_model_index.json để thông số tải của từng thành phần được lưu trỏ đến đích: repo_id khi đẩy lên Hub, nếu không thì là save_directory. Các thành phần không được tải sẽ không được lưu và luôn giữ nguyên thông số tải đã ghi nhận. Truyền False để cũng giữ nguyên thông số tải đã ghi nhận của các thành phần đang được lưu (ví dụ cho một index cố ý tham chiếu các kho khác); các thành phần không có id tải (chẳng hạn như các model tùy chỉnh được thêm bằng update_components) vẫn sẽ được viết lại vì chúng không có nguồn đã ghi nhận.
    • repo_id (str, tùy chọn): ID của kho để đẩy pipeline đến. Mặc định là thành phần cuối cùng của save_directory.
    • commit_message (str, tùy chọn): Thông báo commit cho thao tác đẩy lên hub.
    • private (bool, tùy chọn): Xác định xem kho có nên là kho riêng tư hay không.
    • create_pr (bool, tùy chọn, mặc định là False): Có tạo pull request thay vì đẩy trực tiếp hay không.
    • token (str, tùy chọn): Token Hugging Face được sử dụng để xác thực.

Lưu pipeline và tất cả các thành phần của nó vào một thư mục để có thể tải lại bằng phương thức lớp from_pretrained().

đến

< >

( *args**kwargs ) → DiffusionPipeline

Tham số

  • dtype (torch.dtype, tùy chọn) — Trả về một pipeline với dtype được chỉ định
  • device (torch.Device, tùy chọn) — Trả về một pipeline với device được chỉ định
  • silence_dtype_warnings (str, tùy chọn, mặc định là False) — Có nên bỏ qua các cảnh báo nếu dtype đích không tương thích với device đích hay không.

Trả về

DiffusionPipeline

Pipeline đã được chuyển đổi sang dtype và/hoặc dtype được chỉ định.

Thực hiện chuyển đổi dtype và/hoặc device của Pipeline. Một torch.dtype và torch.device được suy ra từ các đối số của self.to(*args, **kwargs).

> Nếu pipeline đã có torch.dtype và torch.device đúng, thì nó được trả về nguyên vẹn. Ngược lại, > pipeline được trả về là bản sao của self với torch.dtype và torch.device mong muốn.

Dưới đây là các cách để gọi to:

  • to(dtype, silence_dtype_warnings=False) → DiffusionPipeline để trả về một pipeline với dtype được chỉ định
  • to(device, silence_dtype_warnings=False) → DiffusionPipeline để trả về một pipeline với device được chỉ định
  • to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline để trả về một pipeline với device và dtype được chỉ định

unload_components

< >

( names: list[str] | str )

Tham số

  • names — tên thành phần hoặc danh sách tên thành phần cần unmount.

Gỡ các thành phần đã chọn, giải phóng bộ nhớ của chúng.

Thuộc tính component được đặt lại về None và, nếu có gắn một ComponentsManager, component sẽ bị gỡ bỏ khỏi nó. Spec của component không bị thay đổi, do đó component có thể được tải lại sau đó bằng load_components().

update_components

< >

( **kwargs )

Tham số

  • **kwargs — Các đối tượng thành phần hoặc giá trị cấu hình cần cập nhật:
    • Các đối tượng thành phần: Các mô hình được nạp bằng AutoModel.from_pretrained() hoặc ComponentSpec.load() được gắn nhãn tự động với thông tin nạp. Các đối tượng ConfigMixin không có trọng số (ví dụ: schedulers, guiders) có thể được truyền trực tiếp.
    • Giá trị cấu hình: Các giá trị đơn giản để cập nhật cài đặt cấu hình (ví dụ: requires_safety_checker=False)

Cập nhật các thành phần và giá trị cấu hình cũng như thông số kỹ thuật sau khi pipeline đã được khởi tạo.

Phương pháp này cho phép bạn:

  1. Thay thế các thành phần hiện có bằng những thành phần mới (ví dụ: cập nhật self.unet hoặc self.text_encoder)
  2. Cập nhật các giá trị cấu hình (ví dụ: thay đổi cờ self.requires_safety_checker)

Ngoài việc cập nhật các thành phần và giá trị cấu hình dưới dạng thuộc tính của pipeline, phương thức này còn cập nhật:

  • các thông số tương ứng trong _component_specs và _config_specs
  • từ điển config, sẽ được lưu dưới dạng modular_model_index.json trong quá trình save_pretrained

Ví dụ:

# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)

# Update configuration values
pipeline.update_components(requires_safety_checker=False)

Ghi chú:

  • Các thành phần được nạp bằng AutoModel.from_pretrained() hoặc ComponentSpec.load() sẽ được giữ lại thông tin cấu hình nạp (loading specs) để phục vụ cho việc xuất chuỗi (serialization). Các thành phần tùy chỉnh hoặc được nạp cục bộ mà không có tham chiếu đến Hub sẽ có các mục trong modular_model_index.json của chúng được cập nhật tự động trong quá trình save_pretrained().
  • Các đối tượng ConfigMixin không có trọng số (ví dụ: scheduler, guider) có thể được truyền trực tiếp.
Update on GitHub