Hugging Face Transformers timm 통합

Hugging Face는 PyTorch Image Models (timm) 라이브러리의 모든 모델을 🤗 transformers 생태계 내에서 직접 사용할 수 있도록 해주는 도구인 TimmWrapper를 도입했습니다. 이 통합을 통해 사용자는 transformers의 고수준 API를 사용하여 추론, 양자화 및 미세 조정을 수행하는 동시에 timm의 광범위한 컴퓨터 비전 모델 컬렉션을 활용할 수 있습니다.

TimmWrapper를 통한 원활한 통합

TimmWrappertimm 라이브러리와 transformers 라이브러리 사이의 간극을 메워 timm 모델이 표준 Hugging Face 워크플로우와 호환되도록 만듭니다. 이 통합은 다음과 같은 몇 가지 주요 기술적 이점을 제공합니다:

  • Pipeline API 지원: timm 모델을 고수준 transformers pipeline에 연결하여 간소화된 추론을 수행할 수 있습니다.
  • Auto Class 호환성: AutoModelForImageClassificationAutoImageProcessor를 사용하여 모델을 로드할 수 있어, 모델 및 프로세서 로딩의 복잡성을 추상화합니다.
  • Trainer API 통합: 사용자는 표준 Trainer API를 사용하여 timm 모델을 미세 조정할 수 있으며, 서로 다른 모델 아키텍처 전반에 걸쳐 일관된 워크플로우를 유지할 수 있습니다.
  • Round-Trip 호환성: transformers 생태계 내에서 미세 조정된 모델은 timm.create_model('hf-hub:my_org/my_fine_tuned_model', pretrained=True)를 사용하여 timm으로 다시 로드할 수 있습니다.

최적화된 추론 및 배포

이 통합을 통해 timm 모델에 transformers 생태계의 고급 최적화 기술을 적용할 수 있습니다:

bitsandbytes를 이용한 양자화

사용자는 BitsAndBytesConfig를 사용하여 효율적인 추론을 위해 모든 timm 모델을 양자화할 수 있습니다. ViT base 모델을 사용한 제공된 예시에서, 8비트 양자화는 모델 크기를 346.27 MB에서 88.20 MB로(74.53% 감소) 줄이면서도 거의 동일한 정확도(특정 레이블에 대해 0.33% vs 0.35%)를 유지했습니다.

torch.compile을 이용한 가속화

timm 통합은 torch.compile(PyTorch 2.0에서 도입됨)과 완전히 호환되므로, 사용자는 단 한 줄의 코드로 모델을 컴파일하여 더 빠른 추론 시간을 달성할 수 있습니다.

유연한 미세 조정 옵션

TimmWrapper는 표준 미세 조정 및 매개변수 효율적 미세 조정(PEFT) 방법을 모두 지원합니다:

표준 미세 조정

timm 모델은 훈련 루프, 로깅 및 평가를 관리하는 Trainer 클래스를 사용하여 커스텀 데이터셋에서 미세 조정할 수 있습니다. 이는 네이티브 transformers 모델에 사용되는 워크플로우와 정확히 일치합니다.

LoRA (Low-Rank Adaptation)

PEFT 라이브러리를 통해 사용자는 timm 모델에 LoRA를 적용하여 매개변수의 아주 적은 부분만 학습할 수 있습니다. 한 예시에서, ViT 모델은 전체 86,543,818개의 매개변수 중 단 0.77%인 667,493개의 매개변수만 학습 가능한 상태로 미세 조정되었습니다. 이를 통해 소비자용 하드웨어에서도 효율적인 학습이 가능합니다.

실제 구현 예시

  • 이미지 분류: pipeline API를 사용하여 mobilenetv4_conv_medium(네이티브 transformers 구현이 없는 모델)과 같은 모델을 로드하여 즉시 추론에 사용할 수 있습니다.
  • 대화형 데모: 이 통합은 Gradio와 함께 작동하여, 개발자가 미세 조정된 timm ViT 모델을 사용하여 음식 분류 웹 앱을 구축할 수 있게 합니다.
  • 모델 로딩: AutoImageProcessorAutoModelForImageClassification을 사용하여 Hugging Face Hub에서 timm 체크포인트를 직접 로드할 수 있습니다.

Sources