개발/AI - 인공지능

[AI][ChatGPT][llama.cpp] GPT UI에서 LLaMA를 사용하는 방법

ENFP Jake 2023. 5. 30. 13:54
728x90
반응형

- ChatGPT 사이트는 아마 이 글을 보시는 모든 사람들이 사용해보셨을 것 같습니다. 그리고 많은 사람들에게 있어서 AI를 사용하는 방법 그 자체로 인식이 되어가고 있는 상황일 것도 같습니다. 그런데 사실 ChatGPT는 GPT라는 AI와 채팅이라는 행위를 주고 받기 위한 도구일 뿐입니다. 그렇다면, 다른 AI 모델들을 연결해서 사용할 수도 있지 않을까요? 무료로 사용 가능한 모델을 사용하면서 웹 상에 정보를 전달하지 않고 사용가능하다면, 아주 유용할수도 있을 것입니다. 본 포스팅에서는 llama.cpp와 gpt-llama.cpp 그리고 chatbot-ui 세 가지를 연결하여 GPT가 아닌 다른 모델을 적용해서 ChatGPT UI에서 실행하는 과정을 설명하려고 합니다.

 

- 사용방법

1. llama.cpp

- LLaMA는 메타에서 공개한 언어생성 모델입니다. 간단하게 요약하면 GPT-3정도의 성능을 가졌으며, 훨씬 더 가벼운 환경(데이터 센터가 단독 GPU)에서도 실행이가능한 모델입니다. 그런데 이를 개인 맥북 프로에서 동작 하도록 포팅을 한 것이 llama.cpp입니다. 재밌는 점은 LLaMA 모델의 포팅은 결과적으로 LLaMA 모델을 확장 또는 변화시킨 모델들에 대한 포팅이기도 하여 llama.cpp은 실제로 아래와 같이 여러 모델들을 지원합니다.

  •  

- 실행 방법은 우선 llama.cpp 깃헙 저장소를 복제한 후에 아래와 같이 빌드합니다.

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

- 빌드 방법은 두 가지 중에서 하나를 선택하셔서 진행하시면 됩니다.

# 1. Using make: 
# On Linux or MacOS:

make

# 2. Using CMake:
# On Windows:

mkdir build
cd build
cmake ..
cmake --build . --config Release

- 빌드가 완료되고 나면, llama.cpp/models 경로에 bin확장자로 된 모델 파일을 넣어야 합니다. llama.cpp는 포팅을 위한 라이브러리이므로 모델 파일은 제공하지 않습니다. 모델 파일은 huggingface나 웹 검색을 통해서 쉽게 찾으실 수 있습니다. 아니면 대부분의 파일이 작게는 5GB에서 크게는 10GB 정도 된다는 점은 참고하시기 바랍니다. 가장 가볍게 돌려보고 싶으신 경우,  vicuna-7b같은 모델을 추천드립니다. 만약 모델 파일을 넣으셨다면, 아래의 명령어로 필요한 다른 요소들을 설치하시기 바랍니다.

python3 -m pip install -r requirements.txt

설치가 완료되면, llama.cpp경로에서 아래의 명령을 입력하여 동작 여부를 테스트해보시기 바랍니다. 정상적으로 이어서 메세지를 생성한다면, llama.cpp 설치는 완료입니다

# Mac
./main -m models/7B/<YOUR_MODEL_BIN> -p "the sky is"

# Windows
main -m models/7B/<YOUR_MODEL_BIN> -p "the sky is"

 

2. gpt-llama.cpp 설치하기

- gpt-llama.cpp는 gpt에서 사용하기 위해서 만들어진 chatbot-ui에 맞춰서 llama.cpp을 사용하기 위한 라이브러리입니다. 즉 OpenAI가 제공하는 API의 구조에 맞게 llama.cpp를 연결해서 gpt를 기반으로 만들어진 서비스들에서도 llama.cpp, 즉 LLaMA 모델들을 사용할 수 있게 해주는 것입니다. 설치는 간단합니다. 아래와 같이 소스를 받으신 후 모듈들을 설치하고 실행해주시면 됩니다.

# 코드 클론
git clone https://github.com/keldenl/gpt-llama.cpp.git
cd gpt-llama.cpp
# 설치
npm install
# 실행
npm start

단지 위의 llama.cpp와 gpt-llama.cpp 폴더가 동일 경로 상에 있게 두는 것을 강력히 추천하고 있으니, 큰 이유가 없다면 그렇게 하시길 권해드립니다.

 

3. chatbot-ui와 연결하기

- gpt-llama.cpp의 공식 가이드를 따라서 chatbot-ui를 연결하셔도 됩니다. 일일히 찾아보기 귀찮다 하시는 분들을 위해 다른 설명들을 제외하고 간단하게 요약하자면 아래와 같이 설치하시면 됩니다.

# 코드 클론
git clone https://github.com/mckaywrigley/chatbot-ui.git
# 모듈 설치
cd chatbot-ui
npm install

그리고 .env.local을 루트 경로에 생성하신 후에, 아래와 같이 채워 주시면 됩니다. 중요한 점은 OPENAI_API_KEY를 위에서 받았던 모델 파일의 경로로 넣는 다는 점입니다.

# Chatbot UI
DEFAULT_MODEL=gpt-3.5-turbo
DEFAULT_SYSTEM_PROMPT=You are ChatGPT, a large language model trained by OpenAI. Follow the users instructions carefully. Respond using markdown.
OPENAI_API_KEY=../llama.cpp/models/vicuna/13B/ggml-vicuna-unfiltered-13b-4bit.bin

# Google
GOOGLE_API_KEY=YOUR_API_KEY
GOOGLE_CSE_ID=YOUR_ENGINE_ID

그리고 아래와 같이 실행하시면 끝입니다.

# FOR MAC 
# gpt-llama.cpp가 실행중인 포트 (443)을 호스트로 지정
OPENAI_API_HOST=http://localhost:443 
npm run dev

# FOR WINDOWS
# gpt-llama.cpp가 실행중인 포트 (443)을 호스트로 지정
set OPENAI_API_HOST=http://localhost:443
npm run dev

 

- 아래의 이미지는 제가 제 로컬 환경에서 설치 및 실행을 진행한 결과입니다. 정상적으로 답변을 생성하는 것은 확인하였습니다만, 제 환경이 m2 맥미니 깡통이어서 그런 것 인지 설치 과정 중에 놓친 것이 있는지 모르겠지만 답변 생성 속도가 많이 느렸다는 점은 참고하셔야 할 것 같습니다. 

# 마치며

- 추후 다양하게 개발되고 출시될 GPT 기반 서비스들을 활용하다가 커스터마이즈된 모델을 사용하고 싶거나, GPT에서는 필터링이 되는 주제에 대한 답변을 생성하고 싶은 경우, 또는 웹 상에 데이터가 노출되지 않기를 바라는 경우 등에는 유용하게 활용할 수 있지 않을까 싶다는 생각이 들었습니다. 지금 당장 사용하지는 않더라도 참고 삼아 기억해두시면 좋을 것 같습니다.

728x90
반응형