본문으로 건너뛰기
AIDevOps
  • Learn
  • Learning Paths
  • Practice
  • Open Source
  • Books
  • Engineering

    AI DevOpsAI 서비스 개발·운영 전체 지도LLMOpsLLM 배포·평가·관측실전 프로젝트AI Agent 프로젝트 실습

    Knowledge

    Docs기술 문서 모음Blog엔지니어링 아티클Plogger개발 기록 피드

    Validate

    Certification3단계 역량 인증 · 준비 중
AI Models
LlamaMistralGemmaDeepSeekQwen
🤖 AI 실전 개발
AI 실전 입문 & 로드맵Hugging FaceLangChainLlamaIndexLLMOps|LangGraphMCPMulti-AgentAgent Evaluation
🧠 AI Core
AI 입문 & 로드맵ML FundamentalsLLM Fundamentals|Python AIC++|PyTorchTensorFlowJAX
🧠 AI Agent 개발
금융 AI AgentLLM API 서버주식 투자 AgentAIOps AI Agent교육 AI Agent코딩 AI Agent
🌱 Spring Cloud
Spring 입문 & 로드맵Spring Cloud GatewaySpring BootJava|Spring AISpring SecuritySpring BatchSpring JPA
🐳 DevOps
DevOps 입문 & 로드맵LinuxDockerCI/CD|Kubernetes 기본K8s 심화/실무PrometheusGrafana
🧱 인프라
인프라 입문 & 로드맵NginxRedis
☁️ 클라우드
클라우드 입문 & 로드맵AWSGCPAzureNCPCloudflare
🎨 Frontend
Frontend 입문 & 로드맵JavaScriptTypeScript|ReactNext.js|VueNuxt
📱 Mobile
Mobile 입문 & 로드맵KotlinAndroidFlutter
⚙️ Backend
Backend 입문 & 로드맵Python 기본FastAPIDjangoFlask|CGoGinNode.js
💾 Database
DB 입문 & 로드맵공통 SQLOracleMySQLPostgreSQL|MongoDB벡터 DB
🧪 검증
k6JMeternGrinder
AIDevOps

Engineering AI. From Code to Production.
AI와 AI Agent를 개발하고 운영하기 위한 엔지니어링 학습 플랫폼

Learn

  • 전체 가이드
  • Learning Paths
  • Practice
  • Books

Resources

  • AI DevOps
  • LLMOps
  • 실전 프로젝트
  • Docs
  • Blog
  • Plogger
  • Open Source
  • Certification (준비 중)

Start Here

  • AI Core 로드맵
  • AI 실전 개발 로드맵
  • Spring Cloud 로드맵
  • DevOps 로드맵
  • 인프라 로드맵

 

  • 클라우드 로드맵
  • Frontend 로드맵
  • Mobile 로드맵
  • Backend 로드맵
  • Database 로드맵
© 2026 AI DevOps Korea. All rights reserved.
이용약관개인정보처리방침Sitemaptestforge.kr
  1. Home
  2. Learn
  3. AI 실전 개발
  4. Hugging Face
Hugging Face 모델 허브 & 파인튜닝 가이드

HF Hugging Face 완전 가이드

Visitors

Hugging Face Transformers, PEFT, TGI로 LLM을 로컬 실행·파인튜닝·서빙합니다. LoRA/QLoRA 파인튜닝, Inference API, Text Generation Inference 프로덕션 서버, 에이전트 통합까지 다룹니다.

  • Intermediate · 중급
  • 업데이트 2026.05.23
  • 약 9분 읽기
  • 11개 섹션
  • 예제 코드 9개
  • 웹 IDE 실습 제공
HF

Hugging Face 웹 IDE

설치 없이 브라우저에서 코드를 실행하고 단계별 예제로 익혀보세요.

웹 IDE 열기 →
LLM 파인튜닝 (LoRA/QLoRA)TGI 프로덕션 서버Inference APIPEFT 어댑터 관리

관련 프레임워크 & 개발환경

🐍Python AI→🔥PyTorch→TFTensorFlow→LCLangChain→LILlamaIndex→

목차

0 / 13
  1. 가이드 사용법
  2. 구조 다이어그램
  3. 모델 허브 & 파이프라인
  4. Inference API
  5. LoRA 파인튜닝
  6. QLoRA (4-bit)
  7. 데이터셋 준비
  8. TGI 프로덕션 서버
  9. 모델 평가
  10. HF Agents & Tool
  11. Hugging Face 설계
  12. 운영 기준
  13. 검증 전략
