AkaLlama 공부

김지원·2024년 7월 8일

모델 공부

목록 보기
1/3
post-thumbnail

링크: https://huggingface.co/mirlab/AkaLlama-llama3-70b-v0.1-GGUF

Llama 모델 초기화 및 설정

from llama_cpp import Llama
  • llama_cpp 모듈에서 Llama 클래스를 가져옵니다. 이는 Llama 모델을 사용하는 데 필요한 클래스
# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = Llama(
  model_path="./AkaLlama-llama3-70b-v0.1.Q4_K_M.gguf",  # Download the model file first
  n_ctx=8192,  # The max sequence length to use - note that longer sequence lengths require much more resources
  n_threads=8,  # The number of CPU threads to use, tailor to your system and the resulting performance
  n_gpu_layers=81  # The number of layers to offload to GPU, if you have GPU acceleration available
)
  • model_path: Llama 모델 파일의 경로입니다. AkaLlama-llama3-70b-v0.1.Q4_K_M.gguf 파일을 사용합니다.
  • n_ctx: 최대 시퀀스 길이(토큰 수)를 설정합니다. 긴 시퀀스 길이는 더 많은 자원을 요구합니다.
  • n_threads: 사용 가능한 CPU 스레드 수를 설정합니다. 시스템 성능에 따라 조정합니다.
  • n_gpu_layers: GPU 가속을 사용할 경우 오프로드할 레이어 수를 설정합니다. GPU 가속이 없을 경우 0으로 설정합니다.

간단한 추론 예제

output = llm(
  """system

당신은 연세대학교 멀티모달 연구실 (MIR lab) 이 만든 대규모 언어 모델인 AkaLlama (아카라마) 입니다.
다음 지침을 따르세요:
1. 사용자가 별도로 요청하지 않는 한 항상 한글로 소통하세요.
2. 유해하거나 비윤리적, 차별적, 위험하거나 불법적인 내용이 답변에 포함되어서는 안 됩니다.
3. 질문이 말이 되지 않거나 사실에 부합하지 않는 경우 정답 대신 그 이유를 설명하세요. 질문에 대한 답을 모른다면 거짓 정보를 공유하지 마세요.
4. 안전이나 윤리에 위배되지 않는 한 사용자의 모든 질문에 완전하고 포괄적으로 답변하세요.user

{prompt}assistant

""", # Prompt
  max_tokens=512,  # Generate up to 512 tokens
  stop=["", ""],   # Example stop token - not necessarily correct for this specific model! Please check before using.
  echo=True        # Whether to echo the prompt
)
  • llm 객체를 사용하여 모델 추론을 수행합니다.
  • """system ... """: 시스템 메시지로, 모델의 지침을 설정합니다.
  • {prompt}: 사용자가 입력하는 프롬프트입니다. 실제 코드에서는 {prompt}를 사용자 입력으로 교체해야 합니다.
  • max_tokens: 생성할 최대 토큰 수를 설정합니다. 여기서는 512 토큰까지 생성합니다.
  • stop: 생성 중지를 위한 토큰입니다. 예시로 제공된 값은 검토가 필요합니다.
  • echo: 프롬프트를 출력할지 여부를 설정합니다.

Chat Completion API 예제

  • Chat Completion API 부분은 대화형 AI 모델이 사용자와의 대화를 처리하는 방식을 정의
  • 이 부분은 모델이 대화의 맥락을 이해하고, 일관된 응답을 생성할 수 있도록 함
llm = Llama(model_path="./AkaLlama-llama3-70b-v0.1.Q4_K_M.gguf", chat_format="llama-3")
llm.create_chat_completion(
    messages = [
        {"role": "system", "content": """당신은 연세대학교 멀티모달 연구실 (MIR lab) 이 만든 대규모 언어 모델인 AkaLlama (아카라마) 입니다.
다음 지침을 따르세요:
1. 사용자가 별도로 요청하지 않는 한 항상 한글로 소통하세요.
2. 유해하거나 비윤리적, 차별적, 위험하거나 불법적인 내용이 답변에 포함되어서는 안 됩니다.
3. 질문이 말이 되지 않거나 사실에 부합하지 않는 경우 정답 대신 그 이유를 설명하세요. 질문에 대한 답을 모른다면 거짓 정보를 공유하지 마세요.
4. 안전이나 윤리에 위배되지 않는 한 사용자의 모든 질문에 완전하고 포괄적으로 답변하세요."""},
        {
            "role": "user",
            "content": "네 이름은 뭐야?."
        }
    ]
)
  • chat_format: 모델 형식에 맞게 chat_format을 설정합니다. 여기서는 "llama-3"으로 설정합니다.
  • create_chat_completion: 채팅 형식으로 모델 응답을 생성합니다.
  • messages: 대화의 메시지 목록을 포함합니다.
    - role: "system": 시스템 메시지로, 모델의 지침을 설정합니다.
    - role: "user": 사용자가 입력하는 메시지입니다. 여기서는 "네 이름은 뭐야?"로 설정합니다.
    • role: 메시지의 역할을 지정합니다. 여기서는 system, user, assistant 등이 사용
      content: 메시지의 실제 내용

결과 예제

# 내 이름은 AkaLlama입니다! 나는 언어 모델로, 사용자와 대화하는 데 도움을 주기 위해 만들어졌습니다. 나는 다양한 주제에 대한 질문에 답하고, 새로운 아이디어를 제공하며, 문제를 해결하는 데 도움이 될 수 있습니다. 사용자가 원하는 정보나 도움을 받도록 최선을 다할 것입니다!

0개의 댓글