📌 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 모델들도 활용해보세요!
'AI > 실습' 카테고리의 다른 글
159. [AI] [NLP] Google Gemma-2-9B-IT 모델 분석 및 학습 데이터 총정리 (2) | 2025.02.25 |
---|---|
127. [Python] [Multiple Linear Regression] : 병원 진료비 예측 (Regression) (1) | 2025.01.28 |
126. [Python] [Multiple Linear Regression] : 이커머스(온라인 쇼핑몰) 상품 일간 판매량 예측 (0) | 2025.01.27 |
123. [Python] [Machine Learning] : 지도 학습 (Supervised Learning) (0) | 2025.01.25 |
121. [Python] [Pandas] 프로그래밍 실습 : 범죄현장 (1) | 2025.01.25 |