Diffusers documentation

Các thành phần và cấu hình

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 thành phần và cấu hình

ComponentSpec

lớp diffusers.ComponentSpec

< >

( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )

Tham số

  • name — Tên của thành phần
  • type_hint — Kiểu của thành phần (ví dụ: UNet2DConditionModel)
  • description — Mô tả tùy chọn của thành phần
  • config — Từ điển cấu hình tùy chọn cho việc tạo init
  • pretrained_model_name_or_path — Đường dẫn tùy chọn pretrained_model_name_or_path cho việc tạo từ from_pretrained
  • subfolder — Thư mục con tùy chọn trong pretrained_model_name_or_path
  • variant — Phiên bản tùy chọn trong pretrained_model_name_or_path
  • revision — Phiên bản tùy chọn trong pretrained_model_name_or_path
  • default_creation_method — Phương pháp tạo được ưu tiên - “from_config” hoặc “from_pretrained”

Quy cách cho một thành phần pipeline.

Một thành phần có thể được tạo theo hai cách:

  1. Từ đầu bằng init với một dict cấu hình
  2. sử dụng from_pretrained

tạo

< >

( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )

Tạo component bằng cách sử dụng from_config với config.

decode_load_id

< >

( load_id: str )

Tham số

  • load_id — Chuỗi load_id cần giải mã, định dạng: “pretrained_model_name_or_path|subfolder|variant|revision” trong đó các giá trị None được biểu diễn bằng “null”

Giải mã chuỗi load_id thành một từ điển chứa các trường và giá trị nạp.

from_component

< >

( name: strcomponent: Any )

Tham số

  • name — Tên của thành phần
  • component — Đối tượng Component để tạo spec từ đó

Gây ra

ValueError

  • ValueError — Nếu component không được hỗ trợ (ví dụ: nn.Module không có load_id, không phải ConfigMixin)

Tạo một ComponentSpec từ một Component.

Hiện hỗ trợ:

  • Các thành phần được tạo bằng phương thức ComponentSpec.load()
  • Các thành phần là lớp con của ConfigMixin nhưng không phải là nn.Module (ví dụ: scheduler, guider)

load

< >

( **kwargs )

Tải component bằng from_pretrained.

loading_fields

< >

( )

Trả về tên của tất cả các trường liên quan đến việc nạp (tức là những trường có field.metadata[“loading”] là True).

ConfigSpec

lớp diffusers.ConfigSpec

< >

( name: strdefault: Anydescription: str | None = None )

Quy cách cho một tham số cấu hình pipeline.

ComponentsManager

lớp diffusers.ComponentsManager

< >

( )

Một hệ thống đăng ký và quản lý trung tâm cho các thành phần mô hình trên nhiều pipeline khác nhau.

ComponentsManager cung cấp một cách thống nhất để đăng ký, theo dõi và tái sử dụng các thành phần mô hình (như UNet, VAE, text encoders, v.v.) xuyên suốt các pipeline modular khác nhau. Nó bao gồm các tính năng phát hiện trùng lặp, quản lý bộ nhớ và tổ chức thành phần.

> Đây là một tính năng thử nghiệm và có thể sẽ thay đổi trong tương lai.

Ví dụ:

from diffusers import ComponentsManager

# Create a components manager
cm = ComponentsManager()

# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")

# Enable auto offloading
cm.enable_auto_cpu_offload()

# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")

thêm

< >

( name: strcomponent: Anycollection: str | None = None ) → str

Tham số

  • name (str) — Tên của thành phần
  • component (Any) — Thành phần cần thêm
  • collection (str | None) — Bộ sưu tập để thêm thành phần vào

Trả về

str

ID thành phần duy nhất, được tạo dưới dạng “{name}_{id(component)}” trong đó id(component) là định danh duy nhất tích hợp sẵn của Python cho đối tượng

Thêm một thành phần vào ComponentsManager.

disable_auto_cpu_offload

