GPT4All Python SDK

GPT4All Python SDK

데스크톱 앱이 아닌 코드에서 로컬 LLM을 실행하고 싶다면 GPT4All Python SDK를 쓰면 돼요. gpt4all 패키지를 설치하고 GPT4All 클래스로 모델을 불러오면 끝이라, RAG나 자동화 같은 파이프라인에 살짝 끼워 넣기 좋아요. 모델은 처음 불러올 때 기기로 내려받아 저장되고, 같은 이름으로 다시 만들면 빠르게 재사용돼요.

출처: GPT4All Python SDK - 공식 문서

설치

gpt4all 패키지를 파이썬 환경에 설치하면 시작할 수 있어요.

pip install gpt4all

venvconda로 별도 가상환경을 만들어 설치하는 걸 권장해요.

LLM 불러오기

모델은 GPT4All 클래스에 이름을 넘겨 불러와요. 처음 불러오는 모델은 기기로 다운로드된 뒤 저장되어, 다음에 같은 이름으로 GPT4All을 만들면 빠르게 다시 로드돼요.

from gpt4all import GPT4All
model = GPT4All("Meta-Llama-3-8B-Instruct.Q4_0.gguf")  # 4.66GB LLM 다운로드/로드

with model.chat_session():
    print(model.generate("How can I run LLMs efficiently on my laptop?", max_tokens=1024))

불러올 수 있는 대표 모델과 사양은 아래 표를 참고하세요.

GPT4All 모델 이름 파일 크기 요구 RAM 파라미터 양자화 개발자 라이선스 MD5 (고유 해시)
Meta-Llama-3-8B-Instruct.Q4_0.gguf 4.66 GB 8 GB 8 Billion q4_0 Meta Llama 3 License c87ad09e1e4c8f9c35a5fcef52b6f1c9
Nous-Hermes-2-Mistral-7B-DPO.Q4_0.gguf 4.11 GB 8 GB 7 Billion q4_0 Mistral & Nous Research Apache 2.0 Coa5f6b4eabd3992da4d7fb7f020f921eb
Phi-3-mini-4k-instruct.Q4_0.gguf 2.18 GB 4 GB 3.8 billion q4_0 Microsoft MIT f8347badde9bfc2efbe89124d78ddaf5
orca-mini-3b-gguf2-q4_0.gguf 1.98 GB 4 GB 3 billion q4_0 Microsoft CC-BY-NC-SA-4.0 0e769317b90ac30d6e09486d61fefa26
gpt4all-13b-snoozy-q4_0.gguf 7.37 GB 16 GB 13 billion q4_0 Nomic AI GPL 40388eb2f8d16bb5d08c96fdfaac6b2c

채팅 세션 생성

HuggingFace에서 열람할 수 있는 대부분의 언어 모델은 어시스턴트로 학습되어 있어요. 그래서 그냥 관련 텍스트가 아니라 실제로 도움이 되는 응답을 내놓도록 유도되어 있죠.

응답이 전형적인 의미에서 도움이 되기를 바란다면, 모델이 파인튜닝될 때 쓰인 채팅 템플릿을 적용하는 걸 권장해요. 특정 프롬프트 템플릿 정보는 보통 해당 모델의 공식 HuggingFace 페이지에서 확인할 수 있어요.

from gpt4all import GPT4All
model = GPT4All("Meta-Llama-3-8B-Instruct.Q4_0.gguf")

with model.chat_session():
    print(model.generate("quadratic formula"))

직접 생성

model.generate()를 직접 호출하면 템플릿 없이 모델에게 프롬프트만 넣어요. 이 경우 응답이 '도움이 되는 대화'보다는 프롬프트의 어조를 그대로 흉내 내는 쪽으로 나올 수 있어요. 다시 말해 채팅 세션 밖의 언어 모델은 도움을 주는 어시스턴트라기보다, 모델 학습 데이터 분포를 들여다보는 렌즈에 가깝다는 점을 기억하세요.

from gpt4all import GPT4All
model = GPT4All("Meta-Llama-3-8B-Instruct.Q4_0.gguf")

print(model.generate("quadratic formula"))

같은 프롬프트도 채팅 세션을 거치면 형식 잡힌 도움말이 나오고, 직접 생성하면 텍스트의 자연스러운 이어짐에 가깝게 달라져요. 이는 어시스턴트로 파인튜닝되기 전의 언어 모델이 '데이터 흉내'에 더 가깝게 학습되기 때문이에요.

로컬 임베딩

Nomic은 내 하드웨어에서 매우 빠르게 도는 무료 임베딩 모델을 학습·오픈소스로 공개하고 있어요. 텍스트 임베딩 모델을 로컬로 가장 쉽게 돌리는 방법은 nomic 파이썬 라이브러리로 C/C++ 구현에 접근하는 거예요.

nomic 라이브러리에서 embed를 가져와 embed.text()inference_mode="local"로 호출하면 돼요. 임베딩 모델을 다운로드해서 다음에도 쓸 수 있게 저장해 둔답니다.

from nomic import embed
embeddings = embed.text(["String 1", "String 2"], inference_mode="local")['embeddings']
print("Number of embeddings created:", len(embeddings))
print("Number of dimensions per embedding:", len(embeddings[0]))
Number of embeddings created: 2
Number of dimensions per embedding: 768

앱 안과 gpt4all 파이썬 라이브러리의 Embed4All 클래스에서 쓸 수 있는 임베딩 모델은 아래와 같아요. GGUF 파일의 기본 컨텍스트 길이는 2048이고, 확장할 수 있어요.

이름 nomic 사용법 Embed4All 모델 이름 컨텍스트 길이 임베딩 차원 파일 크기
Nomic Embed v1 embed.text(strings, model="nomic-embed-text-v1", inference_mode="local") Embed4All("nomic-embed-text-v1.f16.gguf") 2048 768 262 MiB
Nomic Embed v1.5 embed.text(strings, model="nomic-embed-text-v1.5", inference_mode="local") Embed4All("nomic-embed-text-v1.5.f16.gguf") 2048 64-768 262 MiB
SBert n/a Embed4All("all-MiniLM-L6-v2.gguf2.f16.gguf") 512 384 44 MiB

더 알아보기