목차 13개 섹션
  1. 가이드 사용법
  2. 구조 다이어그램
  3. 모델 허브 & 파이프라인
  4. Inference API
  5. LoRA 파인튜닝
  6. QLoRA (4-bit)
  7. 데이터셋 준비
  8. TGI 프로덕션 서버
  9. 모델 평가
  10. HF Agents & Tool
  11. Hugging Face 설계
  12. 운영 기준
  13. 검증 전략

가이드 사용법

읽는 방향

Hugging Face를 실무 흐름으로 이해하기

Hugging Face Transformers, PEFT, TGI로 LLM을 로컬 실행·파인튜닝·서빙합니다. LoRA/QLoRA 파인튜닝, Inference API, Text Generation Inference 프로덕션 서버, 에이전트 통합까지 다룹니다. 이 가이드는 개념을 나열하기보다, 실제 프로젝트에서 판단해야 하는 순서대로 내용을 따라갈 수 있게 구성했습니다.

핵심 관점

AI / LLM 시스템

모델과 프롬프트만 보지 않고, 데이터 흐름, 평가, 배포 이후의 운영 지표까지 한 번에 연결해서 봅니다.

LLM 파인튜닝 (LoRA/QLoRA)TGI 프로덕션 서버Inference APIPEFT 어댑터 관리

구조 다이어그램

글로 읽은 내용을 머릿속에 오래 남기려면 먼저 흐름을 그림으로 잡는 편이 좋습니다. 아래 두 그림은 Hugging Face를 학습할 때 계속 되돌아볼 수 있는 기준 지도입니다.

학습 흐름

다이어그램 렌더링 중…

아키텍처 관점

다이어그램 렌더링 중…

모델 허브 & 파이프라인

Hugging Face를 처음 펼칠 때는 세부 명령보다 큰 그림이 먼저입니다. 이 섹션에서는 앞으로 배울 개념들이 어떤 문제를 풀기 위해 등장했는지부터 잡아봅니다.

Hugging Face Hub에는 50만 개 이상의 모델이 공개되어 있습니다. pipeline API는 모델 로딩, 토크나이징, 추론, 후처리를 한 줄로 추상화해 빠른 프로토타이핑을 가능하게 합니다. 프로덕션에서는 AutoTokenizer + AutoModelForCausalLM으로 세밀하게 제어합니다.
PYTHON
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
import torch

