PEFT documentation

torch.compile

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 Trainer từ 🤗 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_adapter hoặc model.load_adapter để nạp nhiều hơn 1 adapter); đối với điều này, chỉ gọi torch.compile sau 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.

Nếu bạn có một trường hợp sử dụng khác mà bạn biết rằng torch.compile có 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ủ.

Update on GitHub