생물.컴퓨터.통계

나만의 데이터로 GPT 활용-local LLM 구축 도전기 (3): LocalGPT

프로페서 H 2024. 1. 27. 13:08

 
 
 
이번에는 좀더 기대되었던 'LocalGPT'에 대해 설치과정과 간단 사용경험을 공유하고자 합니다
 
지난번은 UI가 그래도 chatGPT처럼 친숙한 환경을 제공하였던 'Ollama' 라는 local LLM 구축경험을 공유였었죠
 
https://medtalk.tistory.com/entry/나만의-데이터로-GPT-활용-local-LLM-구축-도전기-2-Ollama-LLaMa

나만의 데이터로 GPT 활용-local LLM 구축 도전기 (2): Ollama-LLaMa

지난 번 글에서는 LangChain기반 AI 모델 구축의 일반적인 내용을 담았고 이번에는 실제 구축한 LLM 모델에 대해 설명하고자 한다. 이로서 인터넷 서버를 통하지 않고 local computer인 내 노트북, 내 데

medtalk.tistory.com

 
 

1. 소개 (Introduction)

localGPT는 특히 로컬 환경에서의 용이한 사용과 효율성에 중점을 두어 개발되었으며, 다양한 언어 처리 작업에 적용될 수 있는 유연성을 갖추고 있습니다.

localGPT의 중요성 및 독특한 점

localGPT는 기존과 차별점은, 첫째, localGPT는 사용자의 로컬 시스템에서 직접 실행되도록 설계되었다는 것이죠. 이는 데이터 보안과 개인 정보 보호에 있어 중요한 요소로, 사용자 데이터를 외부 서버에 전송할 필요가 없어집니다. 또한, 이는 인터넷 연결이 불안정하거나 없는 환경에서도 AI 기반의 언어 처리 기능을 사용할 수 있음을 의미하기 때문에 상당한 장점이 있습니다.
 
둘째, localGPT는 사용자가 직접 커스터마이징할 수 있는 유연성을 제공합니다(물론 저는 컴퓨터 초보라 엄청난 수정을 할 수 없지만요). 사용자는 자신의 특정 요구사항에 맞게 모델을 튜닝할 수 있으며, 다양한 언어와 도메인 특화 작업에 적용할 수 있습니다. 이러한 점은 특히 연구자나 개발자들에게 매력적인 요소로 작용합니다.
 
마지막으로, localGPT는 고성능 AI 모델을 보다 접근하기 쉽게 만듭니다. 복잡한 설치 절차나 고가의 컴퓨팅 자원을 요구하지 않으며, 기본적인 하드웨어 설정에서도 효과적으로 작동합니다. 하지만 어느 정도 자신의 컴퓨터 사양이 높아야 쾌적합니다. 
 
다음은 localGPT에서 주장하는 장점입니다. 

localGPT의 특징 🌟

1.1. 프라이버시

  • 데이터 보안: localGPT를 사용하면 데이터가 컴퓨터를 떠나지 않습니다. 모든 처리가 로컬에서 이루어지기 때문에 데이터 프라이버시와 보안 침해에 대한 걱정이 없어집니다. 이는 100% 보안을 보장합니다.

1.2. 다양한 모델 지원

  • 오픈소스 모델 통합: localGPT는 HF, GPTQ, GGML, GGUF 등 다양한 오픈소스 모델들과 원활하게 통합됩니다. 이를 통해 사용자는 여러 모델들을 쉽게 사용할 수 있습니다.

1.3. 다양한 임베딩

  • 오픈소스 임베딩 선택: 사용자는 다양한 오픈소스 임베딩 중에서 선택할 수 있습니다. 이는 다양한 언어 처리 작업에 유용하게 활용될 수 있습니다.

1.4. LLM 재사용

  • 다운로드 후 재사용: 한 번 다운로드된 LLM(Large Language Model)은 반복적인 다운로드 없이 재사용이 가능합니다. 이는 효율성을 높이고 시간을 절약할 수 있게 해줍니다.

1.5. 채팅 기록

  • 이전 대화 기억: localGPT는 세션 내에서 이전 대화를 기억합니다. 이는 사용자와의 상호작용을 개선하는 데 도움이 됩니다.

1.6. API

  • RAG 애플리케이션 구축: localGPT는 RAG(Retrieval-Augmented Generation) 애플리케이션을 구축하기 위한 API를 제공합니다.

1.7. 그래픽 인터페이스

  • 두 가지 GUI 지원: localGPT는 API를 사용하는 GUI와 스탠드얼론 버전(GUI, streamlit 기반) 두 가지 그래픽 인터페이스를 제공합니다.

1.8. GPU, CPU 및 MPS 지원

  • 다양한 플랫폼 지원: CUDA, CPU 또는 MPS를 사용하여 데이터와 대화할 수 있으며, 다양한 플랫폼을 지원합니다. 이는 localGPT를 더욱 다재다능하게 만들어 줍니다.

개인적으로 좋아했던 장점은 다음과 같이 다양한 문서포팻을 지원한다는 점입니다(특히 마크다운!). 

DOCUMENT_MAP = {
    ".txt": TextLoader,
    ".md": TextLoader,
    ".py": TextLoader,
    ".pdf": PDFMinerLoader,
    ".csv": CSVLoader,
    ".xls": UnstructuredExcelLoader,
    ".xlsx": UnstructuredExcelLoader,
    ".docx": Docx2txtLoader,
    ".doc": Docx2txtLoader,
}

 
저는 아이맥과 맥북 소유자로 맥OS 환경에서 설치과정을 다루어 보겠습니다. 
 
 