# 텍스트 생성 파이프라인 — device_map="auto" 로 GPU/CPU 자동 할당
pipe = pipeline(
    "text-generation",
    model="meta-llama/Llama-3.1-8B-Instruct",
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

messages = [{"role": "user", "content": "파이썬으로 퀵소트를 구현해줘"}]
result = pipe(messages, max_new_tokens=512, temperature=0.7)
print(result[0]["generated_text"][-1]["content"])
라이브러리역할
transformers모델 로드·추론 통합 API
datasets학습 데이터셋 로드와 스트리밍 전처리
peftLoRA/QLoRA 경량 파인튜닝 어댑터
trlSFT·DPO·PPO 등 정렬 학습 트레이너
accelerate멀티 GPU·분산 학습 런처
huggingface_hub모델 업로드·다운로드·버전 관리

Inference API

여기서는 Inference API을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

Inference API는 GPU 없이 수백 개의 모델을 HTTP 엔드포인트로 즉시 호출합니다. InferenceClient는 스트리밍을 기본 지원하며, Serverless(무료)와 Dedicated Endpoint(전용 GPU) 두 가지 플랜을 제공합니다. 프로덕션 SLA가 필요하면 Dedicated Endpoint를 사용하세요.
PYTHON
from huggingface_hub import InferenceClient

client = InferenceClient(api_key="hf_...")

# 스트리밍 응답 — 실시간 토큰 출력
response = client.chat_completion(
    model="meta-llama/Llama-3.1-70B-Instruct",
    messages=[{"role": "user", "content": "LLM 파인튜닝의 핵심 개념을 설명해줘"}],
    max_tokens=1024,
    stream=True,
)
for chunk in response:
    print(chunk.choices[0].delta.content, end="", flush=True)

LoRA 파인튜닝

여기서는 LoRA 파인튜닝을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

LoRA(Low-Rank Adaptation)는 원본 가중치를 동결하고 저차원 행렬 쌍(A·B)만 학습합니다. 전체 파라미터 대비 0.1% 미만의 학습 파라미터로 도메인 특화 성능을 확보할 수 있어, 커스텀 LLM 개발의 사실상 표준입니다. target_modules는 모델 아키텍처에 따라 q_proj/v_proj 또는 c_attn을 선택합니다.
PYTHON
from peft import LoraConfig, get_peft_model, TaskType
from transformers import AutoModelForCausalLM
import torch

# LoRA 설정 — r(rank)이 높을수록 표현력↑, 메모리↑
lora_config = LoraConfig(
    r=16,
    lora_alpha=32,                          # 스케일링 팩터 (보통 r의 2배)
    target_modules=["q_proj", "v_proj"],    # 어텐션 쿼리·값 레이어만 학습
    lora_dropout=0.05,
    bias="none",
    task_type=TaskType.CAUSAL_LM,
)

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: 6,815,744 || all params: 8,036,966,400 || trainable%: 0.08%

QLoRA (4-bit 양자화)

여기서는 QLoRA (4-bit 양자화)을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

QLoRA는 LoRA에 4-bit NF4 양자화를 결합해 VRAM 사용량을 70% 이상 줄입니다. 24GB GPU 한 장으로 70B 모델 파인튜닝이 가능해집니다. double_quant는 양자화 상수를 다시 양자화해 추가 절약을 제공합니다.
PYTHON
from transformers import BitsAndBytesConfig, AutoModelForCausalLM
from peft import LoraConfig, get_peft_model, TaskType, prepare_model_for_kbit_training
import torch

# 4-bit NF4 양자화 설정
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",              # NF4가 fp4보다 성능 우수
    bnb_4bit_compute_dtype=torch.bfloat16,  # 연산은 bfloat16으로 수행
    bnb_4bit_use_double_quant=True,         # 이중 양자화로 추가 절약
)

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=bnb_config,
    device_map="auto",
)
# 4-bit 학습을 위한 그라디언트 체크포인트 활성화
model = prepare_model_for_kbit_training(model)

lora_config = LoraConfig(r=64, lora_alpha=16, task_type=TaskType.CAUSAL_LM)
model = get_peft_model(model, lora_config)

데이터셋 준비

여기서는 데이터셋 준비을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

파인튜닝 품질의 80%는 데이터 품질에 달려 있습니다. datasets 라이브러리는 스트리밍, 샤딩, 병렬 전처리를 지원해 수십억 토큰 규모도 처리할 수 있습니다. apply_chat_template은 각 모델의 공식 대화 포맷을 자동 적용해 학습-추론 불일치를 예방합니다.
PYTHON
from datasets import load_dataset
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")

# JSONL 파일 로드 — {"input": ..., "output": ...} 형식
dataset = load_dataset("json", data_files="train.jsonl", split="train")

def format_chat(example):
    messages = [
        {"role": "system",    "content": "당신은 친절한 AI 어시스턴트입니다."},
        {"role": "user",      "content": example["input"]},
        {"role": "assistant", "content": example["output"]},
    ]
    # 모델 전용 채팅 템플릿 적용 (토큰화 없이 문자열 반환)
    return {"text": tokenizer.apply_chat_template(messages, tokenize=False)}

dataset = dataset.map(format_chat, remove_columns=dataset.column_names)
print(dataset[0]["text"][:300])

TGI 프로덕션 서버

여기서는 TGI 프로덕션 서버을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

Text Generation Inference(TGI)는 HuggingFace가 만든 고성능 LLM 서빙 엔진입니다. Continuous batching, PagedAttention, tensor parallelism을 내장해 vLLM과 동등한 처리량을 제공합니다. OpenAI 호환 엔드포인트(/v1/chat/completions)를 지원해 기존 코드를 수정 없이 연결할 수 있습니다.
BASH
# TGI Docker 서버 실행 — 단일 GPU
docker run --gpus all -p 8080:80 \
  -v $HOME/.cache/huggingface:/data \
  ghcr.io/huggingface/text-generation-inference:3.0 \
  --model-id meta-llama/Llama-3.1-8B-Instruct \
  --max-total-tokens 4096 \
  --max-input-tokens 3072
PYTHON
# OpenAI 호환 클라이언트로 TGI 호출
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8080/v1", api_key="none")

response = client.chat.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",
    messages=[{"role": "user", "content": "서울의 날씨는?"}],
    stream=True,
    max_tokens=512,
)
for chunk in response:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

