Diffusers documentation
Suy luận phân tán
Bắt đầu
Suy luận
Sử dụng diffusion pipelines
Bộ thích ứng và cá nhân hóa
Tối ưu hóa và mở rộng
Hiệu suất cơ bản
Tốc độ và bộ nhớ
Suy luận phân tán
Lượng tử hóa
Tăng tốc theo phần cứng
Phương pháp từ cộng đồng
Modular Diffusers
Huấn luyện và tinh chỉnh
Tài nguyên
Đóng góp
API
You are viewing main version, which requires installation from source. If you'd like
regular pip install, checkout the latest stable version (v0.43.0).
Suy luận phân tán
Suy luận phân tán chia nhỏ khối lượng công việc trên nhiều GPU. Nó hữu ích để nạp các mô hình lớn hơn vào bộ nhớ và để xử lý nhiều prompt cùng lúc.
Diffusers hỗ trợ bốn chiến lược. Mỗi chiến lược có hướng dẫn riêng, và trang này giúp bạn chọn một chiến lược.
Chọn một chiến lược
Mỗi chiến lược giải quyết một vấn đề khác nhau, vì vậy hãy chọn một chiến lược dựa trên tài nguyên đang giới hạn bạn.
| Chiến lược | Các phần chia | Giảm | Độ trễ cho một prompt | Phù hợp nhất khi |
|---|---|---|---|---|
| Song song dữ liệu | prompts giữa các bản sao | không có gì, vì mỗi GPU giữ một bản sao đầy đủ | không thay đổi | mô hình đã vừa vặn và bạn có nhiều prompt |
| device_map | các thành phần trên các thiết bị | bộ nhớ trọng số | kém hơn một chút | mô hình không vừa và kết nối giữa các thành phần chậm |
| Song song ngữ cảnh | chuỗi đầu vào | bộ nhớ kích hoạt | thấp hơn | các chuỗi là dài, chẳng hạn như hình ảnh độ phân giải cao hoặc video |
| Song song tensor | các ma trận trọng số | bộ nhớ trọng số | thấp hơn | trọng số của một thành phần không vừa và kết nối giữa các thành phần rất nhanh |
Một số hướng dẫn thực tế:
- Nếu model đã vừa vặn và bạn có nhiều prompts, hãy dùng data parallelism. Nó tăng throughput theo số lượng GPU mà không cần đụng vào model, và giữ nguyên latency của single-prompt. Hãy thiết lập nó bằng Accelerate hoặc PyTorch Distributed.
- Nếu trọng số của một thành phần đơn lẻ không vừa, hãy thử tensor parallelism trước, vì nó giảm cả bộ nhớ lẫn độ trễ. Tensor parallelism trao đổi thông tin tại mọi ranh giới khối, do đó cần một liên kết nhanh như NVLink. Trên PCIe, lưu lượng truyền dữ liệu cho mỗi lớp có thể lớn hơn lượng tính toán mà nó tiết kiệm được, và
device_mapsẽ là lựa chọn tốt hơn.device_mapcũng xử lý được trường hợp các thành phần riêng lẻ đều ổn nhưng tổng thể lại quá lớn. - Nếu vấn đề nằm ở activations chứ không phải weights, hãy dùng context parallelism. Cách này hữu ích cho các chuỗi dài, chẳng hạn như ảnh lớn và video có nhiều khung hình. Hãy chọn một backend từ các benchmark trong hướng dẫn Context parallelism.
- Nếu cả trọng số lẫn chuỗi đều quá lớn, Diffusers không thể áp dụng song song hóa tensor và song song hóa ngữ cảnh cho cùng một mô hình.
ParallelConfigsẽ gây ra lỗi nếu bạn truyền cả hai cấu hình, vàenable_parallelismkhông thể được gọi lần thứ hai trên một mô hình đã được song song hóa.
Các tích hợp cộng đồng xDiT và ParaAttention cung cấp các triển khai song song ngữ cảnh riêng của chúng.
Update on GitHub