AI 강의 정리 09 - Hugging Face, 로컬 모델, 파인튜닝 기초

3 분 소요

Hugging Face란?

Hugging Face는 AI 모델과 데이터셋을 공유하고 사용할 수 있는 플랫폼입니다. OpenAI API처럼 서버에 요청하는 방식도 있지만, Hugging Face에서는 모델을 내려받아 내 컴퓨터나 서버에서 실행하는 경우도 많습니다.

강의 폴더에서는 다음 파일들이 이 주제에 해당합니다.

43.langchain_huggingface_01_model.py
43.langchain_huggingface_02_korean_sentiment.py
44.huggingface_01_model.py
44.huggingface_02_multi_modal.py
45.huggingface_01_img_object.py
45.huggingface_02_img_object.py
45.huggingface_03_img_object.py
46_huggingface_lmstudio_01.py
46_lmstudio_20250515_01.py
46_lmstudio_20250515_02.py
47_finetunning_20250515_01_generate_and_finetune.py
47_finetunning_20250519_01_test_pipeline.py
48_finetunning_20250519_lora_01.py_실행하진말것
49.lora_image_20250520.ipynb

transformers pipeline

Hugging Face에서 가장 쉽게 시작하는 방법은 pipeline입니다.

from transformers import pipeline

classifier = pipeline("sentiment-analysis", device=-1)
result = classifier("I love Hugging Face!")

print(result)

pipeline은 모델 로딩, 전처리, 추론, 후처리를 한 번에 처리해 줍니다.

pipeline 작업 의미
sentiment-analysis 감성 분석
translation_en_to_fr 영어를 프랑스어로 번역
image-to-text 이미지 설명 생성
automatic-speech-recognition 음성을 텍스트로 변환
image-classification 이미지 분류
text-generation 텍스트 생성

CPU와 GPU

강의 코드에는 device=-1이 등장합니다.

pipeline("sentiment-analysis", device=-1)

device=-1은 CPU를 사용하겠다는 뜻입니다. GPU가 있는 환경에서는 GPU를 사용하도록 설정할 수 있습니다.

비전공자 기준으로는 다음처럼 이해하면 됩니다.

장치 특징
CPU 대부분의 컴퓨터에 있음, 느리지만 기본 실행 가능
GPU AI 연산에 유리함, 큰 모델 실행에 필요할 수 있음

큰 이미지 생성 모델이나 음성 인식 모델은 CPU에서 매우 느릴 수 있습니다.

이미지 설명 생성

44.huggingface_02_multi_modal.py에는 이미지 설명 생성 예제가 있습니다.

from transformers import pipeline
from PIL import Image

image_to_text = pipeline(
    "image-to-text",
    model="Salesforce/blip-image-captioning-base",
)

image = Image.open("image/dog.jpg")
result = image_to_text(image)

print(result)

이미지를 넣으면 모델이 “개가 잔디밭에 앉아 있다” 같은 설명을 생성합니다.

음성 인식

음성을 텍스트로 바꾸는 작업은 ASR이라고 부릅니다. ASR은 Automatic Speech Recognition의 약자입니다.

from transformers import pipeline

pipe = pipeline(
    "automatic-speech-recognition",
    model="openai/whisper-small",
)

result = pipe("audio/sample.mp3", return_timestamps=True)
print(result)

mp3 파일을 처리하려면 FFmpeg가 필요할 수 있습니다. 강의 폴더에도 FFmpeg 경로 설정 코드가 들어 있습니다.

import os

os.environ["FFMPEG_BINARY"] = r"FFmpeg\ffmpeg-build\bin\ffmpeg.exe"

환경 변수 설정이 잘못되면 오디오 파일을 읽지 못하는 오류가 날 수 있습니다.

이미지 분류와 객체 탐지

이미지 분류는 이미지 전체가 무엇인지 판단합니다.

pipe = pipeline(
    "image-classification",
    model="google/vit-base-patch16-224",
)

result = pipe("image/dog.jpg")
print(result)

객체 탐지는 이미지 안의 여러 물체 위치까지 찾는 작업입니다. 강의 폴더에는 yolo_webcam.py, yolov8n.pt 같은 YOLO 관련 파일도 있습니다.

이미지 분류: 이 사진은 강아지입니다.
객체 탐지: 사진의 왼쪽 아래에 강아지가 있고, 오른쪽 위에 공이 있습니다.

