개발

Meta의 LLM 모델 LLaMA 2를 Windows에서 실행하기

후이넘 2024. 6. 3. 21:10
728x90

1. 개요

Meta에서 공개한 LLaMA 2 모델은 파라미터 개수가 7B, 13B, 70B 인 3가지 사이즈로 제공이 됩니다. 여기서 B는 Billion(10억)의 약자입니다. 가장 작은 모델인 7B는 파라미터 개수가 70억개이고, INT8 양자화를 적용하게 되면 7GB 메모리를 필요로 하므로, 10GB 메모리를 가진 개인용 GPU에서 충분히 실행이 가능합니다.

llama.cpp 오픈소스는 C/C++ 을 사용해서 로컬 PC에서 LLaMA 모델 inference를 실행합니다. Linux/Windows/MacOS 등 많은 OS를 지원하며, CPU/AVX/CUDA/OpenCL/VulKan 등 많은 가속 방법을 지원합니다. 게다가 1.5-bit 부터 8-bit integer 양자화를 지원하기 때문에, 본인의 환경에 맞게 양자화 수준을 선택할 수 있습니다.

여기서는 Windows에서 LLaMA 2 모델을 실행해 보겠습니다.

2. 준비

2.1. Visual Studio 설치

llama.cpp를 빌드하기 위해서 Visual Studio에서 제공되는 컴파일러를 사용합니다. 필자 환경은 Visual Studio 2019 Professional 이지만, 다른 버전도 무방합니다.

https://visualstudio.microsoft.com/ko/downloads/

2.2. CMake 설치

llama.cpp 에서 CMake를 사용해서 빌드 시스템을 구성했기 때문에 빌드 환경 구성을 위해서 설치해야 합니다. 필자 환경은 CMake 3.26.3을 사용했지만 최신 버전을 사용해도 무방합니다.

https://cmake.org/download/

3. 빌드

llama.cpp 저장소를 clone 합니다.

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

build 디렉토리를 생성하고 cmake 를 실행해서 빌드 환경을 구성합니다. 아래 명령을 CUDA 를 사용하는 빌드를 생성하고 있습니다. CPU 에서 실행을 하고 싶으면 "-DLLAMA_CUDA=ON" 부분을 제거합니다.

cd llama.cpp
mkdir build
cd build
cmake .. -DLLAMA_CUDA=ON

실제 빌드를 수행합니다. 시간이 오래 걸립니다.

cmake --build . --config Release

빌드가 완료되었습니다.

4. 모델 다운로드

Meta 에서 직접 제공해주는 모델(https://llama.meta.com/llama-downloads/)을 사용할 수도 있지만, 신청서도 작성해야하고 양자화가 적용이 되어 있지 않기 때문에, 여기서는 HuggingFace에 올라와 있는 양자화 적용된 모델을 다운로드합니다아래 링크에서 다운로드가 가능하며, 필자는 llama-2-7b-chat.Q5_K_M.gguf 모델을 다운로드 받았습니다. 실행 환경의 GPU 메모리를 고려해서 실행가능한 모델을 선택하면 됩니다.

https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF

5. 실행

실행파일이 생성된 디렉토리로 이동합니다.

cd bin\Release

아래 예제는 프롬프트에서 처음 부분을 입력하고 나머지 부분을 완성하도록 합니다. 웹사이트를 만드는 10단계에 대해서 잘 정리해서 설명해주고 있습니다.

main -m llama-2-7b-chat.Q5_K_M.gguf -p "Building a website can be done in 10 simple steps: \nStep 1:"

다음 예제는 대화명 모드입니다. 노란색 부분은 프롬프트 (llama.cpp 에 포함되어 제공됨), 초록색 부분은 필자가 입력한 내용, 하얀색 부분은 자동 생성된 부분입니다. 유럽의 도시에 대해서 매끄럽게 대화가 이어지고 있습니다.

main -m llama-2-7b-chat.Q5_K_M.gguf --color -i -r "User:" -f ..\..\..\prompts\chat-with-bob.txt

지금까지 LLaMA 2 모델을 로컬 PC 환경에서 실행하는 방법에 대해서 알아봤습니다.

728x90