Task Vectors
작업 벡터(task vectors)가 효율적인 모델 병합과 동작 제어를 어떻게 가능하게 하는지 배우십시오. 제로샷 멀티태스킹을 위해 Ultralytics YOLO26 가중치를 조작하는 방법을 발견하십시오.
Task vectors는 새로운 기능을 달성하기 위해 파인튜닝 과정에서 신경망(neural network) 가중치에 적용된 구체적인 변화를 나타냅니다. 연구자들은 기초 기반 모델(foundational base model)의 파라미터에서 파인튜닝된 모델의 파라미터를 뺌으로써, 특정 작업에 대해 학습된 동작을 캡슐화하는 가중치 공간상의 방향성 벡터를 분리할 수 있습니다. 이 접근 방식을 통해 개발자는 추가적인 학습 연산 비용 없이 모델 파라미터에 대한 간단한 산술 연산을 수행하여 모델의 동작을 조정, 수정 또는 병합할 수 있습니다.
Task Vectors와 전이 학습(Transfer Learning)의 차이점
전이 학습(transfer learning) 개념은 새로운 데이터셋에서 모델을 순차적으로 학습시켜 기존 지식을 적응시키는 반면, Task vectors는 학습 후 모델의 구조적 가중치에 직접 작동합니다. 새로운 도메인을 학습하기 위해 그래디언트를 재학습하는 대신, 가중치 공간 보간(weight space interpolation)을 사용하여 Task vectors를 활용하면 독립적으로 학습된 여러 모델의 가중치 차이를 선형적으로 결합할 수 있습니다. 이를 통해 제로샷 모델 병합(model merging)이 가능해지며, 학습 중 발생하는 일반적인 계산 오버헤드 없이 단일 모델이 여러 기능을 동시에 상속할 수 있습니다.
실제 활용 사례
딥러닝(deep learning) 모델을 대수적으로 조작하는 능력은 현대 AI 파이프라인 전반에 걸쳐 몇 가지 영향력 있는 애플리케이션으로 이어졌습니다.
- 멀티 태스크 모델 병합(Multi-Task Model Merging): 엔지니어는 객체 탐지(object detection)에 최적화된 Task vector와 이미지 세그멘테이션(image segmentation)을 위해 학습된 Task vector를 결합할 수 있습니다. 이를 Ultralytics YOLO26 기반 모델에 적용하면 각 원본 파인튜닝의 강점을 보존하면서 두 작업을 동시에 탁월하게 수행하는 다목적 아키텍처를 생성할 수 있습니다.
- 기계 망각(Machine Unlearning) 및 AI 안전: 모델이 편향되거나 위험한 결과를 출력하는 경우, 연구자들은 해당 원치 않는 특정 동작을 나타내는 Task vector를 계산할 수 있습니다. 이 벡터를 모델의 가중치에서 뺌으로써 해당 동작을 효과적으로 "제거"할 수 있으며, 이는 AI 안전(AI safety) 향상과 강력한 AI 윤리(AI ethics) 표준 확립에 크게 기여합니다.
- 컴퓨터 비전(Computer Vision)에서의 도메인 적응: 주간에서 야간 실시간 추론(real-time inference)으로 전환하는 등 특정 환경에 맞게 모델을 조정할 때, Task vectors를 사용하면 사용자가 적응의 크기를 조정할 수 있습니다. 벡터의 일부(예: 스케일링 계수 0.5)를 적용하면 두 도메인 모두에서 성능이 좋은 균형 잡힌 모델을 얻을 수 있습니다.
PyTorch에서 Task vectors 활용하기
Task vector를 생성하고 적용하려면 PyTorch state dictionary에 액세스하고 이를 조작해야 합니다. 다음 예제는 파인튜닝된 YOLO26 모델에서 Task vector를 추출하고 특정 스케일링 계수를 사용하여 이를 다시 기본 모델에 적용하는 방법을 보여줍니다.
from ultralytics import YOLO
# Load the state dictionaries for the base and fine-tuned models
base_weights = YOLO("yolo26n.pt").model.state_dict()
tuned_weights = YOLO("yolo26n-custom.pt").model.state_dict()
# Calculate the task vector (tuned weights minus base weights)
task_vector = {k: tuned_weights[k] - base_weights[k] for k in base_weights.keys()}
# Apply the task vector to the base model using a 0.5 scaling factor
for k in base_weights.keys():
base_weights[k] += 0.5 * task_vector[k]가중치 조작의 미래
대규모 언어 모델(large language models) 및 거대 비전 Transformer와 같은 아키텍처의 파라미터 수가 증가함에 따라, 사소한 조정마다 이를 재학습하는 것은 경제적으로 불가능해지고 있습니다. Task vectors는 학습 후 모델 최적화(model optimization)를 위한 수학적으로 우아한 대안을 제공합니다. 수 기가바이트에 달하는 전체 모델 대신 경량 Task vectors를 공유함으로써 AI 커뮤니티는 AI 분야의 오픈소스 협업을 가속화할 수 있습니다. 사용자 지정 Task vectors가 정제되면 Ultralytics Platform을 활용하여 후속 모델 배포(model deployment) 및 모니터링 과정을 간소화할 수 있으며, 이를 통해 최적화된 가중치가 프로덕션 준비가 완료된 엔드포인트로 직접 전환되도록 보장합니다.






