Buckets:

hf-doc-build/doc / diffusers /main /vi /api /modular_diffusers /pipeline_components.md
mishig's picture
|
download
raw
17.5 kB

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

ComponentSpec[[diffusers.ComponentSpec]]

diffusers.ComponentSpec[[diffusers.ComponentSpec]]

diffusers.ComponentSpec(name: str | None = None, type_hint: typing.Optional[typing.Type] = None, description: str | None = None, config: diffusers.configuration_utils.FrozenDict | None = None, pretrained_model_name_or_path: str | list[str] | None = None, subfolder: str | None = '', variant: str | None = None, revision: str | None = None, default_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained', repo: str | list[str] | None = None)

Nguồn

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 : Dict cấu hình tùy chọn cho việc tạo init

pretrained_model_name_or_path : Đường dẫn pretrained_model_name_or_path tùy chọn để tạo từ from_pretrained

subfolder : Thư mục con tùy chọn trong pretrained_model_name_or_path

variant : Biến thể 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[[diffusers.ComponentSpec.create]]

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

Nguồn

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

decode_load_id[[diffusers.ComponentSpec.decode_load_id]]

decode_load_id(load_id: str)

Nguồn

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 là "null"

Trả về:

Dict ánh xạ tên trường nạp vào giá trị tương ứng. Ví dụ: { "pretrained_model_name_or_path": "path/to/repo", "subfolder": "subfolder", "variant": "variant", "revision": "revision" } Nếu giá trị của một phân đoạn là "null", nó sẽ được thay thế bằng None. Trả về None nếu load_id là "null" (cho thấy thành phần không được tạo bằng phương thức load).

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[[diffusers.ComponentSpec.from_component]]

from_component(name: str, component: Any)

Nguồn

Tham số:

name : Tên của thành phần

component : Đối tượng Component để tạo spec từ đó

Trả về:

Đối tượng ComponentSpec

Lỗi: 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[[diffusers.ComponentSpec.load]]

load(**kwargs)

Nguồn

Tải component bằng from_pretrained.

loading_fields[[diffusers.ComponentSpec.loading_fields]]

loading_fields()

Nguồn

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[[diffusers.ConfigSpec]]

diffusers.ConfigSpec[[diffusers.ConfigSpec]]

diffusers.ConfigSpec(name: str, default: Any, description: str | None = None)

Nguồn

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

ComponentsManager[[diffusers.ComponentsManager]]

diffusers.ComponentsManager[[diffusers.ComponentsManager]]

diffusers.ComponentsManager()

Nguồn

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[[diffusers.ComponentsManager.add]]

add(name: str, component: Any, collection: str | None = None)

Nguồn

Tham số:

name (str) : Tên của thành phần

component (Bất kỳ) : 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[[diffusers.ComponentsManager.disable_auto_cpu_offload]]

disable_auto_cpu_offload()

Nguồn

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[[diffusers.ComponentsManager.enable_auto_cpu_offload]]

enable_auto_cpu_offload(device: str | int | torch.device = None, memory_reserve_margin = '3GB', offload_strategy = None)

Nguồn

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[[diffusers.ComponentsManager.get_components_by_ids]]

get_components_by_ids(ids: list[str], return_dict_with_names: bool | None = True)

Nguồn

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.

Lỗi: 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[[diffusers.ComponentsManager.get_components_by_names]]

get_components_by_names(names: list[str], collection: str | None = None)

Nguồn

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

Lỗi: 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[[diffusers.ComponentsManager.get_ids]]

get_ids(names: str | list[str] = None, collection: str | None = None)

Nguồn

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[[diffusers.ComponentsManager.get_model_info]]

get_model_info(component_id: str, fields: str | list[str] | None = None)

Nguồn

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 một danh sách các trường. Nếu là None, sẽ sử dụng cài đặt available_info_fields.

Trả về:

Từ điển chứa metadata của thành phần được yêu cầu. Nếu fields được chỉ định, chỉ trả về các trường đó. Ngược lại, trả về tất cả các trường.

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

get_one[[diffusers.ComponentsManager.get_one]]

get_one(component_id: str | None = None, name: str | None = None, collection: str | None = None, load_id: str | None = None)

Nguồn

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

Trả về:

Một thành phần duy nhất

Lỗi: 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 nhiều thành phần khớp hoặc không tìm thấy thành phần nào.

xóa[[diffusers.ComponentsManager.remove]]

remove(component_id: str = None)

Nguồn

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[[diffusers.ComponentsManager.remove_from_collection]]

remove_from_collection(component_id: str, collection: str)

Nguồn

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

search_components[[diffusers.ComponentsManager.search_components]]

search_components(names: str | None = None, collection: str | None = None, load_id: str | None = None, return_dict_with_names: bool = True)

Nguồn

Tham số:

names : Tên hoặc mẫu của thành phần 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ơ sở 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" : mọi thứ có tên cơ sở 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 theo

return_dict_with_names : Nếu là True, trả về một từ điển với tên các thành phần làm khóa, và ném ra lỗi nếu tìm thấy nhiều thành phần có cùng tên. Nếu là False, trả về một từ điển với ID của các thành phần làm khóa

Trả về:

Từ điển ánh xạ tên thành phần tới các thành phần nếu return_dict_with_names=True, hoặc một từ điển ánh xạ ID thành phần tới các thành phần nếu return_dict_with_names=False

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[[diffusers.ComponentsManager.set_offload_strategy]]

set_offload_strategy(offload_strategy)

Nguồn

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 đủ điều kiện.

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[[diffusers.modular_pipelines.InsertableDict]]

diffusers.modular_pipelines.InsertableDict[[diffusers.modular_pipelines.InsertableDict]]

Nguồn

Xet Storage Details

Size:
17.5 kB
·
Xet hash:
8cc29d51f24b4ab6628874ede4c190994734e926a4a73ecb7c72e390e7d40ae2

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.