파이프라인 작업과 평가

Hugging Face로 배우는 멀티모달 모델

James Chapman

Curriculum Manager, DataCamp

파이프라인 vs. 모델 구성요소

현재 방식

from transformers import BlipProcessor, BlipForConditionalGeneration
checkpoint = "Salesforce/blip-image-captioning-base"
processor = BlipProcessor.from_pretrained(checkpoint)
model = BlipForConditionalGeneration.from_pretrained(checkpoint)

파이프라인

from transformers import pipeline
pipe = pipeline("image-to-text", model=checkpoint)
Hugging Face로 배우는 멀티모달 모델

예시 비교

전처리기와 모델 직접 사용

inputs = processor(images=image, 
                   return_tensors="pt")
gen = model.generate(**inputs)
processor.decode(gen[0])

파이프라인

pipe(image)
[{'generated_text': 
'a man wearing a black shirt'}]

datapoint5

Hugging Face로 배우는 멀티모달 모델

모델과 작업 찾기

API로 파이프라인용 모델 찾기:

from huggingface_hub import HfApi
model = list(api.list_models(task="text-to-image", limit=5))
pipe = pipeline("text-to-image", model[0].id)

Hugging Face의 모델 홈 화면 스크린샷

Hugging Face로 배우는 멀티모달 모델

모델에 옵션 전달

  • 내부적으로 MusicgenForConditionalGeneration 사용
pipe = pipeline(task="text-to-audio", 
                model="facebook/musicgen-small", framework="pt")
generate_kwargs = {"temperature": 0.8, "max_new_tokens": 20}

outputs = pipe("Classic rock riff", generate_kwargs=generate_kwargs)
  • temperature(0-1): 무작위성/창의성 제어
  • max_new_tokens: 생성 토큰 수 제한
Hugging Face로 배우는 멀티모달 모델

파이프라인 성능 평가

  • Accuracy: 전체 예측 중 정답 비율
  • Precision: 예측이 맞은 빈도
  • Recall: 실제 정답 중 맞힌 비율
  • F1 Score: precision과 recall의 조화 평균
from evaluate import evaluator

task_evaluator = evaluator("image-classification")
metrics_dict = { "precision": "precision", "recall": "recall", "f1": "f1", }
label_map = pipe.model.config.label2id
Hugging Face로 배우는 멀티모달 모델

파이프라인 성능 평가

eval_results = task_evaluator.compute(
  model_or_pipeline=pipe,

data=dataset,
metric=evaluate.combine(metrics_dict),
label_mapping=label_map)
print(eval_results)
{'precision': 0.999001923076923, 
'recall': 0.999, 
'f1': 0.9989999609405906, ...}
pipe = pipeline(task="image-classification",
model="ideepankarsharma2003/AI_ImageClassi
fication_MidjourneyV6_SDXL"
)
dataset = load_dataset("ideepankarsharma2003/
Midjourney_v6_Classification_small_shuffled")

데이터셋의 수중 개 이미지 예시

Hugging Face로 배우는 멀티모달 모델

Vamos praticar!

Hugging Face로 배우는 멀티모달 모델

Preparing Video For Download...