2. 설치 과정 (Installation Process)

localGPT의 깃허브 사이트는 다음과 같습니다. 
https://github.com/PromtEngineer/localGPT

GitHub - PromtEngineer/localGPT: Chat with your documents on your local device using GPT models. No data leaves your device and

Chat with your documents on your local device using GPT models. No data leaves your device and 100% private. - GitHub - PromtEngineer/localGPT: Chat with your documents on your local device using ...

github.com

 
localGPT 리포지토리 클론:

  • GitHub에서 localGPT 리포지토리를 클론합니다. 이를 위해, 터미널에서 다음 명령어를 실행합니다:
git clone https://github.com/PromtEngineer/localGPT.git

 

  • 콘다 환경에서 Python을 설치합니다. 
conda create -n localGPT python=3.10.0
conda activate localGPT

 
 

필요한 라이브러리 설치:

  • 코드를 실행하기 위한 환경을 설정하기 위해, 먼저 모든 요구사항을 설치합니다. 이를 위해 **pip**를 사용하여 requirements.txt 파일에 명시된 의존성을 설치합니다:
pip install -r requirements.txt

LLAMA-CPP 설치하기

  • LocalGPT는 LlamaCpp-Python을 사용합니다:
    • LocalGPT는 GGML(버전 0.1.76 이하 필요)과 GGUF(버전 0.1.83 이상 필요) 모델을 위해 LlamaCpp-Python을 사용합니다.

Apple Metal(M1/M2) 지원을 위한 예시:

CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install llama-cpp-python==0.1.83 --no-cache-dir

  • 이 명령어는 Apple Metal 지원을 활성화하여 llama-cpp-python을 설치합니다.
자 이제 기본적인 설치는 끝났습니다. 하지만 어떻게 실행해야하는지 여기서부터 조금 눈에 들어오지 않는 부분이 있습니다. 

 

데이터 준비: 

우선 Visual Code Studio에서 localGPT 폴더 열고 원하는 문서를 SOURCE_DOCUMENTS폴더에 이동시키기

  • SOURCE_DOCUMENTS 폴더 사용: 처리하려는 파일들을 SOURCE_DOCUMENTS 폴더에 넣습니다. 이 폴더 안에 여러 하위 폴더를 만들어 파일을 구성할 수 있으며, 코드는 재귀적으로 파일들을 읽어들입니다.

visual code studio에서 폴더를 열면 다음 그리과 같이 좌측에 여러 폴더와 파일들이 보입니다. 이제 RAG를 시행하기 위해 지식이 되는 문서를 SOURCE_DOCUMENTS라는 폴더에 넣습니다. 저는 마크다운으로 되어 있는 문서를 1개 아래 그림과 같이 넣었습니다 

 
 

데이터 처리 실행 (ingest my data into multiple chunks) 

  • 데이터 수집 명령 실행: SOURCE_DOCUMENTS 폴더에 들어있는 모든 문서 데이터를 처리하기 위해 다음 명령어를 실행합니다.
    • 애플 맥 M1/M2 칩에서 실행하려면 다음을 터미털 창에 입력합니다. 
python ingest.py --device_type mps

 
아래 그림과 같이 나의 마크다운 문서가 236개의 chunk로 조각난 것을 알 수 있습니다.
 

 

이제 내 문서가 chunk로 여러 조각나고 embedding되었다. 이제 질문을 통해 답을 얻는 과정만 남았습니다. 여전히 터미널 창에서 진행해야하기 때문에  chatGPT나 앞서 설명한 ollama와 같은 UI환경이 아니라서 나 같은 컴퓨터 초보자는 당황스럽지만 터미널 창이 대화창이라 생각하고 계속 진행하면 곧 익숙해져 편안해집니다.
 
 

문서에 질문하기: localGPT 사용법

문서와의 대화 시작하기

 
애플실리콘 맥북/아이맥의 경우 다음의 명령어를 터미널 창에서 실행합니다. 
 

python run_localGPT.py --device_type mps # to run on Apple silicon

 
그러면 곧 터미널창에서 Enter a query:라고 질문을 기다리는 상태로 바뀌고 이제 chatGPT처럼 질문을 하면 나의 마크다운 문서에 대해 정보를 찾아 대답을 해주게 됩니다.. 

우선 내 문서의 내용의 출처에 대해 질문을 해 보았습니다. 

정확히 일치하는 답변을 얻을 수 있었고 (당연히 너무 쉬운 질문이라..^^), 

다음으로 myelodysplastic syndrome (MDS)의 새로운 분류기준에 대해 5th WHO 2022와 ICC 2023의 차이점에 대해 질문을 하였는데 정확히 답변을 해주었다고 믿고 싶은데 글자가 너무 눈에 들어오지 않는다ㅠㅠ.

 

3. 장단점 평가 (Evaluation of Pros and Cons)

  • 장점: localGPT의 장점은 역시 유연성이라고 볼 수 있겠습니다. 노트북에서도 무리없이 돌아가고, 하나의 더 큰 장점은 다수의 문서를 폴더안에 계속 집어 넣을 수 있는 부분인데 아직 파일 갯수 용량들에 대해서는 자세히 들여다 보지 않았습니다. 
  • 단점: 당연한 이야기지만 한글지원이 안되는 부분, 그리고 애플 실리콘 칩을 사용하기 때문인지 약간 delay가 발생하였습니다.

 

4. 참조 및 추가 자료 (References and Additional Resources)

 
 
이로서 RAG-LLM 기반의 local chatGPT를 만드는 여정을 마치고자 합니다.