처음부터 시작 안 해도 됨 — 보통 안 해야
거대 dataset (vision 의 ImageNet, text 의 Common Crawl) 에 pretrained 된 model 이 generalize 하는 representation 학습. 너 specific task 에 적응하는 게 — 거의 항상 — 너 (훨씬 작은) dataset 에 fresh model train 하는 것 이김, task 가 무관해 보여도.
두 극단, 그리고 중간
- Feature extraction — 전체 pretrained model freeze, 새 head 만 train. 싸고 빠르고 data 적게 필요. task 가 pretraining task 와 '충분히 가까울' 때 잘 작동.
- Full fine-tuning — 다 unfreeze, 작은 lr 로 전체 model 을 너 data 에 train. best result, data 와 care 더 필요. 진지한 작업의 표준.
- Partial fine-tuning — 이른 layer (generic feature 학습) freeze, 나중 layer (task-specific feature 학습) unfreeze. 실용적 중간.
큰 modern 추가: parameter-efficient fine-tuning
거대 model (BERT-large, Llama, ViT-Huge) 위, full fine-tuning 도 비싸 — 수십억 parameter update 필요. LoRA (Low-Rank Adaptation) 와 친구들이 frozen weight 옆에 작은 trainable matrix 주입, parameter 의 0.1-1% 만 train 하면서 full fine-tune 품질. 나중 lesson 에 LoRA 다룰 거; 지금은 존재하고 economics 바꿈만 알아둬.
torchvision weights API — modern
옛 models.resnet50(pretrained=True) 는 deprecated. modern 호출은 models.resnet50(weights=ResNet50_Weights.IMAGENET1K_V2). 새 API 가 versioned weight AND weights.transforms() — model 이 train 됐던 정확한 preprocessing — 줘. 항상 사용.