태스크 벡터가 어떻게 효율적인 모델 병합과 행동 조정을 가능하게 하는지 알아보세요. 제로샷 멀티태스킹을 위해 Ultralytics 가중치를 조작하는 방법을 확인해 보세요.
작업 벡터는 새로운 기능을 구현하기 위해 미세 조정 과정에서 신경망의 가중치에 가해진 구체적인 변화를 나타냅니다. 연구자들은 미세 조정된 모델의 매개변수에서 기초 모델의 매개변수를 빼줌으로써, 특정 작업에 대해 학습된 행동을 포괄하는 가중치 공간 내의 방향 벡터를 분리해 낼 수 있습니다. 이 접근 방식을 통해 개발자는 모델 매개변수에간단한 산술 연산을적용하여 추가적인 훈련 컴퓨팅 리소스 없이도 모델의 행동을 유도, 수정 또는 병합할 수 있습니다.
전이 학습의 개념은 기존 지식을 적용하기 위해 새로운 데이터셋으로 모델을 순차적으로 훈련하는 것을 포함하는 반면, 태스크 벡터는 훈련 후 모델의 구조적 가중치에 직접 작용합니다. 새로운 도메인을 학습하기 위해 기울기를 재훈련하는 대신, 태스크 벡터를 활용한 가중치 공간 보간을 통해 실무자들은 독립적으로 훈련된 여러 모델의 가중치 차이를 선형적으로 결합할 수 있습니다. 이를 통해 제로샷 모델 병합이 가능해지며, 단일 모델이 훈련 과정에서 발생하는 일반적인 계산 오버헤드 없이도 여러 기능을 동시에 상속받을 수 있게 됩니다.
딥러닝 모델을 대수적으로 조작할 수 있는 능력은 현대 AI 파이프라인 전반에 걸쳐 여러 가지 영향력 있는 응용 사례를 낳았습니다:
태스크 벡터를 생성하고 적용하려면 PyTorch 사전( state dictionary)에 접근하여 조작해야 합니다. 다음 예제는 미세 조정된 YOLO26 모델에서 태스크 벡터를 추출하고, 특정 스케일링 계수를 적용하여 이를 기본 모델에 다시 적용하는 방법을 보여줍니다.
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]
대규모 언어 모델이나 거대 비전 트랜스포머와 같은 아키텍처의 매개변수 수가 증가함에 따라, 사소한 조정마다 재훈련하는 것은 경제적으로 실현 불가능해집니다. 태스크 태스크 벡터는 훈련 후 모델 최적화를 위한 수학적으로 우아한 대안을 제공합니다. 수 기가바이트에 달하는 전체 모델 대신 경량화된 태스크 벡터를 공유함으로써, AI 커뮤니티는 AI 분야의 오픈소스 협업을 가속화할 수 있습니다. 사용자 정의 태스크 벡터가 정제되면, Ultralytics 활용함으로써 후속 모델 배포 및 모니터링 프로세스를 간소화하여, 최적화된 가중치가 바로 생산 환경에 적용 가능한 엔드포인트로 전환되도록 보장합니다.
미래의 머신러닝 여정을 시작하세요