Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Prompt Tuning

프롬프트 튜닝은 입력에 추가되는 소수의 소프트 프롬프트 벡터를 학습하여 동결된 모델을 특정 작업에 맞게 조정하므로, 하나의 모델로 여러 작업을 수행할 수 있습니다.

프롬프트 튜닝은 사전 학습된 파운데이션 모델을 새 작업에 맞게 조정하기 위해 소프트 프롬프트라고 부르는 소규모 벡터 집합을 학습합니다. 이 벡터는 입력 앞에 배치되며 모든 모델 가중치는 고정 상태로 유지됩니다. 소프트 프롬프트는 모델 토큰의 임베딩과 같은 공간에 있지만, 그 벡터는 역전파로 학습되며 실제 단어와 일치할 필요는 없습니다. Google의 Brian Lester, Rami Al-Rfou, Noah Constant는 EMNLP 2021에서 발표한 파라미터 효율적 프롬프트 튜닝을 위한 규모의 힘에서 이 방법을 소개했습니다. 이들은 110억 개의 파라미터를 가진 T5-XXL 모델에서 토큰 다섯 개짜리 프롬프트를 사용할 경우 작업당 파라미터가 20,480개만 필요하다고 설명했으며, 모델이 수십억 개 이상의 파라미터 규모로 커지면 프롬프트 튜닝이 전체 모델 튜닝과 동일한 정확도를 달성한다는 점을 보였습니다.

프롬프트 튜닝의 작동 방식#

대규모 언어 모델(LLM)은 각 입력 토큰을 임베딩 벡터로 바꾼 다음 Transformer 계층에 전달합니다. 프롬프트 튜닝은 시퀀스 앞에 k개의 추가 벡터를 붙입니다. Lester 등은 길이가 1~150인 프롬프트를 시험했으며 기본값으로 100을 사용했습니다. 학습 중에는 작업의 손실 함수를 고정된 네트워크 전체를 거쳐 입력까지 역전파하며, 옵티마이저는 프롬프트 벡터만 업데이트합니다. 결과물은 작업별 소형 텐서입니다. 모델 자체는 변경되지 않으므로 프롬프트를 제거해도 파국적 망각의 위험 없이 원래 동작을 복원할 수 있습니다. 또한 배치의 각 요청에 자체 소프트 프롬프트를 포함해 배포된 모델 사본 하나로 여러 작업을 동시에 처리할 수 있으며, Lester 등은 이를 혼합 작업 추론이라고 부릅니다.

다음 PyTorch 예시는 Hugging Face Transformers의 고정된 GPT-2를 대상으로 학습 리뷰 네 개와 보류된 리뷰 여덟 개를 사용해 감성 분석용 8벡터 소프트 프롬프트를 튜닝합니다.

import torch
from torch.nn.functional import cross_entropy
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2").requires_grad_(False)  # freeze all 124M weights
embed = model.get_input_embeddings()

# Soft prompt: 8 trainable vectors in GPT-2's embedding space, initialized from the word " review"
soft_prompt = torch.nn.Parameter(embed.weight[tokenizer.encode(" review")].repeat(8, 1).clone())
optimizer = torch.optim.Adam([soft_prompt], lr=0.01)
labels = tokenizer.encode(" positive negative")  # token ids for label 0 and label 1

# Reviews alternate between positive (label 0) and negative (label 1)
train = ["Loved every minute.", "A waste of time.", "Great story and acting.", "Boring and slow."]
test = ["What a wonderful film.", "I fell asleep halfway.", "A fantastic ending.", "Terrible dialogue."]
test += ["A joy to watch.", "Dull and predictable.", "Superb from start to end.", "I want my money back."]


def label_scores(text):
    """Score both label tokens after the soft prompt and the review."""
    ids = tokenizer.encode(f"{text} Sentiment:", return_tensors="pt")
    return model(inputs_embeds=torch.cat([soft_prompt[None], embed(ids)], dim=1)).logits[0, -1, labels]


def correct():
    """Count held-out reviews whose higher-scoring label is right."""
    with torch.no_grad():
        return sum(int(label_scores(text).argmax()) == i % 2 for i, text in enumerate(test))


