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