Ollama์ ์๋ ๋ชจ๋ธ ๋ด๊ฐ ๋ง๋ค์ด ์ฌ์ฉํ๊ธฐ
Ollama์ ์๋ ๋ชจ๋ธ ๋ด๊ฐ ๋ง๋ค์ด ์ฌ์ฉํ๊ธฐ ๊ด๋ จ
K8sGPT (k8sgpt-ai/k8sgpt
)๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๋๊ท๋ชจ์ธ์ด๋ชจ๋ธ(์ดํ LLM) GPT๋ฅผ ๊ฒฐํฉํด ๋ง๋ค์ด์ง ์คํ์์ค ํ๋ก์ ํธ์
๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ์ ๋ณด๋ฅผ ์ค์บ๋ํ์ฌ ์ด์๋ฅผ ๋ฐ๊ฒฌํ๊ณ , ๊ทธ ์ด์์ ์์ธ๊ณผ ๊ฒฐ๊ณผ, ํด๊ฒฐ ๋ฐฉ์์ ์๋ ค ์ค๋๋ค.
์ด ํ๋ก์ ํธ๋ ์ฒ์์๋ ์คํ์์ค LLM๊ณผ ํจ๊ป ์์ํ์ง๋ง, ์ด์ ์ง์ ์ ๊ทผํ๊ณ ๊ด๋ฆฌํ ์ ์๋ AI ์ ๊ณต์๋ฅผ ๊ตฌ์ฑํด ํ์ฉํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋๋ ๊ฒ์ ์ฐ๋ คํ๊ฑฐ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋๋ ํ ํฐ์ ํฌ๊ฒ ์ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ, ๋ก์ปฌ์์ LLM ํ๊ฒฝ์ ๋ง๋ค๊ณ ์ด๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ์ ์ํด ํ์ํ ๊ฒ์ AI ๋ชจ๋ธ์ ์คํ๊ณผ ํด๋น ๋ชจ๋ธ์๊ฒ ์์ฒญํ API ์ฃผ์, ๋ ๊ฐ์ง์ ๋๋ค. ์ด๋ ๊ถ์ฅํ๋ ๋๊ตฌ๋ ๋ฐ๋ก Ollama์ ๋๋ค. ๋ก์ปฌ ํ๊ฒฝ์ LLM์ ์์ฝ๊ฒ ๊ตฌํํ๋๋ก ๋์์ฃผ๋ ๋๊ตฌ์ฃ . Ollama์๋ llama3.1์ ๋น๋กฏํด ๋ค์ํ ๊ณต๊ฐ ๋ชจ๋ธ๋ค์ด ๋งค์ฐ ๋น ๋ฅด๊ฒ ํฌํ ๋์ด ์ฌ๋ผ์ต๋๋ค. ๋ฐ๋ผ์ ํ์ฉ ์ ํน๋ณํ ์ ๊ฒฝ ์จ์ผ ํ ๋ถ๋ถ์ ์์ต๋๋ค.
๊ทธ๋ผ์๋ ๊ณต๊ฐ๋ LLM ๋๋ sLM ๋ชจ๋ธ์ ๋ชจ๋ ๋ฐ์ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ์ด๋ฅผ ์ํด Ollama๋ ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ณณ์ ๊ณต๊ฐ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์๋๋ก create
๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฒ ๊ธฐ๊ณ ์์๋ create ๋ช ๋ น์ ์ฌ์ฉํ๊ธฐ ์ํ ์ ์ฐจ, ๊ทธ๋ฆฌ๊ณ ์ค๋น ๊ณผ์ ์ ์ดํด๋ณด๋ฉฐ ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ์ ๋ํ ์ดํด๋ฅผ ๋์ด๋ ค๊ณ ํฉ๋๋ค. ๊ผญ K8sGPT๋ฅผ ํ์ฉํ์ง ์๋๋ผ๋ Ollama ํ์ฉ๋ฒ์ ๊ด์ฌ์ด ์๋ ๋ถ๋ค์๊ฒ ๋์์ด ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ์์ ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
- ๊ณต๊ฐ๋ ๋ชจ๋ธ ๋ด๋ ค๋ฐ๊ธฐ
- ํ์ดํ ์น(PyTorch) ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ธ์ GGUF ํฌ๋งท์ผ๋ก ๋ณํํ๊ธฐ
- ๊ธฐ๋ณธ f16์ผ๋ก ์์ฑ๋ GGUF ๋ชจ๋ธ์ Q5_K_M์ผ๋ก ์์ํ
- Ollama์ create ๋ช ๋ น์ ์ฌ์ฉํด ๋ชจ๋ธ ์ถ๊ฐํ๊ธฐ
- Ollama์ ์ถ๊ฐ๋ ๋ชจ๋ธ์ K8sGPT ๋ถ์์ ์ฌ์ฉํ๊ธฐ
1๋ถ ๊ธ์์๋ ๋ด๊ฐ ํ์ฉํ๊ณ ์ ํ๋ ๋ชจ๋ธ์ Ollama์ ํ์ฉํ๊ธฐ ์ข๊ฒ ๋ณํํ๋ ์์ ๊น์ง ์์๋ณผ ์์ ์ ๋๋ค.
0๋จ๊ณ: ์ฌ์ ์ค๋น
์์ ์ ์งํํ๋ ค๋ฉด ์๋ ๋๊ตฌ๋ค์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค. (๋ง์ด๋ ๋ฒ์ ์ ์๊ธฐ์ ๋ฐ๋ผ ๋ค์ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.)
- python3
- pip3
- huggingface-cli
๋ํ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋ง๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ ์ ํ์ฉํ ์์ ์ ๋๋ค.
1๋จ๊ณ: ํ๊น ํ์ด์ค(Hugging Face)์์ ๋ชจ๋ธ ๋ด๋ ค๋ฐ๊ธฐ
๊ฐ์ฅ ๋จผ์ ํด์ผ ํ ์ผ์ ํ๊น ํ์ด์ค์์ ์ด๋ค LLM์ ๋ด๋ ค๋ฐ์ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฒ ์ค์ต์ ํ์ฉํ ๋ชจ๋ธ์ Llama3-Chinese-8B-Instruct ๋ชจ๋ธ์
๋๋ค. ๊ทธ์ ์์ ์ฐ์ Ollama์ llama2-chinese๋ฅผ ์ฌ๋ ค๋ ๊ณณ์์ ๋ฐ๋ก ์ ๊ณตํ๋ llama3์ด ์๋์ง ํด๋น ์กฐ์ง ์ ์ฅ์๋ก ์ด๋ํด ํ์ธํด ๋ด
๋๋ค. ์ ์ฅ์์ ์๋ ์ด๋ฏธ์ง์ฒ๋ผ Llama3-Chinese-8B-Instruct
์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์์ผ๋ก๋ ํ์ด์ง์์ ์ด๋ค ํฌ๋งท์ผ๋ก ๋ชจ๋ธ์ ์ ๊ณตํ๋ ์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ชจ๋ธ์ด ์ธ์ดํํ ์(safetensor) ํฌ๋งท์ผ๋ก ์ ๊ณต๋๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์ฐธ๊ณ ๋ก ํ๊น ํ์ด์ค์์ ์ ๊ณตํ๋ ๋ชจ๋ธ์ ๋๋ถ๋ถ ์ธ์ดํํ ์ ํํ๋ก ์ ๊ณตํฉ๋๋ค.
ํด๋น ๋ชจ๋ธ์ ๋ด๋ ค๋ฐ์ผ๋ ค๋ฉด huggingface-cli login
๋ช
๋ น์ด๋ก ํ๊น
ํ์ด์ค์ ๋ก๊ทธ์ธ์ ํด์ผ ํฉ๋๋ค. ํ๊น
ํ์ด์ค ๋ก๊ทธ์ธ ํ ํฐ์ ๋ฐ์ผ๋ ค๋ฉด ๋ง์ฐฌ๊ฐ์ง ํ๊น
ํ์ด์ค ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค.
์ด์ ํ๊น ํ์ด์ค์์ ๋ชจ๋ธ์ ๋ด๋ ค๋ฐ๊ธฐ ์ํด ์ฃผ์๋ฅผ ์น ํ์ด์ง์์ ๋ณต์ฌํฉ๋๋ค.
๋ชจ๋ธ ๋ค์ด๋ก๋์๋ download
๋ช
๋ น์ ํ์ฉํฉ๋๋ค. ๋ด๋ ค๋ฐ๋ ์ฃผ์๋ฅผ ์ ํํ๊ฒ ์ง์ ํด ๋ฐ๊ธฐ ์ํด --local-dir
๋ช
๋ น์ด๋ ํจ๊ป ํ์ฉํ์ต๋๋ค.
๋ค์ด๋ก๋๊ฐ ๋๋ ๋ค์, ๋ด๋ ค๋ฐ์ ๋ชจ๋ธ๊ณผ ๊ด๋ จ ํ์ผ์ ํ์ธํฉ๋๋ค.
2๋จ๊ณ: ๋ชจ๋ธ์ GGUF ํ์ผ ํ์์ผ๋ก ๋ณํํ๊ธฐ
์์ ํ์ธํ๋ฏ ํ๊น ํ์ด์ค์์ ๋ด๋ ค๋ฐ์ ๋ชจ๋ธ์ ์ธ์ดํํ ์(safetensors) ํ์์ ๋๋ค. ํ๊น ํ์ด์ค์์ ๋ฐฐํฌ๋๋ ๋ชจ๋ธ์ด ์ฃผ๋ก ์ธ์ดํํ ์๋ฅผ ์ฐ๋ ์ฃผ๋ ์ด์ ๋ pt(PyTorch) ๋ชจ๋ธ์ ๊ฐ์ค์น์ ์ ์ฑ์ฝ๋๊ฐ ํฌํจ๋ ์ ์๋ ์ํ์ ์ค์ด๊ธฐ ์ํด์์ ๋๋ค. ์์ธ๋ฌ ์ด ํ์์ ํจ์จ์ ์ธ ์ง๋ ฌํ ๋ฐ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋์ฉ๋ ํ ์์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ์ค๋๋ค.
Info
์ธ์ดํํ
์์ ๋ํ ์์ธํ ๋ด์ฉ์ safetensors
, ์ธ์ดํํ
์ ๋ก๋, ์ธ์ดํํฐ ์ผ์ ์๊ฐ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ๋ณด์ธ์.
ํ์ง๋ง ์ธ์ดํํ ์ ํ์์ ๋ชจ๋ธ์ Ollama์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. Ollama์์ ์ฃผ๋ก ์ถ๊ฐํด์ ์ฌ์ฉํ๋ ํ์ผ ํ์์ GGUF(GPT-Generated Unified Format)์ ๋๋ค.
2023๋ 8์ ๊ณต๊ฐ๋ GGUF๋ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๋จ์ผ ํ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. GGUF ๋ฑ์ฅ ์ด์ ์๋ GGML(GPT-Generated Model Language)์ด๋ผ๋ ํ์ผ ํ์์ ์ฃผ๋ก ํ์ฉํ์ต๋๋ค. ๋ค๋ง GGML์ ๋ชจ๋ธ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ฃ๊ธฐ ์ด๋ ต๋ค๋ ์ , ๋ชจ๋ธ ๊ฐ์ ํธํ์ฑ ๋ฌธ์ , ๊ทธ๋ฆฌ๊ณ rope-freq-base์ ๊ฐ์ ๊ฐ์ ์์ฃผ ๋ฐ๊ฟ์ค์ผ ํ๋ ๋ฌธ์ ๋ฑ์ด ์์์ต๋๋ค. GGUF๋ ์ด๋ฅผ ๊ฐ์ ํ ํ์์ผ๋ก ํ์ฌ ์์ ์์ ๋ชจ๋ธ ์ ์ฅ์ ์ํด ๋๋ฆฌ ์ฐ์ด๊ณ ์์ต๋๋ค.
Info
GGML๊ณผ GGUF ๋ชจ๋ Georgi Gerganov(ggerganov
)์ ์ฃผ๋๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ๋ ๊ฐ์ง ํ์์ ์์ธํ ์ฐจ์ด๊ฐ ๊ถ๊ธํ ๋ถ์ ๋ฌธ์1, ๋ฌธ์2๋ฅผ ์ฐธ๊ณ ํ์ธ์.
GGUF ํ์ผ์ ์๋ ์ด๋ฏธ์ง์ ๊ฐ์ ์ธ๋ถ ์ ๋ณด๋ฅผ 1๊ฐ์ ํ์ผ์ ๋ชจ๋ ๋ด๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ Ollama์์ ์ธ์ดํํ
์ ํ์์ ๋ชจ๋ธ์ ์ฐ๋ ค๋ฉด GGUF๋ก ๋ณํํ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค. ๋ณํ์ ์ํด์๋ GGUF ํ์ ๊ฐ๋ฐ์ ์ฃผ๋ํ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ llama.cpp (ggerganov/llama.cpp
) ํ๋ก์ ํธ์ ๋์์ ๋ฐ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค. ํนํ ํด๋น ํ๋ก์ ํธ๋ ๋จ์ํ GGUF ๋ณํ ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ์ข
๋ฅ์ ์์ํ(Quantization)๋ ์ ๊ณตํ๊ณ ์์ด CPU์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ธฐ๊ธฐ์์๋ ๋ชจ๋ธ์ด ๋์ํ ์ ์๊ฒ ํด์ค๋๋ค.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ณํ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ ๊ฐ์ฅ ๋จผ์ llama.cpp
ํ๋ก์ ํธ๋ฅผ git clone
๋ช
๋ น์ด๋ก ๋ก์ปฌ์ ๋ด๋ ค๋ฐ์ต๋๋ค.
๊ณง์ด์ด llama.cpp ํ๋ก์ ํธ ๊ตฌ๋์ ์ํ ํ์ด์ฌ ๊ด๋ จ ํจํค์ง๋ฅผ pip3
๋ก ์ค์นํฉ๋๋ค.
์ค์น๊ฐ ๋๋๋ฉด llama.cpp์ ๋ฏธ๋ฆฌ ์์ฑ๋ convert_hf_to_gguf.py
๋ฅผ ์ด์ฉํด f16(float16) ์์ค์ gguf๋ฅผ ์์ฑํฉ๋๋ค. ํ๋จ์ 2.f16-modes
๋๋ ํฐ๋ฆฌ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ ธ ์์ต๋๋ค. ๋จ์ ํ์ผ๋ก๋ ๋ณํํ ์ ์์ต๋๋ค.
์์ฑ๋ gguf ํ์ผ๊ณผ ๊ทธ ํ์ผ์ ์ฌ์ด์ฆ๋ฅผ ํ์ธํฉ๋๋ค.
๋ฌธ์ ๊ฐ ์๋ค๋ฉด, ์์ํ(Quantization)๋ฅผ ์งํํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค๋ง convert_hf_to_gguf.py
๋ช
๋ น์์๋ ์์ํ ์ต์
์ f32,f16, bf16, q8_0, auto
๋ง ์ ๊ณตํฉ๋๋ค. ์ข ๋ ๋์ ์์ํ ๋ฐฉ๋ฒ์ด ํ์ํด ๋ณด์
๋๋ค.
3๋จ๊ณ: f16 GGUF ๋ชจ๋ธ์ Q5_K_M์ผ๋ก ์์ํ
์์ํ(Quantization)๋ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ผ์ ์์ค ์ ์งํ๋ฉด์๋ ์ฌ์ด์ฆ์ ๋์์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ค์ด๊ธฐ ์ํด ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค. ํ์ฌ ๊ธฐ๋ณธ๊ฐ์ธ f16์ ์ฉ๋์ด ๋ค์ ํฐ ํธ์ผ๋ก ํ๊น ํ์ด์ค์์ ๋ฐฐํฌ๋ ๋ชจ๋ธ์ ์ฌ๋ฌ ์ข ๋ฅ์ ์์ํ ๋ชจ๋ธ์ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
์์ํ๋ก ๋ชจ๋ธ์ ๋นํธ๊ฐ ๋ฎ์์ง๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋๊ฐ ๋ด๋ ค๊ฐ๋๋ค. ํ์ง๋ง ๊ทธ๋งํผ ์ฉ๋์ด ์ค์ด ๋ค์ด ๋ชจ๋ธ์ ๋์ํ ๋ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
ํ๊น ํ์ด์ค์์ ๋ฐฐํฌ๋๋ ๋๋ถ๋ถ ๋ชจ๋ธ์ README ๋ฌธ์์์ ๋ ๋ฒจ์ Q5๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ ์ธ K_M, K-L ๋ฑ ํ๊ธฐ๋ก ๋ ๋ฒจ์ ๋ ์์ธํ ์๋ ค ์ค๋๋ค. ์ฌ๊ธฐ์ K๋ ์์ํ์ K-ํ๊ท ์๊ณ ๋ฆฌ์ฆ(means clustering)์ ํ์ฉํ์์, ๊ทธ ๋ค์ ๋๋ฌธ์๋ ๋ชจ๋ธ์ ์ฌ์ด์ฆ๋ฅผ ์๋ฏธํฉ๋๋ค. S(Small)์ M(Medium), ๊ทธ๋ฆฌ๊ณ L(Large)์ ์ฌ์ฉํฉ๋๋ค.
Info
์์ํ์ ๋ํด์๋ ์ด ๋ฌธ์๋ ํจ๊ป ๋ณด๋ฉด ์ข์ต๋๋ค.
์์ํ ๋ชจ๋ธ ์ค ์ฃผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ Q5_K_M
์
๋๋ค. ์ธ์ด ๋ชจ๋ธ์ ์ฃผ์ ์ฑ๋ฅ ์งํ์ธ ํํ๋ ์ํฐ(perplexity, PPL)*์ด ํ์ฉ ๊ฐ๋ฅํ ์์ค์ด๋ฉฐ ๋ชจ๋ธ์ ์ฌ์ด์ฆ๋ ์ ๊ฒ ๋ง๋ ๋ชจ๋ธ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
Info
ํํ๋ ์ํฐ(perplexity, PPL): ๋ฌธ์ฅ์ ์์ฑํ ๋ ์ ํํด์ผ ํ๋ ๊ฐ์ง์๊ฐ ๋ง์์๋ก ๋ชจ๋ธ์ ํผ๋์ ๊ฒช์ต๋๋ค. ์ ํ์ต๋ ๋ชจ๋ธ์ผ์๋ก ์ด๋ฌํ ๊ฐ์ง์๊ฐ ์ ์ต๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ธ์ ํผ๋์ค๋ฌ์์ ๋ํ๋ด๋ ์์น๊ฐ ๋ฎ์ ๊ฒ, ์ฆ ํํ๋ ์ํฐ๊ฐ ๋ฎ์์๋ก ์ฑ๋ฅ์ด ์ข๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ฒ์๋ ์ญ์ ๊ธฐ๋ณธ ์ ๊ณต ์์ํ ์ธ์ ์ถ๊ฐ๋ก ์์
ํด Q5_K_M๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ํด llama.cpp ๋๋ ํฐ๋ฆฌ์์ make
๋ฅผ ์คํํฉ๋๋ค. ํด๋น ๋ช
๋ น์ผ๋ก ํ๋ซํผ์ ๋ง๋ ๋ค์ํ ๋ช
๋ น์ด๊ฐ ์์ฑ๋๋๋ฐ, ๊ทธ ์ค llama-quantize
๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ์ฐธ๊ณ ๋ก ์๋ก ์์ฑ๋๋ ๋ช
๋ น์ด๋ llama-
๋ก ์์๋ฉ๋๋ค.
llama-quantize
๋ช
๋ น์ด๋ฅผ ์คํํ๊ธฐ ์ ์ --help
๋ช
๋ น์ด๋ก ํ์ฉ๋๋ ์์ํ ํ์
์ ํ์ธํฉ๋๋ค. Q5_K_M
์ด ์กด์ฌํ๋ ๊ฒ์ ํ์ธํฉ๋๋ค.
f16์ผ๋ก ์์ํ ๋์ด ์๋ gguf ํ์ผ์ Q5_K_M
์ผ๋ก ๋ณํํ์ต๋๋ค. ๋ณํ ํ์ ์ค์ด๋ ์ฉ๋๋ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
K8sGPT (k8sgpt-ai/k8sgpt
)๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๋๊ท๋ชจ์ธ์ด๋ชจ๋ธ(์ดํ LLM)์ ๊ฒฐํฉํด ๋ง๋ค์ด์ง ์คํ์์ค ํ๋ก์ ํธ์
๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ์ ๋ณด๋ฅผ ์ค์บ๋ํ์ฌ ์ด์๋ฅผ ๋ฐ๊ฒฌํ๊ณ , ๊ทธ ์ด์์ ์์ธ๊ณผ ๊ฒฐ๊ณผ, ํด๊ฒฐ ๋ฐฉ์์ ์๋ ค ์ค๋๋ค.
์ด ํ๋ก์ ํธ๋ ์ฒ์์๋ ์คํ์์ค LLM๊ณผ ํจ๊ป ์์ํ์ง๋ง, ์ด์ ์ง์ ์ ๊ทผํ๊ณ ๊ด๋ฆฌํ ์ ์๋ AI ์ ๊ณต์๋ฅผ ๊ตฌ์ฑํด ํ์ฉํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋๋ ๊ฒ์ ์ฐ๋ คํ๊ฑฐ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋๋ ํ ํฐ์ ํฌ๊ฒ ์ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ, ๋ก์ปฌ์์ LLM ํ๊ฒฝ์ ๋ง๋ค๊ณ ์ด๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ์ ์ํด ํ์ํ ๊ฒ์ AI ๋ชจ๋ธ์ ์คํ๊ณผ ํด๋น ๋ชจ๋ธ์๊ฒ ์์ฒญํ API ์ฃผ์, ๋ ๊ฐ์ง์ ๋๋ค. ์ด๋ ๊ถ์ฅํ๋ ๋๊ตฌ๋ ๋ฐ๋ก Ollama์ ๋๋ค. ์ด๋ฒ ๊ธฐ๊ณ ์์๋ Ollama์ create ๋ช ๋ น์ ์ฌ์ฉํด ๋ด๊ฐ ํ์ํ ๋ชจ๋ธ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. ๊ผญ K8sGPT๋ฅผ ํ์ฉํ์ง ์๋๋ผ๋ Ollama ํ์ฉ๋ฒ์ ๊ด์ฌ์ด ์๋ ๋ถ๋ค์๊ฒ ๋์์ด ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ์์ ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
- ๊ณต๊ฐ๋ ๋ชจ๋ธ ๋ด๋ ค๋ฐ๊ธฐ
- ํ์ดํ ์น(PyTorch) ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ธ์ GGUF ํฌ๋งท์ผ๋ก ๋ณํํ๊ธฐ
- ๊ธฐ๋ณธ f16์ผ๋ก ์์ฑ๋ GGUF ๋ชจ๋ธ์ Q5_K_M์ผ๋ก ์์ํ
- Ollama์ create ๋ช ๋ น์ ์ฌ์ฉํด ๋ชจ๋ธ ์ถ๊ฐํ๊ธฐ
- Ollama์ ์ถ๊ฐ๋ ๋ชจ๋ธ์ K8sGPT ๋ถ์์ ์ฌ์ฉํ๊ธฐ
4๋จ๊ณ: GGUF ํ์ผ์ Ollama์ ๋ถ๋ฌ ์ฌ์ฉํ๊ธฐ
Ollama์์๋ GGUF๋ฅผ ๊ฐ๋จํ๊ฒ ๋ถ๋ฌ ๊ณง๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ ์ ํ์ฉํ๊ณ ์ถ์ ์ด๋ค์ ์ํด ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ด๋ ์ ๋ ํ๋กฌํํธ ์์ง๋์ด๋ง์ ํ ์ ์๋ ์ต์ ๋ ์ ๊ณต๋ฉ๋๋ค. ์ด๋ฒ์๋ ์ด ์ต์ ์ ํจ๊ป ํ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ ์์ํ๋ GGUF ํ์ผ์ ์์ ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ฎ๊น๋๋ค. ํด๋น ๋๋ ํฐ๋ฆฌ์ ์ด๋ฆ์ ํ์ฌ ๋ชจ๋ธ์ ์ ๊ณตํ ์กฐ์ง์ ์ด๋ฆ์ผ๋ก ํ์ต๋๋ค.
์์ ํ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํด ๋ชจ๋ธํ์ผ(modelfile)์ ์ถ๊ฐํฉ๋๋ค. ๋ชจ๋ธํ์ผ์ Ollama์ ๋ชจ๋ธ์ ์ถ๊ฐํ๋ฉฐ ๋ณ๊ฒฝํ ์ ์๋ ๋ค์ํ ์ค์ ์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ธํ์ผ(modelfile)
Ollama์์๋ ๋ชจ๋ธํ์ผ์ด๋ผ๋ ํ์์ผ๋ก ๋ชจ๋ธ์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ์ธ๋ถ ์ค์ ์ด๋ ํ๋กฌํํธ ์์ง๋์ด๋ง์ ๊ฐ๊น์ด ํญ๋ชฉ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๊ณต์ ํํ์ด์ง (ollama/ollama
)์์ ์ค๋ช
ํ๋ ํต์ฌ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
FROM llama3
# sets the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1
# sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token
PARAMETER num_ctx 4096
# sets a custom system message to specify the behavior of the chat assistant
SYSTEM You are Mario from super mario bros, acting as an assistant.
FROM
์๋ GGUF ํ์ ๋ชจ๋ธ ๋ฑ ์ถ๊ฐํ๊ณ ์ ํ๋ ๋ชจ๋ธ์ ๊ฒฝ๋ก์ ์ด๋ฆ์ ๋ฃ์ต๋๋ค.
PARAMETER
์์๋ ๋ชจ๋ธ์ ์ธ๋ถ ์ค์ ์ ํ ์ ์์ต๋๋ค.
temperature
๋ ๋ชจ๋ธ์ด ์ผ๋ง๋ ์ฐฝ์์ ์ผ๋ก ๋ต๋ณํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๋ถ๋ถ์ ๋๋ค. 0~1๊น์ง ์ค์ ํ ์ ์์ผ๋ฉฐ ๋์ ์๋ก ์ฐฝ์์ ์ธ ๋ต๋ณ์ ๋ด๋์ต๋๋ค. ๊ธฐ๋ณธ ๊ฐ์ 0.8์ ๋๋ค.num_ctx
๋ ๊ทธ ์ ์ ๋ต๋ณ์ ์ผ๋ง๋ ๊ธฐ์ตํด ๋ค์ ๋ต๋ณ์ ๋ฐ์ํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๋ถ๋ถ์ ๋๋ค. ๊ฐ์ ๋๊ฒ ์ค์๋ก ํ๋์จ์ด ๋ฐ ์ฑ๋ฅ์ ์ํฅ์ ์ค๋๋ค. ๊ธฐ๋ณธ ๊ฐ์ 2048์ ๋๋ค.num_predict
๋ ๋ชจ๋ธ์ด ๋ต๋ณ์ ์ฌ์ฉํ ์ ์๋ ํ ํฐ์ ์๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ธฐ๋ณธ ๊ฐ์ 128์ ๋๋ค.
์ด ๊ตฌ๋ฌธ์์๋ ๊ทธ ์ธ์๋ ๋ค์ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
SYSTEM
์์๋ ์์คํ
์ ์ญํ ์ ๋ถ์ฌํด ๋ชจ๋ธ์ ๋ต๋ณ์ ์ด๋ ์ ๋ ์ ๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ํํ๋ก๋ ๋ฃ์ ์ ์์ต๋๋ค.
SYSTEM """You are an assistant designed for question-answering tasks. Use the provided pieces of retrieved context to answer the questions accurately. Ensure that your answers are directly relevant to the questions and cite your sources when possible. Keep your responses concise and within three sentences."""
๊ทธ ์ธ TEMPLATE
์ Ollama์์ ์ง์ ํ ํ๋กฌํํธ๋ฅผ ์ํ ํ
ํ๋ฆฟ์ผ๋ก, ์ด๋ ๊ฐ ๋ชจ๋ธ๋ง๋ค ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ธ ์ ๊ณต์์ ์ง์๋ฅผ ๋ฐ๋ฅด๊ฑฐ๋ ๋ฌธ๋ฒ์ ์ถฉ๋ถํ ์ดํดํ๊ณ ๊ณ ์ณ์ผ ํฉ๋๋ค. ์ด์ ๋ํ ๋ฌธ๋ฒ์ ์ด ๋ฌธ์์์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
๋ค์ ์ค์ต์ผ๋ก ๋์๊ฐ, ์ฐ๋ฆฌ์ ๋ชจ๋ธํ์ผ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋ชจ๋ธํ์ผ์ ๋ง๋๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ๋ฌด์์ ์ ๋ฅผ ์ฐฝ์กฐํ๋ ๊ฒ๋ณด๋ค ์กฐ๊ธ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๊ฒ ์ต๋๋ค. ์ฐ์ ํ์ฌ ๋ชจ๋ธ์ ๊ธฐ์ค์ธ llama3:8b
๋ฅผ ๋ด๋ ค๋ฐ์ต๋๋ค.
ํด๋น ๋ชจ๋ธ์์ ์ฌ์ฉํ๊ณ ์๋ ๋ชจ๋ธํ์ผ์ ollama show <๋ชจ๋ธ> --modelfile
๋ช
๋ น์ผ๋ก ์ถ์ถํฉ๋๋ค. ์ฐธ๊ณ ๋ก --modelfile
์ ๋ฃ์ง ์์ผ๋ฉด ์์ํ ์ ๋ณด ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ๋ชจ๋ธํ์ผ์์ ํ์ธ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ ๋ชจ๋ธํ์ผ์ ์๋์ ๊ฐ์ต๋๋ค.
FROM
๋ถ๋ถ์ ๋ณ๊ฒฝํ๊ณ SYSTEM
์ ์์ด์ ์ค๊ตญ์ด๋ก ์์คํ
๋ฉ์์ง๋ฅผ ๋ฃ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ค๊ตญ์ด๋ฅผ ์ถ๊ฐํ์ง ์์ผ๋ฉด ์ค๊ตญ์ด์ ๋ํ ๋ต๋ณ์ด ๋์ค์ง ์๊ฑฐ๋ ์์ด๋ก ๋ต๋ณํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์ด์ ์ธ๋ถ ์ค์ ๊น์ง ๋ชจ๋ ์กฐ์ ํ์ผ๋ ๋ชจ๋ธ์ ์ถ๊ฐํ ์ฐจ๋ก์
๋๋ค. ollama create
๋ช
๋ น์ ์ฌ์ฉํด GGUF๋ก ์์ฑํ ๋ชจ๋ธ์ ์ถ๊ฐํฉ๋๋ค. ์ธ๋ถ ์ค์ ์ ์๋ก ๋ง๋ ๋ชจ๋ธํ์ผ์์ ๊ฐ์ง๊ณ ์ค๋๋ก -f
์ต์
์ ์ฌ์ฉํฉ๋๋ค.
Ollama์ ์ถ๊ฐ๋ ๋ชจ๋ธ์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ถ๊ฐํ ๋ชจ๋ธ์ด ์ ๋๋ก ์ฌ๋ผ์ ์์ต๋๋ค.
5๋จ๊ณ: Ollama์ ์ถ๊ฐ๋ ๋ชจ๋ธ์ K8sGPT ๋ถ์์ ์ฌ์ฉํ๊ธฐ
ํด๋น ๋ชจ๋ธ์ ํ์ฉํด K8sGPT์ ์ง๋ฌธํด ๋ด
์๋ค. ๊ฐ๋ตํ ํ์ฉ์ ์ํด ์ง์ ๋ง๋ run_ollama_n_k8sgpt.sh
๋ช
๋ น์ผ๋ก ์ง๋ฌธ์ ์์ํ์ต๋๋ค. K8sGPT์์ ๋ก์ปฌ AI ๋ชจ๋ธ์ ํ์ฉํ๋ localai ๊ธฐ๋ฅ์ ์์ ์์ฑํ ๊ธ์ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค. (run_ollama_n_k8sgpt.sh
์ ๋ํด์๋ ์์ฒญ์ด ๋ง์ผ๋ฉด ์ถํ์ ์ค๋ช
์ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค. ๊ฐ๋จํ ๋งํ๋ฉด, K8sGPT์ localai ๊ธฐ๋ฅ์ ๋ฐ๋ณตํด ์ฌ์ฉํ๊ธฐ ๋ฒ๊ฑฐ๋ก์ ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.)
์ํ๋ ๋๋ก ์๋ํ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
๋ง์น๋ฉฐ
์ง๊ธ๊น์ง Ollama์ ์กด์ฌํ์ง ์๋ ๋ชจ๋ธ์ ์ถ๊ฐํด K8sGPT์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํ์ธํด ๋ณด์์ต๋๋ค.
๊ฒฐ๊ด๊ฐ์์ ๋ํ๋๋ฏ ์ฌ์ค ๋๋ถ๋ถ์ ๋ชจ๋ธ์ ํ์ด๋ฐ์ด์ ๋ชจ๋ธ(๋ํ์ ์ธ ๊ณต๊ฐ ๋ชจ๋ธ์ llama, gemma, mistral ๋ฑ)์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ข์ ๊ฒฐ๊ณผ(๋ฎ์ ํํ๋ ์ํฐ ๊ฐ)๋ฅผ ๋ง๋ค๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ผ์๋ ์ต๊ทผ K8sGPT์ฒ๋ผ ํน์ ๋ชฉ์ ์ ๊ฐ์ง sLM์ด ์๊ตฌ๋๋ ๋งํผ, ๋ชจ๋ธ์ ์ง์ ๋ถ์ฌ ํ์ฉํด์ผ ํ๋ ์์ ์ด ๊ณง ์ฌ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๋ฐ๋ผ์ ์ด์ ์ฐ๊ด๋ ๊ธฐ์ ๋ค์ ์ดํด๋ณด๊ณ ์ค๋นํ ํ์๊ฐ ์์ต๋๋ค.
์ด๋ฒ ๊ธ์์ ์๊ฐํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก KubeCon China 2024์์ ๋ฐํํ๊ธฐ๋ ํ์ต๋๋ค. ๋ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ ๋ถ์ ๋ฐํ ์์์ ์ดํด๋ณผ ์ ์์ต๋๋ค.