티스토리 뷰
개요
최근 대형 언어 모델(LLM)의 활용이 증가함에 따라, 이를 보다 효율적으로 로드하고 실행할 수 있는 다양한 기술이 주목받고 있습니다. 본 포스트에서는 Unsloth
의 FastLanguageModel
을 활용하여 Meta-Llama-3.1-8B-Instruct
모델을 로드하고 추론하는 과정을 분석합니다.
환경 설정
우선 Unsloth
라이브러리를 설치해야 합니다.
!pip install unsloth
그 후, 필요한 모듈을 임포트하고 하이퍼파라미터를 설정합니다.
from unsloth import FastLanguageModel
import torch
max_seq_length = 2048
dtype = None
load_in_4bit = True
모델 로드
FastLanguageModel.from_pretrained
를 이용하여 사전 학습된 모델과 토크나이저를 로드합니다.
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Meta-Llama-3.1-8B-Instruct",
max_seq_length=max_seq_length,
dtype=dtype,
load_in_4bit=load_in_4bit,
)
위 코드에서 중요한 요소는 다음과 같습니다:
model_name
: 사용할 사전 학습된 모델의 경로를 지정합니다.max_seq_length
: 모델이 처리할 최대 토큰 길이를 지정합니다.dtype
: 데이터 타입을 설정하며, 기본값은None
으로 설정되어 있습니다.load_in_4bit
: 모델을 4비트 양자화(quantization)하여 메모리 사용량을 줄입니다.
채팅 템플릿 적용
Llama-3.1 형식의 대화 템플릿을 적용하여 입력 형식을 맞춥니다.
from unsloth.chat_templates import get_chat_template
tokenizer = get_chat_template(
tokenizer,
chat_template="llama-3.1",
)
이는 모델이 일반적인 자연어 처리(NLP) 작업뿐만 아니라 대화형 AI에서도 적절하게 동작할 수 있도록 돕습니다.
모델을 추론 모드로 설정
모델을 학습 모드가 아닌 추론 모드로 설정해야 합니다.
FastLanguageModel.for_inference(model)
이렇게 설정하면 추가적인 메모리 최적화 및 성능 개선이 가능합니다.
입력 처리 및 추론
이제 모델이 추론할 수 있도록 입력을 준비합니다.
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True, # 생성 작업을 위한 프롬프트 추가
return_tensors="pt",
).to("cuda")
여기서:
messages
: 입력 메시지 리스트로, 사용자 질문과 시스템 응답을 포함할 수 있습니다.tokenize=True
: 입력을 토큰화합니다.add_generation_prompt=True
: 생성형 모델을 위한 추가 프롬프트를 삽입합니다.return_tensors="pt"
: PyTorch 텐서 형식으로 변환하여 CUDA에서 실행할 수 있도록 합니다.
모델 생성 수행
이제 모델을 통해 실제 텍스트 생성을 수행합니다.
outputs = model.generate(
input_ids=inputs,
max_new_tokens=300,
use_cache=True,
temperature=0.1
)
이때 중요한 파라미터는 다음과 같습니다:
max_new_tokens=300
: 최대 300개의 새로운 토큰을 생성합니다.use_cache=True
: 이전 결과를 캐시하여 속도를 향상시킵니다.temperature=0.1
: 낮은 값일수록 보수적인 응답을 생성하며, 높은 값일수록 창의적인 응답을 생성합니다.
결과 디코딩 및 출력
마지막으로, 모델의 출력을 사람이 읽을 수 있는 텍스트로 변환합니다.
result = tokenizer.batch_decode(outputs)
print(result[0])
이 과정을 통해 모델이 생성한 문장을 최종적으로 확인할 수 있습니다.
결론
본 포스트에서는 Unsloth
의 FastLanguageModel
을 활용하여 Meta-Llama-3.1-8B-Instruct
모델을 로드하고 추론하는 과정을 살펴보았습니다. 4비트 양자화와 최적화된 채팅 템플릿을 활용하여 모델을 보다 효율적으로 실행할 수 있으며, 이를 통해 메모리 절약 및 성능 향상이 가능합니다.
- Total
- Today
- Yesterday
- Python
- 자료구조
- 정보보안기사
- 카카오페이
- 리눅스
- 보안기사
- t검정
- FastAPI
- 시간초과
- springboot
- 다이나믹프로그래밍
- lightsail
- synflooding
- java
- 우선순위큐
- 정보보안
- 카카오페이면접후기
- Ai
- 그리디
- 파이썬
- llm
- 백준
- linux
- 보안
- 코딩테스트
- t-test
- 프로그래머스
- 분산시스템
- LangChain
- 딥러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |