[인공지능기술] llama.cpp 설치 방법 및 사용방법 with LoRA

llama.cpp는 LLM 모델을 quantization을 통하여 필요한 메모리의 양을 크게 감소시켜

고성능 GPU가 없는 환경(m1 mac 등)에서도 동작하며 빠른 추론 결과를 얻을 수 있게 해주는 packege이다.

cpp를 이용하면 cpu 만으로도 동작하지만 GPU를 함께 사용하면 더 빠른 결과를 얻을 수 있다.

모델을 cpp로 이용하는 순서는 다음과 같다.

 

  1. llama.cpp 환경 구축
    • llama.cpp code clone
    • packege install
  2. 사용할 LLM 모델 다운로드
  3. LLM 모델 convert (ggml, gguf 파일로 만들기)
  4. python packege llama_cpp를 이용하여 모델 로드
  5. 모델 추론

각 단계별 자세한 내용은 다음과 같다.


1. llama.cpp 환경 구축

모델을 convert 하기 위해서 llama.cpp 코드를 가져와야 한다.

git clone 후 해당 폴더로 이동 후에 make 명령어를 입력하면 설치가 완료된다.(다른 방법들은 README에 잘 나와있다.)

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

 

convert 된 모델을 이용하기 위한 packege llama-cpp-python을 설치해야 한다.

1. cuda(nvidia GPU)가 설치된 환경인 경우

CMAKE_ARGS=-DLLAMA_CUBLAS=on FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir

 

2. M1 mac 에서 MPS를 사용할 경우

CMAKE_ARGS=-DLLAMA_METAL=on FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir

 

3. CPU만 사용할 경우

FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir

2. 사용할 LLM 모델 다운로드

모델을 다운로드 받는 방법은 다양하다. 내가 추천하는 방법은 맨 마지막 방법이다.

  • hugging face 페이지에서 UI를 이용하여 다운로드
  • hugging face cli를 이용하여 다운로드
  • git clone을 이용하는 방법 (git lfs)
  • transfomers를 이용하는 방법

추천하는 이유는 가장 빠르게 받을 수 있는 방법이다. 모델의 크기에 따라 다운로드가 12시간 이상 걸리는 경우도 많다. transformers를 이용하면 5~6시간 안에 저장할 수 있으며 이미 사용해 보았던 모델(cache에 있는)의 경우 더 빠르게 저장할 수 있다. 저장하는 코드는 다음과 같다.

from transformers import AutoTokenizer, AutoModelForCausalLM

# 모델 로드
model_path = "다운받을 모델 path(hugging_face 등)"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path)

# 모델 저장
save_dir = "저장할 폴더"
tokenizer.save_pretrained(save_dir)
model.save_pretrained(save_dir)

3. LLM 모델 convert (ggml, gguf 파일로 만들기)

llama.cpp 폴더에 들어가면 다음과 같은 파일들이 존재한다. 다음 중 내가 사용한 파일은 2개

1. convert.py (다운로드한 모델을 cpp quantization 하여 gguf 파일로 만든다.)

2. convert-lora-to-ggml (lora로 학습시킨 adapter 모델을 ggml 파일로 만든다.)

 

 

 

사용 명령어는 다음과 같다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

1. 다운받은 모델 convert

quantiazaion option은 다양하게 있지만 (f16, q8_0 등) code가 업데이트될 때마다 달라지는 것 같아 확인하고 사용하는 것이 좋아 보인다.

-> 생성된 모델 명 : ggml-model-q8_0.gguf

python convert.py [model_path] --outtype [quantization_type]

 

2. lora 모델(adapter) convert

별다른 옵션은 없어 보인다.

-> 생성된 모델 명 : ggml-adapter-model.bin

*lora로 학습시킨 모델을 cpp로 이용하기 위해서는 base모델을 cpp convert (위 1번) 해서 함께 사용해야 한다.

python convert-lora-to-ggml.py [model_path]

4. python packege llama_cpp를 이용하여 모델 로드

llama2 base 모델

from llama_cpp import Llama

model_path = "base_model"
lora_path = "lora adapter 그냥 모델이면 안넣어도 됨"
llm = Llama(model_path=my_model_path,
            lora_path=lora_path,
            n_gpu_layers=0)

 

n_gpu_layers : gpu에서 사용할 layer 수

아래 사진에서 예시로 로드한 모델은 33개 layer 중에 0개를 사용 중이다. 로드한 모델에 따라 수치를 정한다.

 

 

 