Stable Diffusion 이미지 생성

Hugging Face 생태계에서는 diffusers 라이브러리로 이미지 생성 모델을 사용할 수 있습니다.

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4"
)

prompt = "A high tech solarpunk utopia in the Amazon rainforest"
image = pipe(prompt).images[0]
image.save("solarpunk.png")

이미지 생성 모델은 용량이 크고 연산량도 많습니다. GPU가 없는 환경에서는 실행이 오래 걸리거나 메모리 부족이 날 수 있습니다.

LM Studio와 로컬 LLM

LM Studio는 로컬 컴퓨터에서 LLM을 실행하고 API처럼 사용할 수 있게 해 주는 도구입니다.

로컬 모델을 쓰는 이유는 다음과 같습니다.

  • 외부 API 비용을 줄이고 싶을 때
  • 민감한 데이터를 외부로 보내기 어려울 때
  • 오프라인 실험이 필요할 때
  • 여러 모델을 비교하고 싶을 때

다만 로컬 모델은 하드웨어 영향을 크게 받습니다. 큰 모델일수록 RAM, VRAM, 저장 공간이 많이 필요합니다.

파인튜닝이란?

파인튜닝은 기존 모델을 특정 목적에 맞게 추가 학습시키는 작업입니다.

예를 들어 기본 모델은 톰 소여 이야기에 대해 일반적인 답변을 할 수 있습니다. 하지만 특정 문체나 특정 질문 형식을 잘 따르게 만들고 싶다면 학습 데이터를 만들어 파인튜닝할 수 있습니다.

강의 코드에서는 질문과 답변을 JSONL 형식으로 저장합니다.

import json

data = {
    "messages": [
        {"role": "system", "content": "당신은 유용한 AI 어시스턴트입니다."},
        {"role": "user", "content": "Tom은 왜 학교에 가기 싫어했어?"},
        {"role": "assistant", "content": "Tom은 자유롭게 놀고 싶어 학교에 가기 싫어했습니다."},
    ]
}

with open("tom_sawyer.jsonl", "w", encoding="utf-8") as f:
    f.write(json.dumps(data, ensure_ascii=False) + "\n")

JSONL은 한 줄에 JSON 객체 하나씩 들어가는 파일 형식입니다.

RAG와 파인튜닝의 차이

RAG와 파인튜닝은 자주 혼동됩니다.

구분 RAG 파인튜닝
목적 외부 문서를 검색해 답변 근거로 사용 모델의 응답 패턴이나 특정 지식을 추가 학습
데이터 반영 문서 교체가 쉬움 학습 작업이 필요
비용 주로 검색과 추론 비용 학습 비용과 추론 비용
적합한 경우 문서가 자주 바뀜 말투, 형식, 분류 기준을 고정하고 싶음

대부분의 문서 기반 챗봇은 먼저 RAG로 시작하는 편이 좋습니다. 파인튜닝은 데이터 품질과 목적이 명확할 때 사용하는 것이 좋습니다.

LoRA란?

LoRA는 큰 모델 전체를 다시 학습하지 않고, 일부 작은 가중치만 학습하는 방식입니다. 전체 파인튜닝보다 자원이 적게 들 수 있어 이미지 모델이나 LLM 실험에서 자주 사용됩니다.

다만 LoRA도 쉬운 작업은 아닙니다.

  • 데이터셋 품질이 중요합니다.
  • GPU 메모리가 필요할 수 있습니다.
  • 학습률, 배치 크기 같은 설정이 결과에 영향을 줍니다.
  • 저작권과 개인정보 데이터 사용에 주의해야 합니다.

정리

Hugging Face는 다양한 AI 모델을 실험하기 좋은 생태계입니다.

  • pipeline으로 감성 분석, 번역, 음성 인식, 이미지 분류를 쉽게 시작할 수 있습니다.
  • 큰 모델은 GPU와 메모리 요구량을 확인해야 합니다.
  • LM Studio를 사용하면 로컬 LLM을 실험할 수 있습니다.
  • RAG는 문서를 검색해 답변하는 방식입니다.
  • 파인튜닝은 모델의 응답 방식을 추가 학습시키는 방식입니다.
  • LoRA는 더 가벼운 파인튜닝 방식입니다.

다음 글에서는 유튜브 요약, 이메일 발송, OCR, PDF/Excel 요약 같은 AI 자동화 예제를 정리합니다.

댓글남기기