IT

Langchain으로 LLaMA2 cpp 버전 사용하기

투어벗 2023. 7. 31. 14:15
반응형

이전글 : 2023.07.19 - [IT] - LLAMA 2 소개와 데모사용후기

 

LLAMA 2 소개와 데모사용후기

다음글 : 2023.07.31 - [IT] - Langchain으로 LLaMA2 cpp 버전 사용하기 Langchain으로 LLaMA2 cpp 버전 사용하기 서론 LLAMA 2모델을 GPU가 없는 환경에서도 사용할 수있도록 하는 GGML 프로젝트가 있다. (링크 : https:/

knowslog.tistory.com

 

서론

LLAMA 2모델을 GPU가 없는 환경에서도 사용할 수있도록 하는 GGML 프로젝트가 있다.

(링크 : https://github.com/ggerganov/ggml)

해당 프로젝트를 통해서 만들어진 코드와 ggml버전 llama2 모델을 Langchain을 이용하여 간단하게 설치 및 사용방법을 소개하겠다.


LLaMA-cpp v2 간편 설치 및 사용 방법

설치 패키지

  • langchain(pip install langchain)
  • llama-cpp-python(pip install llama-cpp-python)

모델(TheBloke 제공한 모델 사용)

아래 샘플은 llama-2-7b-chat.ggmlv3.q2_K.bin 모델을 사용하여 수행하였다. ggml 버전 llama는 메모리 사이즈가 중요하며 해당 모델별 요구되는 메모리는 모델 공개자인TheBloke의 허깅페이스 페이지에 소개되어있다.

모델 다운로드

허깅페이스 페이지에서 Files and version 탭에서 원하는 모델을 다운로드한다.

Langchain을 이용한 LLAMA CPP 모델 적용

관련 패키지 임포트

from langchain.llms import LlamaCpp
from langchain import PromptTemplate, LLMChain
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler # 출력을 스트리밍하는 데 사용

모델 불러오기
llm 체인에 적용할 탬플릿은 본인의 취향에 맞게 작성

template = """Question: {question}

Answer: Let's work this out in a step by step way to be sure we have the right answer."""

prompt = PromptTemplate(template=template, input_variables=["question"])

callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])

llm = LlamaCpp(
                model_path="models/llama-2-7b-chat.ggmlv3.q2_K.bin",
                input={"temperature": 0.75,
                       "max_length": 2000,
                       "top_p": 1},
                callback_manager=callback_manager,
                verbose=True,
                )

llm_chain = LLMChain(prompt=prompt, llm=llm)

LLM 사용
llm_chain의 run을 사용하여 프롬프트 response 받기
callback_manager로 StreamingStdOutCallbackHandler을 사용하여 reponse가 chatgpt와 유사하게 글자단위로 나오는 것을 볼수 있다.

prompt = """
Question: Explain the Large Language Models.
"""
response = llm_chain.run(prompt)


결론

langchain을 이용해서 다양한 서비스들을 만들수 있도록 langchain에 llama cpp 버전 모델을 올려보았다.
위에 예시는 7B-Chat 모델을 사용하였는데, 메모리와 CPU 자원이 넉넉한 PC인경우 더 큰 모델을 다운 받아서 돌려도 될 것 같다.

반응형