모델 평가

여기서는 모델 평가을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

파인튜닝 후 객관적인 품질 측정이 필수입니다. evaluate 라이브러리는 BLEU·ROUGE·BERTScore를 통일된 인터페이스로 제공합니다. ROUGE-L은 요약, BERTScore는 의미 유사도에 적합하며, 도메인 특화 벤치마크는 별도 평가셋을 구성하는 것이 좋습니다.
PYTHON
import evaluate

# 메트릭 로드 (최초 실행 시 자동 다운로드)
rouge     = evaluate.load("rouge")
bertscore = evaluate.load("bertscore")

predictions = ["모델이 생성한 요약문입니다."]
references  = ["참조 정답 요약문입니다."]

# ROUGE — 단어 겹침 기반 (빠른 계산)
rouge_result = rouge.compute(predictions=predictions, references=references)
print(rouge_result)
# {'rouge1': 0.82, 'rouge2': 0.71, 'rougeL': 0.79}

# BERTScore — 의미 임베딩 기반 (더 정확, GPU 권장)
bert_result = bertscore.compute(
    predictions=predictions, references=references, lang="ko"
)
print(f"F1: {bert_result['f1'][0]:.4f}")

HF Agents & Tool

여기서는 HF Agents & Tool을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

smolagents는 HuggingFace의 경량 에이전트 라이브러리입니다. CodeAgent는 LLM이 파이썬 코드를 직접 작성·실행하는 방식으로 도구를 호출해, JSON 기반 tool-call보다 복잡한 로직을 처리할 수 있습니다. HfApiModel은 별도 인프라 없이 Inference API를 에이전트 두뇌로 사용합니다.
PYTHON
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel

# Inference API를 에이전트 LLM으로 사용
model = HfApiModel(model_id="meta-llama/Llama-3.1-70B-Instruct")

agent = CodeAgent(
    tools=[DuckDuckGoSearchTool()],  # 웹 검색 도구
    model=model,
    max_steps=10,
)

# 에이전트가 검색 → 분석 → 코드 생성 → 결과 반환
result = agent.run("최신 LLM 벤치마크 결과를 찾아서 표로 정리해줘")
print(result)

Tip

  • CodeAgent는 샌드박스 환경에서 실행하세요 — 임의 코드 실행이 가능합니다.
  • 커스텀 도구는 @tool 데코레이터로 정의하며 타입 힌트와 docstring이 필수입니다.

Hugging Face 실무 설계

Hugging Face 실무 설계은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.

Hugging Face는 모델 선택보다 tokenizer, config, pipeline, fine-tuning artifact 관리를 먼저 잡아야 합니다. model card와 dataset card를 같이 관리하면 재현성이 좋아집니다.
결정 지점확인 질문실무 기준
경계Hugging Face 코드에서 바뀌기 쉬운 부분은 어디인가?입출력, 설정, 외부 연동, 핵심 규칙을 분리합니다.
상태상태가 어디서 생성되고 어디서 사라지는가?상태 소유자와 수명 주기를 코드로 드러냅니다.
장애실패했을 때 호출자는 무엇을 받는가?timeout, fallback, error contract를 먼저 정합니다.

Hugging Face 운영 기준

이 섹션은 Hugging Face 운영 기준을 실무 관점에서 정리합니다. 개념을 외우기보다, 어떤 상황에서 이 기준을 꺼내 쓸지에 초점을 맞춰보세요.

추론 운영에서는 max token, batch size, quantization, device_map, cache 정책이 비용과 지연 시간을 결정합니다. 큰 모델은 로딩 시간과 메모리 피크도 별도 지표로 봐야 합니다.

Tip

  • model card
  • tokenizer compatibility
  • quantization benchmark
  • safety regression prompts

Hugging Face 검증 전략

Hugging Face 검증 전략은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.

프롬프트/데이터셋 변경 전후의 benchmark set, safety sample, regression prompt를 고정해 비교해야 합니다.
품질 축검증 방법완료 기준
정확성정상/실패 케이스를 자동화합니다.핵심 시나리오가 재현 가능하게 통과합니다.
회귀 방지버그 수정 시 동일 케이스를 테스트로 남깁니다.같은 장애가 다시 배포되지 않습니다.
운영성로그, 메트릭, 알림을 확인합니다.문제가 생겼을 때 원인 추적 경로가 있습니다.
← 이전 가이드AI 실전 입문 & 로드맵다음 가이드 →LangChain