< >

( )

Tắt tính năng chuyển CPU tự động cho tất cả các thành phần.

enable_auto_cpu_offload

< >

( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )

Tham số

  • device (str | int | torch.device) — Thiết bị thực thi mà các mô hình được chuyển đến để thực hiện các bước truyền thẳng
  • memory_reserve_margin (str) — Biên dự phòng bộ nhớ cần sử dụng, mặc định là 3GB. Đây là lượng bộ nhớ cần giữ trống trên thiết bị để tránh hết bộ nhớ trong quá trình thực thi mô hình (ví dụ: cho các kích hoạt trung gian, gradient, v.v.)
  • offload_strategy — Bất kỳ callable nào có chữ ký (hooks, model_id, model, execution_device) -> hooks, trả về các model resident cần offload trước khi model sắp tới được nạp. Mặc định là AutoOffloadStrategy, giải phóng tổ hợp nhỏ nhất đủ điều kiện.

Bật tính năng offload CPU tự động cho tất cả các thành phần.

Thuật toán hoạt động như sau:

  1. Tất cả các mô hình đều bắt đầu trên CPU theo mặc định
  2. Khi forward pass của một model được gọi, nó sẽ được chuyển đến thiết bị thực thi
  3. Nếu bộ nhớ không đủ, các mô hình khác trên thiết bị sẽ được chuyển trở lại CPU
  4. Hệ thống cố gắng offload tổ hợp các model nhỏ nhất sao cho giải phóng đủ bộ nhớ
  5. Các mô hình sẽ ở lại trên thiết bị thực thi cho đến khi một mô hình khác cần bộ nhớ và buộc chúng phải rời đi

Một mô hình thuộc nhóm offload tham gia vào quá trình này nhưng tự đặt vị trí của mình: nó vẫn có thể tạo chỗ trống bằng cách di chuyển các mô hình khác sang một bên, và không bao giờ bị di chuyển để nhường chỗ cho chúng. Thứ tự nào cũng được — offload nhóm trước hoặc sau khi bật tính năng này. AutoOffloadStrategy đưa ra quyết định dựa trên dung lượng bộ nhớ của mô hình, vốn không mô tả một mô hình chỉ giữ một nhóm tại một thời điểm, vì vậy hãy truyền một offload_strategy đưa ra quyết định dựa trên quy trình làm việc.

get_components_by_ids

< >

( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]

Tham số

  • ids (list[str]) — danh sách các ID thành phần
  • return_dict_with_names (bool | None) — Có nên trả về một từ điển với tên các thành phần làm khóa không:

Trả về

dict[str, Any]

Từ điển các thành phần.

  • Nếu return_dict_with_names=True, các khóa là tên của các thành phần.
  • Nếu return_dict_with_names=False, các khóa là ID của các thành phần.

Gây ra

ValueError

  • ValueError — Nếu tìm thấy các tên thành phần trùng lặp trong kết quả tìm kiếm khi return_dict_with_names=True

Lấy các thành phần theo một danh sách ID.

get_components_by_names

< >

( names: list[str]collection: str | None = None ) → dict[str, Any]

Tham số

  • names (list[str]) — danh sách tên các thành phần
  • collection (str | None) — Bộ sưu tập tùy chọn để lọc

Trả về

dict[str, Any]

Từ điển các thành phần với tên thành phần làm khóa

Gây ra

ValueError

  • ValueError — Nếu tìm thấy các tên thành phần trùng lặp trong kết quả tìm kiếm

Lấy các thành phần theo một danh sách tên, tùy chọn lọc theo bộ sưu tập.

get_ids

< >

( names: str | list[str] = Nonecollection: str | None = None ) → list[str]

Tham số

  • names (str | list[str]) — danh sách tên các thành phần
  • collection (str | None) — Bộ sưu tập tùy chọn để lọc

Trả về

list[str]

danh sách ID thành phần