print(f"Held-out reviews correct before tuning: {correct()}/8")
for step in range(30):
    loss = sum(cross_entropy(label_scores(text), torch.tensor(i % 2)) for i, text in enumerate(train))
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
print(f"After tuning: {correct()}/8, training {soft_prompt.numel():,} of {model.num_parameters():,} parameters")

코드는 Held-out reviews correct before tuning: 5/8을 출력한 다음 After tuning: 7/8, training 6,144 of 124,439,808 parameters을 출력합니다. 예시 네 개에 대해 Adam으로 30회 학습한 결과, 모델 전체의 0.005%에 해당하는 숫자 6,144개만 바뀌었으며, 고정된 GPT-2는 보지 못한 리뷰 두 개를 더 정확하게 분류했습니다.

프리픽스 튜닝과 시각적 프롬프트 튜닝#

프롬프트 튜닝은 파라미터 효율적 파인튜닝(PEFT)에 속하는 연속 프롬프트 기법의 한 종류입니다. Xiang Lisa Li와 Percy Liang의 프리픽스 튜닝은 각 Transformer 계층 앞에 붙이는 벡터를 학습합니다. 이 방식은 GPT-2 또는 BART 파라미터의 약 0.1%만 사용하며 테이블-텍스트 생성과 요약 작업에서 전체 파인튜닝과 대등한 성능을 보였습니다. 프롬프트 튜닝은 입력 계층에서만 벡터를 학습하도록 이 방식을 단순화합니다.

이 아이디어는 비전에도 적용됩니다. Menglin Jia와 동료들의 시각적 프롬프트 튜닝(VPT)은 고정된 비전 Transformer(ViT)의 패치 토큰 앞에 학습 가능한 토큰을 추가합니다. 1% 미만의 파라미터를 학습하면서 여러 이미지 분류 설정에서 전체 파인튜닝보다 뛰어난 성능을 보였습니다. 비전-언어 모델의 경우 Kaiyang Zhou와 동료들의 컨텍스트 최적화(CoOp)는 "a photo of a"와 같은 CLIP 프롬프트의 직접 작성한 단어를 학습된 벡터로 대체합니다. 11개 데이터셋에서 CoOp는 클래스당 라벨이 지정된 예시 한두 개만으로 직접 작성한 프롬프트보다 높은 성능을 보였으며, 클래스당 예시 16개를 사용할 때는 평균 약 15% 향상되었습니다.

개방형 어휘 탐지기도 관련 방식으로 조정됩니다. Ultralytics YOLOE는 클래스 이름을 텍스트 프롬프트 임베딩으로 변환합니다. 사용자 지정 데이터셋을 위한 선형 프로빙 레시피는 데이터셋 클래스 이름의 임베딩을 각 분류 분기의 마지막 컨볼루션에 융합한 다음, 백본, 넥, 나머지 헤드는 고정한 채 해당 계층만 학습합니다.

  • 프롬프트 엔지니어링: 사람이 프롬프트를 텍스트로 작성하며, 이를 하드 프롬프트라고 부르기도 합니다. 학습은 수행하지 않습니다. 프롬프트 튜닝은 라벨이 있는 데이터에서 프롬프트를 학습하며 모델의 그래디언트에 접근해야 하므로 오픈 웨이트 모델에 적용됩니다.
  • 전체 파인튜닝: 모든 가중치를 업데이트하므로 작업마다 모델 전체를 복사해야 하며 이전에 습득한 기술을 파국적으로 잊을 위험이 있습니다. Lester 등은 프롬프트 튜닝 모델이 완전히 튜닝된 모델보다 도메인 변화에도 더 강하다는 점을 발견했습니다.
  • LoRA: 모델 가중치 계층 안에 학습 가능한 저랭크 행렬을 추가합니다. 프롬프트 튜닝은 계층을 그대로 두고 입력만 변경합니다.
  • 프롬프트 내 퓨샷 학습: 모든 요청에서 라벨이 지정된 예시를 텍스트로 컨텍스트 윈도우에 넣습니다. 튜닝된 소프트 프롬프트는 예시에서 배운 내용을 벡터 몇 개에 저장하며 입력 위치 k개만 추가하면 됩니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요