2. HuggingFace 모델 다운로드 및 추론 (+실습)

2026. 4. 24. 22:07·LLM

LLM에 대해 확실한 기본기를 다지기 위해

공부하고 정리한 내용입니다.

 

AI 공부를 하면서 HuggingFace사용법은 필수적으로 익혀야 한다. 

그래서 HuggingFace를 통해 모델을 다운로드 받아서 사용해보고자 한다. 


HuggingFace란?

- LLM을 포함하여 다양한 모델을 공유하고 사용할 수 있도록 개방된 오픈소스 플랫폼이다. 

- HuggingFace 특징은 아래와 같다.

  • 누구나 쉽게 AI 모델을 공유하고 HuggingFace에서 만든 파이썬 라이브러리 transformers를 이용하여 쉽게 다운로드, 추론, 파인튜닝을 수행할 수 있다.
  • 최신 AI/LLM 모델과 기술을 접할 수 있다.
  • github처럼 모델 공유가 가능하다. -> 다운로드한 모델을 파인튜닝한 후 HuggingFace 업로드
  • 다양한 Dataset 공유 가능
  • 자신이 개발한 AI 기반 웹앱을 호스팅 할 수 있다.(Space 탭)

HuggingFace에서는 대표적으로 아래와 같은 세 가지 라이브러리를 제공한다. 

라이브러리 설명 사용 예시
datasets - 모델 파인튜닝 /성능평가 시 필요한 데이터셋을 로드하거나 저장할 수 있는 라이브러리 from datasets import load_dataset
dataset = load_dataset()
trl - 모델 파인튜닝 등 학습시 활용되는 라이브러리 from trl import PPOTrainer, PPOConfig
transformers - 모델 자체와 토크나이저를 로드하여 추론할 때 주로 사용되는 라이브러리 from transformers import AutoTokenizer, AutoModel

model = AutoModel()
tokenizer = AutoTokenizer()

 

특히 Transformers 라이브러리는 HuggingFace가 등장하기 전에는 여러 기업에서 서로 다른 인터페이스를 제공했기 때문에 복잡했지만, HuggingFace에서 파이썬 transformers 라이브러리를 제작/유지를 하여 여러 모델을 쉽게 다룰 수 있도록 한다.

 

*HuggingFace 모델을 다운로드하거나 파인튜닝, 양자화 등의 작업을 수행하는 등의 경우 transformers 라이브러리를 사용한다. 


실습

실습 환경은 Colab으로 진행했고, 런타임 유형은 T4로 설정했다. 

 

모델을 다운로드하고 추론을 하는 방식은 두 가지가 있다. 

 

1. pipeline - 간소화된 추론 방법

  • pipeline은 토크나이저와 모델을 결합해 쉽게 추론할 수 있도록 지원
  • pipeline() 수행 시 자동으로 허깅페이스에서 모델 다운로드
  • 주로 프로토타이핑, 간단히 테스트할 때 사용
  • gpt2-xl 모델은 허깅페이스 openai-community/gpt2-xl 모델을 의미
# pipeline 가져오기
from transformers import pipeline

# gpt2-xl 모델 로드
generator = pipeline('text-generation', model='gpt2-xl')
# 문장 넣어서 텍스트 출력
response = generator("Hello, I'm a language model,", max_length=100, num_return_sequences=2)
# 결과 출력
print(response)

 

2. 토크나이저와 모델을 각각 다운로드하는 방식

아래의 3단계로 이루어진다. 

 

1. transformer 라이브러리에서 AutoModelForCausslLM, AutoTokenizer를 불러온 후,

Tokenizer를 이용하여 text를 토큰화한다.

# transformers 
from transformers import AutoModelForCausalLM, AutoTokenizer
# AutoModelForCasualLM = 다음 단어를 예측하는 모델
# AutoTokenizer = 텍스트를 숫자로 변환해주는 도구

tokenizer = AutoTokenizer.from_pretrained('gpt2-xl')
model = AutoModelForCausalLM.from_pretrained('gpt2-xl').to('cuda')

text = "Replace me by any text you'd like"
# .to('cuda') 하는 이유 -> 모델이 GPU에 있기 때문에 입력도 GPU에 있어야 함. 
encoded_input = tokenizer(text, return_tensors='pt').to('cuda')

print(encoded_input)

 

2. 토큰화 한 내용으로 추론을 수행한 후, 결과 토큰을 출력한다. 

# model.generate(): 추론 수행

outputs = model.generate(
	# **encoded_input : dict를 풀어서 전달
    **encoded_input,
    max_length=100,
    repetition_penalty=2.0
)
# 토큰 리스트 출력
print(outputs)

 

3. 토큰을 사람이 읽을 수 있도록 문자열로 변환한다. 

decoded_output = tokenizer.decode(outputs[0], skip_special_tokens=False)
print(decoded_output)

두 가지 방식을 사용해 본 결과 각 방식의 차이가 잘 느껴졌는데, 

 

첫 번째 방식의 경우에는

빠르게 결과를 확인할 수 있다는 장점이 존재하지만 내부 동작을 확인할 수 없고,  커스터마이징이 제한된다는 점을 느꼈고

 

두 번째 방식의 경우에는

제어가 가능하고, 성능 최적화 및 확장성 까지도 고려해 볼 수 있다는 장점이 존재하지만,

코드가 복잡하다는 단점이 존재한다는 점을 확인할 수 있었다.  

 

다음 글에서는 토크나이저에 대해 더 자세히 공부해보고자 한다.

 

'LLM' 카테고리의 다른 글

3. 토크나이저(Tokenizer)  (0) 2026.04.25
1. LLM 이해  (0) 2026.04.23
'LLM' 카테고리의 다른 글
  • 3. 토크나이저(Tokenizer)
  • 1. LLM 이해
dev-hyena
dev-hyena
차곡차곡 쌓아나가는 중📚
  • dev-hyena
    우당탕탕 개발일지
    dev-hyena
  • 전체
    오늘
    어제
    • 분류 전체보기 (15)
      • Study (11)
      • MS ai school (1)
      • LLM (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Reinforcement Learning
    로컬 llm
    ORM
    스프링부트
    자바
    강화학습
    강화 학습 기초
    pr 순서
    김영한
    게시판 만들기
    백엔드
    밑바닥부터 만들면서 배우는 LLM
    Java
    RL
    Agent
    springdata
    토크나이저
    JPA
    패러다임불일치
    llm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-hyena
2. HuggingFace 모델 다운로드 및 추론 (+실습)
상단으로

티스토리툴바