오늘 발견한 아주 좋은 글이 있어서 여기에 공유해 본다.
내용은 라마2 모델을 CPU기반으로 실행할 수 있다는 것이다.
요즘 GPU 메모리 부분을 많이 최적화 하고 있는 것으로 알고 있었는데, 이제 CPU+GPU 등 점점 모델들이 최적화 되고 있음을 느끼고 있다.
이는 어떻게 가능할까? 여기게 요점 위주로 간단히 정리해보도록 하겠다.
관련 내용은 아래에서 확인이 가능하다.
Running Llama 2 on CPU Inference Locally for Document Q&A | by Kenneth Leung | Towards Data Science
Running Llama 2 on CPU Inference Locally for Document Q&A
Clearly explained guide for running quantized open-source LLM applications on CPUs using LLama 2, C Transformers, GGML, and LangChain
towardsdatascience.com
위 GitHub에 들어가면 프로젝트의 아키텍처를 쉽게 그림으로 알 수 있도록 구성해 놓았고,
![](https://blog.kakaocdn.net/dn/BFXo5/btsHRoFvb2D/3dOkVvLCfWRjFknaJoSrP1/img.png)
바로 테스트해볼 수 있도록 예제 PDF 및 파일을 구성해 놓은 상태로 쉽게 확인이 가능하다.
프로젝트 구조는 크게 2가지로 나눌 수 있는데, 하나는 내부 문서를 벡터화 하는 Vector Embeddings 영역과 Llama2에 질의하는 영역이라고 할 수 있다.
Vector Embeddings 영역 부분이 위 그림의 왼쪽 영역에 해당하는 부분으로, 과거 LangChain에서 많이 사용했던 예제와 다르게 Sentence Transformer를 활용하였다는 점이 특이한 점이라고 할 수 있겠다.
이 부분에 대한 장점이 있는지는 보다 연구해 봐야겠지만, 필자가 사용해보고 느낌점으로는 CPU로 실행하는게 생각만큼 나쁘지 않다는 것이였다. 필자가 테스트를 해보면서 이해한 부분을 여기에 요점위주로 정리해 보겠다.
그럼 먼저 각 폴더의 구조를 약간 설명해보도록 하겠다.
config: 환경 설정 위치
data: 벡터화할 문서
models: 메인 모델 위치
src: 메인 모델과 프롬프트, 임베딩용 모델 관리
vectorstore: 벡터화한 데이터를 저장하는 위치
db_build.py: 문서를 벡터화 하는 파일
main.py: 메인 실행 파일
실행 흐름을 보면 main.py를 실행하면, db_build 가 실행하여 문서들을 벡터화 해서 저장하게 된다.
이후 질의한 내용을 벡터화된 저장소에서 찾아서 Llama2 모델에 Fewshot learning 방식으로 질의하여 답을 찾는 역활을 한다.
생각보다 코드가 간결하고, 이해하기 쉽게 구성되어 있어서 로컬에 LLM을 직접 서빙하고 싶거나, 개인 노트북에서 개발/테스트해보고 싶은 분이 있다면 이를 확인해보기를 추천한다. 4bit로 학습된 모델을 사용했을때 필자 기준으로 45초 정도 소요되었는데, 모델에 질답만 한다면, 보다 빠르게 응답이 올것 같고, 앞으로 점점 경량화/최적화 되고 있는 LLM 시장을 보니 개인이 쉽게 접근할 수 있는 날도 얼마 남지 않았다고 생각된다.
'Bigdata' 카테고리의 다른 글
2023년 빅데이터 오픈소스 플랫폼 Top 3 (0) | 2024.06.08 |
---|---|
LLM.int8() - Large Language Model (LLM)의 계산 성능을 개선하기 위한 양자화 방법 (0) | 2024.06.08 |
Σ σ, ς / 시그마(sigma) - 뜻과 읽는법 (0) | 2024.06.07 |
Hugging Face - model(허깅페이스 모델) download 3가지 방법 (0) | 2024.04.12 |
Python - Databse BLOB 란? 사용법 (0) | 2024.03.07 |