AI

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

Subscribe to Keun's Story newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!