Investment-Assistant

HuggingFace를 활용한 한국어 sLLM 모델 사용법 [17]

HeyTeddy 2024. 12. 19. 06:26
반응형

이 블로그에서는 Hugging Face 라이브러리를 활용해 한국어 기반의 sLLM 모델인 MLP-KTLim/llama-3-Korean-Bllossom-8B를 사용하는 방법을 소개합니다. Hugging Face의 transformers 라이브러리를 통해 손쉽게 텍스트 생성 파이프라인을 구축할 수 있으며, 간단한 프롬프트를 입력하여 모델의 성능을 확인할 수 있습니다.

# Hugging Face Transformers와 PyTorch 라이브러리 가져오기
import transformers
import torch

# 사용할 모델의 ID 설정 (Hugging Face 모델 허브에서 가져옴)
model_id = "MLP-KTLim/llama-3-Korean-Bllossom-8B"

# 텍스트 생성 파이프라인 구성
# - "text-generation": 텍스트 생성 태스크
# - model_kwargs: 모델의 세부 옵션 설정
# - device_map: 모델의 자동 장치 매핑 (GPU 활용 가능)
pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},  # bfloat16 데이터 타입으로 메모리 최적화
    device_map="auto",  # GPU 자동 할당
)

# 모델을 평가 모드로 전환 (추론에 최적화)
pipeline.model.eval()

# 기본 프롬프트 정의
PROMPT = '''You are a helpful AI assistant. Please answer the user's questions kindly. 당신은 유능한 AI 어시스턴트 입니다. 사용자의 질문에 대해 친절하게 답변해주세요.'''

# 사용자가 입력할 질문
instruction = "서울의 유명한 관광 코스를 만들어줄래?"

# 메시지 구성: 시스템 프롬프트와 사용자 입력
messages = [
    {"role": "system", "content": f"{PROMPT}"},
    {"role": "user", "content": f"{instruction}"}
]

# 프롬프트 구성
# - tokenizer.apply_chat_template: 대화 형식 템플릿에 메시지를 적용
prompt = pipeline.tokenizer.apply_chat_template(
    messages, 
    tokenize=False,  # 프롬프트를 토크나이즈하지 않고 문자열 그대로 사용
    add_generation_prompt=True  # 생성용 프롬프트 추가
)

# 모델 종료 조건 설정 (종료 토큰 ID)
terminators = [
    pipeline.tokenizer.eos_token_id,  # 모델 종료 토큰
    pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")  # 커스텀 종료 토큰
]

# 텍스트 생성 수행
outputs = pipeline(
    prompt,  # 입력 프롬프트
    max_new_tokens=2048,  # 생성할 최대 토큰 수
    eos_token_id=terminators,  # 종료 토큰
    do_sample=True,  # 샘플링 활성화 (랜덤성 추가)
    temperature=0.6,  # 샘플링 온도 조정 (낮을수록 보수적, 높을수록 다양)
    top_p=0.9  # Top-p 필터링 활성화 (확률 기반 선택)
)

# 결과 출력
# 생성된 텍스트에서 프롬프트 부분 제거 후 출력
print(outputs[0]["generated_text"][len(prompt):])

 

사용하는 sLLM 모델

  • 모델명: MLP-KTLim/llama-3-Korean-Bllossom-8B
  • 출처: Hugging Face Model Hub
  • 모델 특징: 한국어 텍스트 생성에 특화된 Llama 기반의 대형 언어 모델 (LLM)

실행 과정 요약

  1. 모델 불러오기
    Hugging Face transformers 라이브러리를 사용해 MLP-KTLim/llama-3-Korean-Bllossom-8B 모델을 불러옵니다. device_map을 설정해 GPU 자원을 최적화합니다.
  2. 프롬프트 구성
    PROMPT와 사용자 요청(instruction)을 결합해 텍스트 생성에 사용할 입력 데이터를 구성합니다.
  3. 텍스트 생성
    구성한 프롬프트를 모델에 입력하여 새로운 텍스트를 생성합니다. temperature와 top_p 값을 조정해 결과의 다양성과 품질을 조율합니다.
  4. 결과 출력
    생성된 텍스트에서 프롬프트를 제외한 실제 응답 부분만 출력합니다.

"서울의 유명한 관광 코스"라는 질문에 모델은 서울의 인기 있는 관광 명소와 코스를 추천합니다. 예를 들어, 경복궁, 인사동, 북촌 한옥마을, 한강 유람선 코스 등을 포함한 추천 목록이 제공됩니다. 이를 통해 한국어 기반 LLM의 활용 가능성을 엿볼 수 있습니다.

반응형