Lấy các ID thành phần theo một danh sách tên, tùy chọn lọc theo bộ sưu tập.

get_model_info

< >

( component_id: strfields: str | list[str] | None = None )

Tham số

  • component_id (str) — Tên của thành phần cần lấy thông tin
  • fields (str | list[str] | None) — Trường (hoặc các trường) cần trả về. Có thể là một chuỗi cho một trường duy nhất hoặc danh sách các trường. Nếu là None, sẽ sử dụng cài đặt available_info_fields.

Lấy thông tin chi tiết về một thành phần.

get_one

< >

( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )

Tham số

  • component_id (str | None) — ID thành phần tùy chọn để lấy
  • name (str | None) — Tên hoặc mẫu của thành phần
  • collection (str | None) — Bộ sưu tập tùy chọn để lọc
  • load_id (str | None) — load_id tùy chọn để lọc

Gây ra

ValueError

  • ValueError — Nếu không có thành phần nào khớp hoặc có nhiều thành phần khớp

Lấy một thành phần duy nhất bằng cách:

  • tìm kiếm theo tên (khớp mẫu), bộ sưu tập, hoặc load_id.
  • truyền vào một component_id Gây ra lỗi nếu có nhiều thành phần khớp hoặc không tìm thấy thành phần nào.

remove

< >

( component_id: str = None )

Tham số

  • component_id (str) — ID của thành phần cần xóa

Xóa một thành phần khỏi ComponentsManager.

remove_from_collection

< >

( component_id: strcollection: str )

Xóa một thành phần khỏi bộ sưu tập.

search_components

< >

( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )

Tham số

  • names — Tên thành phần hoặc mẫu Các mẫu:
    • “unet” : khớp với bất kỳ thành phần nào có tên cơ sở là “unet” (ví dụ: unet_123abc)
    • “!unet”: mọi thứ ngoại trừ các thành phần có tên cơ sở là “unet”
    • “unet*”: mọi thứ có tên cơ bản bắt đầu bằng “unet”
    • “!unet*” : mọi thứ có tên cơ sở KHÔNG bắt đầu bằng “unet”
    • ”unet” : mọi thứ có tên cơ sở chứa “unet”
    • “!unet” : mọi thứ có tên cơ sở KHÔNG chứa “unet”
    • “refiner|vae|unet” : bất kỳ thứ gì có tên cơ bản khớp chính xác với “refiner”, “vae” hoặc “unet”
    • “!refiner|vae|unet” : mọi thứ có tên cơ sở KHÔNG khớp chính xác với “refiner”, “vae”, hoặc “unet”
    • “unet|vae” : mọi thứ có tên cơ sở bắt đầu bằng “unet” HOẶC bắt đầu bằng “vae”
  • collection — Bộ sưu tập tùy chọn để lọc
  • load_id — load_id tùy chọn để lọc
  • return_dict_with_names — Nếu True, trả về một từ điển với tên các thành phần làm khóa, ném lỗi nếu phát hiện nhiều thành phần có cùng tên. Nếu False, trả về một từ điển với ID của các thành phần làm khóa

Tìm kiếm các thành phần theo tên bằng cách khớp mẫu đơn giản. Tùy chọn lọc theo bộ sưu tập hoặc load_id.

set_offload_strategy

< >

( offload_strategy )

Tham số

  • offload_strategy — Bất kỳ callable nào có chữ ký (hooks, model_id, model, execution_device) -> hooks: nó nhận các hooks của các model hiện đang trên thiết bị và trả về các hooks cần offload trước khi model đến được nạp. Mặc định là AutoOffloadStrategy, giải phóng tổ hợp nhỏ nhất đủ cần thiết.

Thay thế chiến lược offload trên tất cả các model được quản lý. Chỉ hợp lệ khi auto CPU offloading được bật.

InsertableDict

lớp diffusers.modular_pipelines.InsertableDict

< >

( )

Update on GitHub