Thoughts, stories and ideas.

Transformers - LLaMA

Python에서 Hugging Face의 transformers 라이브러리를 사용하여 LLaMA 모델을 로드하고 설정하는 과정을 포스팅합니다. LLaMA는 Meta(Facebook)에 의해 개발된 대규모 언어 모델로, 다양한 자연어 처리(NLP) 작업에 사용될 수 있습니다. 여기서는 특히 LlamaForCausalLM 모델과 LlamaTokenizer를 사용하는 방법을 설명합니다. 코드의 각 부분에 대한 세부 설명은 다음과 같습니다:

모델 및 토크나이저 불러오기

from peft import PeftModel
from transformers import LlamaTokenizer, LlamaForCausalLM

  • LlamaTokenizer: LLaMA 모델을 위한 토크나이저입니다. 텍스트를 모델이 처리할 수 있는 형태로 변환합니다.
  • LlamaForCausalLM: 인과 관계 언어 모델링(Causal Language Modeling)을 위한 LLaMA 모델입니다. 텍스트 생성과 같은 작업에 사용됩니다.

모델 식별자 설정

base = 'decapoda-research/llama-13b-hf'
base = 'srikanthmalla/decapoda-research-llama-13b-hf'
finetuned = 'beomi/KoAlpaca-13B-LoRA'

  • 이 코드는 두 가지 모델 식별자(**base**와 finetuned)를 정의합니다. 이 식별자들은 Hugging Face 모델 허브에서 모델을 찾을 때 사용됩니다. 여기서 **base**는 최종적으로 **'srikanthmalla/decapoda-research-llama-13b-hf'**로 설정됩니다(첫 번째 할당은 두 번째 할당으로 덮어쓰여집니다).

토크나이저 초기화

tokenizer = LlamaTokenizer.from_pretrained(base)

  • LlamaTokenizer.from_pretrained: 지정된 식별자를 사용하여 사전 훈련된 토크나이저를 로드합니다. 이 토크나이저는 입력 텍스트를 토큰화하는 데 사용됩니다.

토크나이저 설정

tokenizer.pad_token_id = 0
tokenizer.padding_side = "left"

  • pad_token_id = 0: 패딩 토큰의 ID를 0으로 설정합니다. 패딩은 입력 시퀀스의 길이를 모델에 맞추기 위해 사용됩니다.
  • padding_side = "left": 패딩을 왼쪽에 추가합니다. 일반적으로 패딩은 오른쪽에 추가되지만, 이 설정은 특정 상황에서 모델의 성능을 최적화하기 위해 사용될 수 있습니다.

모델 로드

model = LlamaForCausalLM.from_pretrained(
    base,
    load_in_8bit=True,
    device_map="auto",
)

  • LlamaForCausalLM.from_pretrained: 지정된 식별자를 사용하여 사전 훈련된 LLaMA 모델을 로드합니다. 이 모델은 텍스트 생성과 같은 작업에 사용될 수 있습니다.
  • load_in_8bit=True: 모델을 8비트 형식으로 로드하여 메모리 사용량을 줄입니다. 이 옵션은 모델의 크기가 큰 경우 유용할 수 있습니다.
  • device_map="auto": 모델을 로드할 때 사용할 디바이스를 자동으로 결정합니다. 이는 여러 GPU 또는 기타 하드웨어 가속기를 사용할 때 모델을 효율적으로 배치하는 데 도움이 될 수 있습니다.

이 코드는 LLaMA 모델을 사용하여 자연어 처리 작업을 수행하기 위한 기본적인 설정을 보여줍니다. 모델과 토크나이저를 로드하고, 필요한 설정을 적용하여 텍스트 생성과 같은 작업을 수행할 준비를 합니다.