C.W.K.
Stream
Lesson 03 of 06 · published

태스크, Auto 클래스, from_pretrained()

~30 min · transformers, auto

Level 0스카우트
0 XP0/50 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Auto* 클래스는 dispatcher

pipeline() 추상화 아래에 Auto* 클래스가 있어: AutoTokenizer, AutoModel, AutoModelForCausalLM, AutoModelForSequenceClassification, AutoModelForSeq2SeqLM, AutoModelForImageClassification, AutoFeatureExtractor, AutoProcessor, ... — 태스크 family 마다 하나씩.

각 Auto 클래스가 registry 를 wrap. config.json"model_type": "llama" 필드에서 LlamaTokenizer + LlamaForCausalLM 으로 dispatch. concrete 클래스 직접 instantiate 거의 안 해; AutoModelForXxx.from_pretrained(repo_id) 호출하면 알아서 골라줘.

중요한 로더 노브 네 개

  • torch_dtype"auto" 는 config 에서 dtype 읽어; torch.float16/torch.bfloat16 은 메모리 절반; torch.float32 는 필요할 때만.
  • device_map"auto" 는 visible GPU/MPS/CPU 에 shard; explicit placement 면 dict 넘기기.
  • load_in_8bit / load_in_4bit — load 타임 bitsandbytes 양자화. 8-bit ~ 절반 메모리; 4-bit ~ 1/4. 챗 태스크 인퍼런스 품질 비용은 보통 작음.
  • revision — 커밋 SHA 핀. Hub 트랙과 같은 룰.

같은 로더가 카드에서 library_name: transformers 선언한 모든 모델에 동작. registry 의 핵심이야.

Code

AutoTokenizer + AutoModelForCausalLM·python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

repo = "meta-llama/Llama-3.2-1B-Instruct"  # 1B 급 instruct 모델 아무거나

tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(
    repo,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

prompt = tok.apply_chat_template(
    [{"role": "user", "content": "What is the Hugging Face Hub?"}],
    tokenize=False,
    add_generation_prompt=True,
)

inputs = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=120, do_sample=False)
print(tok.decode(out[0], skip_special_tokens=True))
다른 head, 같은 레시피 (classification)·python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

repo = "distilbert-base-uncased-finetuned-sst-2-english"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForSequenceClassification.from_pretrained(repo)

inputs = tok("The movie was ok.", return_tensors="pt")
with torch.no_grad():
    logits = model(**inputs).logits
print("predicted label id:", logits.argmax().item())

External links

Exercise

Hub 의 텍스트 classifier 아무거나. AutoModelForSequenceClassification.from_pretrained(...) 로 로드. 셋팅 셋 비교: float32 디폴트, bfloat16, 8-bit (bitsandbytes). 각각 같은 100 입력 시간 측정 + nvidia-smi 또는 torch.cuda.max_memory_allocated() 로 peak GPU 메모리.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.