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

PEFT에서 torch.compile은 일부 기능에는 작동하지만 모든 기능에는 작동하지 않습니다. 항상 작동하지 않는 이유는 PEFT가 특정 부분(예: 여러 어댑터 로딩 및 전환)에서 매우 동적이기 때문에 torch.compile에 문제를 일으킬 수 있기 때문입니다. 다른 부분에서는 torch.compile이 작동할 수 있지만, 그래프 브레이크로 인해 예상만큼 빠르지 않을 수 있습니다.

에러가 표시되지 않는다고 해서 torch.compile이 올바르게 작동했다는 보장은 없습니다. 출력이 생성되더라도 그 결과가 올바르지 않을 수 있습니다. 이 가이드에서는 torch.compile과 호환되는 기능과 호환되지 않는 기능을 설명합니다. torch.compile은 지속적으로 개선되고 있으므로, 자체 테스트 시에는 최신 PyTorch 버전을 사용하는 것을 권장합니다.

별도로 명시되지 않는 한, 기본 torch.compile 설정이 사용되었습니다.

torch.compile를 활용한 학습 및 추론

이러한 기능은 torch.compile과 함께 동작합니다. 아래에 나열된 모든 항목은 causal LM으로 테스트되었습니다:

  • 🤗 transformers의 Trainer를 사용한 학습
  • 커스텀 PyTorch 루프로 학습하기
  • 추론
  • 생성

다음 어댑터가 성공적으로 테스트되었습니다:

  • AdaLoRA
  • BOFT
  • IA³
  • Layer Norm 튜닝
  • LoHa
  • LoKr
  • LoRA
  • LoRA + DoRA
  • 임베딩 레이어에 적용된 LoRA
  • OFT
  • VeRA
  • HRA

torch.compile을 활용한 고급 PEFT 기능

아래는 동작하는 보다 고급 PEFT 기능 중 일부입니다. 모두 LoRA로 테스트되었습니다.

  • modules_to_save (i.e. config = LoraConfig(..., modules_to_save=...))
  • 어댑터 병합(하나 또는 여러 개)
  • 여러 어댑터를 하나의 어댑터로 병합하는 것(즉, model.add_weighted_adapter(...)을 호출하는 것)
  • 양자화(bitsandbytes)와 함께 PEFT 어댑터 사용
  • 어댑터 비활성화(즉, with model.disable_adapter() 사용)
  • 언로드(즉, model.merge_and_unload() 호출)
  • 혼합 어댑터 배치(즉, model(batch, adapter_names=["__base__", "default", "other", ...]) 호출)
  • 여러 어댑터로 추론을 수행하는 경우(즉, model.add_adapter 또는 model.load_adapter를 사용하여 1개 이상의 어댑터를 로드하는 경우); 이 경우 모든 어댑터를 로드한 이후에만 torch.compile을 호출해야 합니다

일반적으로, 특정 기능이 LoRA와 함께 올바르게 작동하고 다른 어댑터 유형에서도 지원되는 경우, 해당 어댑터 유형에서도 작동할 것으로 기대할 수 있습니다.

테스트 케이스

위에서 나열된 모든 사용 사례는 peft/tests/test_torch_compile.py 내에서 테스트됩니다. 특정 기능이 어떻게 테스트되었는지 더 자세히 확인하려면 해당 파일로 이동하여 사용 사례에 해당하는 테스트를 확인하세요.

PEFT와 torch.compile이 동작하거나 동작하지 않는 다른 사용 사례가 있다면, 알려주시거나 해당 사용 사례를 테스트 케이스에 추가하는 PR을 열어 기여해 주세요.

Update on GitHub