6. OpenAI๋ฅผ ๋์ด์ - ๋ก์ปฌ LLM๊ณผ PrivateGPT
๐ฏ ์ด ์ฑํฐ์์ ๋ฐฐ์ธ ๊ฒ
- OpenAI API๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ๋ด ์ปดํจํฐ์์ ์ง์ ์ธ์ด ๋ชจ๋ธ์ ์คํํ๋ ๋ฐฉ๋ฒ
HuggingFaceHub: Hugging Face์ ํธ์คํ ๋ ๋ชจ๋ธ์ API์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒHuggingFacePipeline: Hugging Face์ ๋ชจ๋ธ์ ๋ก์ปฌ ํ๊ฒฝ์ ๋ค์ด๋ก๋ํ์ฌ ์คํํ๋ ๋ฐฉ๋ฒGPT4All: ๋ฐ์คํฌํฑ ํ๊ฒฝ์ ์ต์ ํ๋ ์คํ์์ค ๋ชจ๋ธ์ ์คํํ๋ ๋ฐฉ๋ฒOllama: ๋ก์ปฌ LLM์ ๊ฐ์ฅ ์ฝ๊ฒ ์ค์นํ๊ณ ์คํํ ์ ์๋ ๋๊ตฌ์ChatOllama์ฐ๋๋ฒOllamaEmbeddings๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ๋ฉ ๊ณผ์ ๊น์ง ๋ก์ปฌ์์ ์ฒ๋ฆฌํ์ฌ ์๋ฒฝํ PrivateGPT ๊ตฌ์ถํ๊ธฐ
HuggingFaceHub
๐ฏ ์ด๋ฒ ๋จ๊ณ์์ ๋ฐฐ์ธ ๊ฒ
- Hugging Face Hub์ ์๋ ์๋ง์ ์คํ์์ค ๋ชจ๋ธ์ LangChain๊ณผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ
HuggingFaceHubํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ API ํํ๋ก ๋ชจ๋ธ์ ํธ์ถํ๋ ๋ฐฉ๋ฒ
๐ 1๋จ๊ณ: Hugging Face Hub ์ฐ๋ํ๊ธฐ
์ ์ฒด ์ฝ๋ (notebook.ipynb):
1 | from langchain.llms import HuggingFaceHub |
๐ ์ฝ๋ ์์ธ ์ค๋ช
1. HuggingFaceHub๋?
Hugging Face Hub๋ ์๋ง ๊ฐ์ ์คํ์์ค AI ๋ชจ๋ธ์ด ๊ณต์ ๋๋ ๊ฑฐ๋ํ ํ๋ซํผ์
๋๋ค. HuggingFaceHub ํด๋์ค๋ ์ด ํ๋ซํผ์ ํธ์คํ
๋ ๋ชจ๋ธ๋ค์ ๋ง์น API์ฒ๋ผ ํธ์ถํ ์ ์๊ฒ ํด์ฃผ๋ LangChain์ ๊ตฌ์ฑ ์์์
๋๋ค.
- ์ ์ฌ์ฉํ๋๊ฐ?: ๋ด ์ปดํจํฐ์ ๋ฌด๊ฑฐ์ด ๋ชจ๋ธ์ ์ง์ ์ค์นํ์ง ์๊ณ ๋ ๋ค์ํ ์คํ์์ค ๋ชจ๋ธ์ ํ ์คํธํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?:
HUGGINGFACEHUB_API_TOKENํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.HuggingFaceHub๋ ์ด ํ ํฐ์ ์ฌ์ฉํ์ฌ Hugging Face์ Inference API์ ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ต๋๋ค. - ์ฃผ์์ฌํญ: ๋ชจ๋ธ๋ง๋ค ์
๋ ฅ์ผ๋ก ๋ฐ๋ ํ๋กฌํํธ์ ํ์์ด ๋ค๋ฅผ ์ ์์ต๋๋ค. (์: Mistral ๋ชจ๋ธ์
[INST]...[/INST]ํ์์ ์ฌ์ฉ) ๊ฐ ๋ชจ๋ธ์ ๋ฌธ์๋ฅผ ํ์ธํ๊ณPromptTemplate์ ๋ง์ถฐ์ฃผ์ด์ผ ํฉ๋๋ค.
โ ์ฒดํฌ๋ฆฌ์คํธ
- Hugging Face ๊ณ์ ์ ๋ง๋ค๊ณ API ํ ํฐ์ ๋ฐ๊ธ๋ฐ์๋์?
-
HUGGINGFACEHUB_API_TOKENํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋์? -
HuggingFaceHub๋ฅผ ์ด๊ธฐํํ๊ณ , ์ํ๋ ๋ชจ๋ธ์repo_id๋ฅผ ์ง์ ํ๋์? - ๋ชจ๋ธ์ ๋ง๋ ํ์์ผ๋ก ํ๋กฌํํธ๋ฅผ ์์ฑํ์ฌ ์ฒด์ธ์ ์คํํ๋์?
HuggingFacePipeline
๐ฏ ์ด๋ฒ ๋จ๊ณ์์ ๋ฐฐ์ธ ๊ฒ
- Hugging Face์ ๋ชจ๋ธ์ ๋ก์ปฌ ์ปดํจํฐ์ ์ง์ ๋ค์ด๋ก๋ํ์ฌ ์คํํ๋ ๋ฐฉ๋ฒ
HuggingFacePipeline์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ๋ชจ๋ธ์ LangChain๊ณผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ
๐ 1๋จ๊ณ: ๋ก์ปฌ ํ์ดํ๋ผ์ธ์ผ๋ก ๋ชจ๋ธ ์คํํ๊ธฐ
์ ์ฒด ์ฝ๋ (notebook.ipynb):
1 | from langchain.llms.huggingface_pipeline import HuggingFacePipeline |
๐ ์ฝ๋ ์์ธ ์ค๋ช
1. HuggingFacePipeline์ด๋?HuggingFaceHub๊ฐ ์๊ฒฉ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, HuggingFacePipeline์ Hugging Face์ transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ๋ก์ปฌ ์ปดํจํฐ์ ๋ค์ด๋ก๋ํ๊ณ ์ง์ ์คํํฉ๋๋ค.
- ์ ์ฌ์ฉํ๋๊ฐ?: ์ธํฐ๋ท ์ฐ๊ฒฐ ์์ด ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ธ๋ถ๋ก ์ ์ก๋์ง ์์ ๋ณด์์ ์ ๋ฆฌํฉ๋๋ค. API ๋น์ฉ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
- ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?:
from_model_id๊ฐ ํธ์ถ๋๋ฉด, LangChain์ ์ง์ ๋model_id์ ๋ชจ๋ธ ํ์ผ์ Hugging Face Hub์์ ๋ค์ด๋ก๋ํฉ๋๋ค(์ฒ์ ํ ๋ฒ๋ง). ๊ทธ ํ, ํด๋น ๋ชจ๋ธ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ์ฌ ์ถ๋ก (text-generation) ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํฉ๋๋ค. - ์ฃผ์์ฌํญ: ๋ชจ๋ธ์ ์คํํ๋ ค๋ฉด ์ถฉ๋ถํ RAM๊ณผ VRAM(GPU ์ฌ์ฉ ์)์ด ํ์ํฉ๋๋ค.
gpt2์ ๊ฐ์ ์์ ๋ชจ๋ธ๋ก ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.PyTorch์ ๊ฐ์ ๋ฅ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
โ ์ฒดํฌ๋ฆฌ์คํธ
-
transformers,torch๋ฑ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋์? -
HuggingFacePipeline.from_model_id๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ํ์ดํ๋ผ์ธ์ ์์ฑํ๋์? - ๋ก์ปฌ์์ ๋ชจ๋ธ์ด ์คํ๋๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒ์ ํ์ธํ๋์?
GPT4All
๐ฏ ์ด๋ฒ ๋จ๊ณ์์ ๋ฐฐ์ธ ๊ฒ
GPT4All๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์คํฌํฑ์ ์ต์ ํ๋ ๋ก์ปฌ ๋ชจ๋ธ์ ์คํํ๋ ๋ฐฉ๋ฒ
๐ 1๋จ๊ณ: GPT4All ๋ชจ๋ธ ์คํํ๊ธฐ
์ ์ฒด ์ฝ๋ (notebook.ipynb):
1 | from langchain.llms.gpt4all import GPT4All |
๐ ์ฝ๋ ์์ธ ์ค๋ช
1. GPT4All์ด๋?GPT4All์ ์ผ๋ฐ์ ์ธ ์๋น์์ฉ CPU์์๋ ์ ์๋ํ๋๋ก ์ต์ ํ๋ ์คํ์์ค ๋ชจ๋ธ๊ณผ ์ํ๊ณ์
๋๋ค. LangChain์ GPT4All ๋ํผ(wrapper)๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ฏธ๋ฆฌ ๋ค์ด๋ก๋ํ ๋ชจ๋ธ ํ์ผ(.bin)์ ๋ก๋ํ์ฌ ์ฝ๊ฒ ๋ก์ปฌ ์ถ๋ก ์ ์ํํ ์ ์์ต๋๋ค.
- ์ ์ฌ์ฉํ๋๊ฐ?: ๊ฐ๋ ฅํ GPU ์์ด ์ผ๋ฐ์ ์ธ ๋ ธํธ๋ถ์ด๋ ๋ฐ์คํฌํฑ์์๋ ์ค์ํ ์ฑ๋ฅ์ LLM์ ์คํํ ์ ์์ต๋๋ค.
- ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?: ๋จผ์ GPT4All ์น์ฌ์ดํธ ๋ฑ์์ ์ํ๋ ๋ชจ๋ธ์
.binํ์ผ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ๊ทธ ํ,GPT4Allํด๋์ค๋ฅผ ์ด๊ธฐํํ ๋modelํ๋ผ๋ฏธํฐ์ ํด๋น ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
โ ์ฒดํฌ๋ฆฌ์คํธ
-
gpt4all๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋์? -
.binํ์์ ๋ชจ๋ธ ํ์ผ์ ๋ค์ด๋ก๋ํ๋์? -
GPT4Allํด๋์ค์ ๋ชจ๋ธ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ๋ฌํ์ฌ LLM์ ์ด๊ธฐํํ๋์?
Ollama์ PrivateGPT
๐ฏ ์ด๋ฒ ๋จ๊ณ์์ ๋ฐฐ์ธ ๊ฒ
Ollama๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ์ฌ ๋ก์ปฌ LLM์ ๊ฐ์ฅ ์ฝ๊ฒ ์คํํ๋ ๋ฐฉ๋ฒChatOllama์OllamaEmbeddings๋ฅผ ์ฌ์ฉํ์ฌDocumentGPT๋ฅผ ์๋ฒฝํPrivateGPT๋ก ์ ํํ๋ ๋ฐฉ๋ฒ
๐ 1๋จ๊ณ: DocumentGPT๋ฅผ PrivateGPT๋ก ์ ํํ๊ธฐ
์ ์ฒด ์ฝ๋ (pages/02_PrivateGPT.py):
1 | # ... (๋ค๋ฅธ import๋ DocumentGPT์ ์ ์ฌ) |
๐ ์ฝ๋ ์์ธ ์ค๋ช
1. Ollama๋?Ollama๋ Llama 2, Mistral ๋ฑ ๋ค์ํ ์คํ์์ค LLM์ ๋ก์ปฌ ํ๊ฒฝ์์ ๋งค์ฐ ์ฝ๊ฒ ๋ค์ด๋ก๋ํ๊ณ , ์คํํ๊ณ , ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์
๋๋ค. ollama run <๋ชจ๋ธ๋ช
>๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ช
๋ น์ด๋ก ๋ชจ๋ธ์ ์คํํ๋ฉด, ํด๋น ๋ชจ๋ธ์ API์ฒ๋ผ ํธ์ถํ ์ ์๋ ์๋ฒ๊ฐ ๋ก์ปฌ์ ์ด๋ฆฝ๋๋ค.
2. ChatOllama & OllamaEmbeddings
LangChain์ Ollama์ ์๋ฒฝํ๊ฒ ํตํฉ๋ฉ๋๋ค.
ChatOllama: ๋ก์ปฌ Ollama ์๋ฒ์์ ์คํ ์ค์ธ ๋ชจ๋ธ์ LangChain์ ์ฑ ๋ชจ๋ธ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.ChatOpenAI๋ฅผChatOllama๋ก ๋ฐ๊พธ๊ณ ,model์ด๋ฆ๋ง ์ง์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.OllamaEmbeddings: ์๋ฒ ๋ฉ ๊ณผ์ ๋ํ ๋ก์ปฌ Ollama ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ํํฉ๋๋ค.OpenAIEmbeddings๋ฅผOllamaEmbeddings๋ก ๊ต์ฒดํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
3. ์๋ฒฝํ PrivateGPT
LLM(์ถ๋ก )๊ณผ ์๋ฒ ๋ฉ์ ๋ชจ๋ ๋ก์ปฌ์์ ์คํ๋๋ Ollama ๋ชจ๋ธ๋ก ๊ต์ฒดํจ์ผ๋ก์จ, ํ์ผ ๋ฐ์ดํฐ์ ์ฌ์ฉ์ ์ง๋ฌธ์ด ๋ ์ด์ ์ธ๋ถ(OpenAI) ์๋ฒ๋ก ์ ์ก๋์ง ์์ต๋๋ค. ์ด๋ก์จ ์ธํฐ๋ท ์ฐ๊ฒฐ ์์ด๋ ์๋ํ๊ณ ๋ฐ์ดํฐ ํ๋ผ์ด๋ฒ์๊ฐ ์๋ฒฝํ๊ฒ ๋ณด์ฅ๋๋ PrivateGPT๊ฐ ์์ฑ๋ฉ๋๋ค.
โ ์ฒดํฌ๋ฆฌ์คํธ
-
Ollama๋ฅผ ์ค์นํ๊ณollama run mistral๋ช ๋ น์ด๋ก ๋ชจ๋ธ์ ์คํํ๋์? -
ChatOpenAI๋ฅผChatOllama๋ก,OpenAIEmbeddings๋ฅผOllamaEmbeddings๋ก ์ฝ๋๋ฅผ ์์ ํ๋์? - ์์ ๋
PrivateGPT์ฑ์ด ์ธ๋ถ API ํธ์ถ ์์ด ๋ก์ปฌ์์ ์ ์๋ํ๋ ๊ฒ์ ํ์ธํ๋์?
์ถ์ฒ : https://nomadcoders.co/fullstack-gpt