Hugging Face Transformers timm 통합
Hugging Face는 PyTorch Image Models (timm) 라이브러리의 모든 모델을 🤗 transformers 생태계 내에서 직접 사용할 수 있도록 해주는 도구인 TimmWrapper를 도입했습니다. 이 통합을 통해 사용자는 transformers의 고수준 API를 사용하여 추론, 양자화 및 미세 조정을 수행하는 동시에 timm의 광범위한 컴퓨터 비전 모델 컬렉션을 활용할 수 있습니다.
TimmWrapper를 통한 원활한 통합
TimmWrapper는 timm 라이브러리와 transformers 라이브러리 사이의 간극을 메워 timm 모델이 표준 Hugging Face 워크플로우와 호환되도록 만듭니다. 이 통합은 다음과 같은 몇 가지 주요 기술적 이점을 제공합니다:
- Pipeline API 지원:
timm모델을 고수준transformerspipeline에 연결하여 간소화된 추론을 수행할 수 있습니다. - Auto Class 호환성:
AutoModelForImageClassification및AutoImageProcessor를 사용하여 모델을 로드할 수 있어, 모델 및 프로세서 로딩의 복잡성을 추상화합니다. - Trainer API 통합: 사용자는 표준
TrainerAPI를 사용하여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개의 매개변수만 학습 가능한 상태로 미세 조정되었습니다. 이를 통해 소비자용 하드웨어에서도 효율적인 학습이 가능합니다.
실제 구현 예시
- 이미지 분류:
pipelineAPI를 사용하여mobilenetv4_conv_medium(네이티브transformers구현이 없는 모델)과 같은 모델을 로드하여 즉시 추론에 사용할 수 있습니다. - 대화형 데모: 이 통합은 Gradio와 함께 작동하여, 개발자가 미세 조정된
timmViT 모델을 사용하여 음식 분류 웹 앱을 구축할 수 있게 합니다. - 모델 로딩:
AutoImageProcessor와AutoModelForImageClassification을 사용하여 Hugging Face Hub에서timm체크포인트를 직접 로드할 수 있습니다.