PEFT documentation
torch.compile
torch.compile
Trong PEFT, torch.compile hoạt động với một số nhưng không phải tất cả các tính năng. Lý do khiến nó không phải lúc nào cũng hoạt động là vì PEFT rất động ở một số nơi (ví dụ như việc tải và chuyển đổi giữa nhiều adapter), điều này có thể gây ra sự cố cho torch.compile. Ở những nơi khác, torch.compile có thể hoạt động, nhưng sẽ không nhanh như mong đợi do các điểm ngắt đồ thị (graph breaks).
Nếu bạn không thấy lỗi, điều đó không có nghĩa là torch.compile đã hoạt động chính xác. Nó có thể cho bạn một kết quả đầu ra, nhưng kết quả đó có thể không đúng. Hướng dẫn này mô tả những gì hoạt động với torch.compile và những gì không. Để tự kiểm tra, chúng tôi khuyên bạn nên sử dụng phiên bản PyTorch mới nhất, vì torch.compile đang được cải thiện liên tục.
Trừ khi có chỉ định khác, các cài đặt mặc định của
torch.compileđã được sử dụng.
Huấn luyện và suy luận với torch.compile
Các tính năng này hoạt động với torch.compile. Tất cả những gì được liệt kê bên dưới đã được kiểm tra với một LM nhân quả:
- Huấn luyện với
Trainertừ 🤗 transformers - Huấn luyện với vòng lặp PyTorch tùy chỉnh
- Suy luận
- Sinh
Các adapter sau đã được kiểm tra thành công:
- AdaLoRA
- BOFT
- IA³
- Điều chỉnh Layer Norm
- LoHa
- LoKr
- LoRA
- LoRA + DoRA
- LoRA áp dụng cho các lớp nhúng
- OFT
- VeRA
- HRA
Các tính năng PEFT nâng cao với torch.compile
Dưới đây là một số tính năng PEFT nâng cao hơn có hoạt động. Tất cả đều đã được kiểm tra với LoRA.
modules_to_save(i.e.config = LoraConfig(..., modules_to_save=...))- Ghép các adapter (một hoặc nhiều)
- Gộp nhiều adapter thành một adapter (tức là gọi
model.add_weighted_adapter(...)) - Sử dụng bộ thích ứng PEFT với lượng tử hóa (bitsandbytes)
- Tắt các adapter (tức là sử dụng
with model.disable_adapter()) - Gỡ tải (tức là gọi
model.merge_and_unload()) - Các lô adapter hỗn hợp (tức là gọi
model(batch, adapter_names=["__base__", "default", "other", ...])) - Suy luận với nhiều adapter (tức là sử dụng
model.add_adapterhoặcmodel.load_adapterđể nạp nhiều hơn 1 adapter); đối với điều này, chỉ gọitorch.compilesau khi đã nạp tất cả các adapter
Nhìn chung, chúng ta có thể kỳ vọng rằng nếu một tính năng hoạt động chính xác với LoRA và cũng được hỗ trợ bởi các loại adapter khác, thì tính năng đó cũng sẽ hoạt động với loại adapter đó.
Các trường hợp kiểm thử
Tất cả các trường hợp sử dụng được liệt kê ở trên đều được kiểm thử bên trong peft/tests/test_torch_compile.py. Nếu bạn muốn kiểm tra chi tiết hơn cách chúng tôi đã kiểm thử một tính năng nhất định, vui lòng truy cập tệp đó và xem xét bài kiểm thử tương ứng với trường hợp sử dụng của bạn.
Update on GitHubNếu bạn có một trường hợp sử dụng khác mà bạn biết rằng
torch.compilecó hoặc không hoạt động với PEFT, vui lòng đóng góp bằng cách cho chúng tôi biết hoặc mở một PR để thêm trường hợp sử dụng này vào các trường hợp kiểm thử được bao phủ.