AI/실습

158. [AI] [NLP] Gemma 모델 사용 시 transformers를 활용하는 이유

천재단미 2025. 2. 24. 14:48
728x90
반응형

 

 

 

 

📌 1. 개요

Gemma 모델은 Google DeepMind에서 개발한 강력한 **LLM(대형 언어 모델)**입니다.

이 모델을 Streamlit에서 활용하려면 Hugging Face의 transformers 라이브러리를 사용해야 합니다.

📌 하지만, 왜 transformers를 사용해야 할까요?

 

모델을 쉽고 빠르게 로드

보안성이 강화된 safetensors 활용

대규모 모델을 효과적으로 샤딩(Sharding)하여 로드

Hugging Face의 AutoModel을 통한 자동화된 설정

 

이 블로그에서는 transformers를 활용하여 Gemma 모델을 로드하는 이유와 과정

차근차근 설명해드리겠습니다.

 


 

🔍 2. transformers 라이브러리를 사용하는 이유

✅ 1) 모델을 쉽고 빠르게 로드 가능

Hugging Face의 transformers 라이브러리는 사전 훈련된 AI 모델을 한 줄의 코드로 로드할 수 있도록 도와줍니다.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "google/gemma-2-9b-it"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

 

📌 위 코드만 실행하면 Gemma 모델이 자동으로 다운로드 & 로드됩니다!

 


 

✅ 2) safetensors 포맷을 활용한 보안성 강화

과거에는 .ckpt(checkpoint) 형식이 많이 사용되었으나, 최근에는 safetensors 포맷이 더 널리 사용됩니다.

그 이유는 다음과 같습니다.

포맷 보안성 로딩 속도 관리 용이성

.ckpt (Pickle 기반) ❌ 악성 코드 포함 가능 ⏳ 느림 (Pickle 사용) 📂 여러 개의 파일로 나뉨
.safetensors ✅ 안전 (악성 코드 없음) 🚀 빠름 (Zero-Copy 방식) 📄 하나의 파일로 저장 가능

 

📌 Gemma 모델도 safetensors 포맷을 사용하여 보안성과 성능을 모두 향상합니다!

📌 텐서를 그대로 로드하는 방식(Zero-Copy) 덕분에 pickle보다 훨씬 빠릅니다.

 


 

✅ 3) 대규모 모델을 효과적으로 샤딩(Sharding)하여 로드 가능

Gemma 같은 **대형 모델(7B, 2B 등)**은 단일 파일로 저장하기 어렵습니다.

따라서 파일을 여러 개로 분할(Sharding) 하여 로딩 속도를 최적화합니다.

 

📌 Gemma 모델 다운로드 시 포함된 파일들

├── config.json  → 모델 설정 파일
├── tokenizer_config.json  → 토크나이저 설정 파일
├── tokenizer.model  → 토큰화 모델
├── tokenizer.json  → JSON 형식의 토큰 데이터
├── model.safetensors.index.json  → 모델 가중치 인덱스
├── model-00001-of-00002.safetensors  → 모델 가중치 (샤드1)
├── model-00002-of-00002.safetensors  → 모델 가중치 (샤드2)
├── generation_config.json  → 생성 설정 파일

 

📌 여러 개의 .safetensors 파일을 하나로 합쳐 로딩할 수 있도록 index.json이 포함됩니다.

 

 


 

✅ 4) 자동화된 모델 & 토크나이저 설정 (AutoModel 사용)

transformers 라이브러리는 사용자가 직접 모델 설정을 할 필요 없이 자동화된 기능을 제공합니다.

즉, 어떤 모델이든 한 줄의 코드로 쉽게 로드 가능!

 

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "google/gemma-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

 

 

📌 위 코드만 실행하면 모델과 토크나이저가 자동으로 설정됩니다!

📌 모델 파일을 직접 다운로드하지 않아도 Hugging Face에서 자동으로 가져옵니다.

 


 

🚀 3. Streamlit에서 Gemma 모델 실행하기

이제 transformers를 활용하여 Streamlit 웹 애플리케이션에서 Gemma 모델을 실행해보겠습니다.

✅ 1) 필수 라이브러리 설치

pip install streamlit transformers safetensors torch

 

 

📌 safetensors가 필수적으로 포함되어야 합니다!

 


 

✅ 2) Streamlit 앱 코드 (app.py)

import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Streamlit 앱 제목
st.title("💬 Gemma AI Chatbot")

# 모델 및 토크나이저 로드
model_name = "google/gemma-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16)

# 사용자 입력 받기
user_input = st.text_area("🤖 대화 입력:")

if st.button("💡 답변 생성"):
    if user_input:
        # 입력 토큰 변환
        inputs = tokenizer(user_input, return_tensors="pt")

        # 모델 예측 수행
        outputs = model.generate(**inputs, max_length=100)

        # 결과 변환
        response = tokenizer.decode(outputs[0], skip_special_tokens=True)

        # 결과 출력
        st.write(f"📝 AI의 답변: {response}")
    else:
        st.warning("❗ 입력을 입력해주세요.")

 

📌 위 코드를 실행하면 Streamlit 웹에서 AI 챗봇이 동작합니다!

 


 

📌 4. 실행 방법

1) Streamlit 실행

streamlit run app.py

 

✅ 브라우저에서 http://localhost:8501 로 접속하면 Gemma AI 챗봇을 사용할 수 있습니다!

 


 

🎯 5. 요약 & 결론

📌 기능 🚀 transformers를 사용하는 이유

빠른 모델 로딩 safetensors 포맷 사용으로 속도 최적화
보안 강화 pickle과 다르게 악성 코드 실행 위험 없음
대규모 모델 샤딩 지원 .safetensors.index.json 활용
자동 설정 AutoModelForCausalLM 및 AutoTokenizer로 간편 로딩
Streamlit과 완벽 호환 손쉽게 웹 애플리케이션으로 AI 챗봇 구현 가능

 

 


 

🚀 6. 마무리 & 다음 단계

 

🎉 이제 transformers 라이브러리를 활용하여 Streamlit에서 Gemma 모델을 쉽게 로드하고 사용할 수 있습니다!

📌 더욱 발전된 AI 모델을 사용하고 싶다면, Hugging Face의 다른 LLM 모델들도 활용해보세요!

 

728x90
반응형
home top bottom
}