아래 BLAS=1이면 GPU 가속이 사용가능 한 상태이다.

 

 


5. 모델 추론

def gen(text):
    prompt = "사용할 프롬프트"
    answer = llm(prompt.format(text),
                 max_tokens=256,
                 stop=['<\s>'],
                 echo=True,
                 temperature=0.3,
                 frequency_penalty = 0.9,
                 repeat_penalty=1.1,
                 top_p=0.98)
    result = answer['choices'][0]['text'].replace(prompt.format(text),'')
    return result

위와 같은 코드로 모델을 동작할 수 있다. 여러 hyper parameter는 상황에 맞게 조정한다.

LLAMA 7B 모델 기준 cpp + GPU 가속(6G memory)을 이용한 경우 6~10초 만에 결과를 얻을 수 있었다.

[출처] https://avocadaon.tistory.com/50

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
77 [인공지능 기술] 바닥부터 시작하는 인공지능 [수학공부]인공지능을 위한 수학 총정리/ 요약본 다운로드 file 졸리운_곰 2025.03.29 43
76 [인공지능 기술] LlamaIndex: 맞춤형 데이터로 LLM 애플리케이션을 쉽게 강화하세요 file 졸리운_곰 2025.03.12 101
75 [인공지능 기술] 휴머노이드에 "일자리 빼앗을거야?" 묻자...뼈 때리는 답변 돌아왔다 file 졸리운_곰 2025.03.07 57
74 [인공지능 기술] 대형 AI 모델서 데이터 뽑아 학습… 비용 18분의 1로 줄였다 / 딥시크 혁신 이끈 '지식 증류' file 졸리운_곰 2025.02.06 57
73 [인공지능 기술] [인공지능 그림 6] 스테이블 디퓨전 webui 나만의 모델 만들기 - kohya_ss 사용 LoRa 만들기(feat 전투복 소녀 만들기) file 졸리운_곰 2025.02.05 75
72 [인공지능 기술] Transformer²: Self-Adaptive LLMs : Transformer²: 자체 적응형 LLM file 졸리운_곰 2025.01.15 64
71 [인공지능 기술] 효과적인 에이전트 구축 : Building effective agents file 졸리운_곰 2025.01.01 97
70 [인공지능 기술] 골칫거리 AI 환각, 과학 연구에서는 혁신적 아이디어 제공 file 졸리운_곰 2024.12.25 78
69 [인공지능 기술] Replit Agent 사용법 - AI 기반 코딩 도구로 쉽게 개발하기 file 졸리운_곰 2024.12.22 59
68 [인공지능 기술] 한글 더 잘하는 llama3 찾아서 ollama에 연결하기 (feat. Bllossom ELO) file 졸리운_곰 2024.12.18 69
67 [인공지능 기술] Llama3를 내 PC에서 무료로 사용하는 방법 (GPT4All & RAG) file 졸리운_곰 2024.12.13 132
66 [인공지능 기술] "LLM 비즈니스 하향평준화돼...누구나 만들며 수익성 떨어져" file 졸리운_곰 2024.12.13 87
65 [인공지능 기술] [Python] Llama3를 파인튜닝을 통해 나만의 데이터로 학습 및 Huggingface에 적재해보자. file 졸리운_곰 2024.12.13 69
64 [인공지능 기술] Ollama + Open WebUI: Windows, Linux 또는 macOS에서 LLM을 로컬로 실행하는 방법 (Docker 없이) file 졸리운_곰 2024.12.12 93
63 [인공지능 기술] Ollama 서버에 외부에서 접속하는 방법: OS별 가이드 졸리운_곰 2024.12.12 120
62 [인공지능 기술] LLama.cpp 설치하고 실행해보기 file 졸리운_곰 2024.12.10 105
» [인공지능기술] llama.cpp 설치 방법 및 사용방법 with LoRA file 졸리운_곰 2024.12.10 91
60 [인공지능 기술] Ollama란? Ollama 사용법: 내 PC에서 무료로 LLM 실행하기 졸리운_곰 2024.12.10 102
59 [인공지능 기술] ChatGPT와 Replit을 사용하여 게임 만들기 : Build a game using ChatGPT and Replit file 졸리운_곰 2024.12.10 97
58 [인공지능 기술] "GPT 성능 향상 속도 둔화"...오픈AI, '오라이온' 개선 위해 전략 수정 file 졸리운_곰 2024.11.11 99
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED