Key Takeaways
- Xinference๋ ํ๋์ API๋ก 30๊ฐ ์ด์์ ๋ชจ๋ธ ํจ๋ฐ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค โ Llama 3, Qwen 3, ChatGLM4, Mistral, ์๋ฒ ๋ฉ ๋ชจ๋ธ, ๋ฆฌ๋ญ์ปค ๋ชจ๋ localhost:9997/v1 ์๋ํฌ์ธํธ๋ฅผ ๊ณต์ ํฉ๋๋ค.
- pip ์ค์น ํ ๋ฒ, CLI ๋ช ๋ น์ด ํ ๋ฒ โ `pip install "xinference[all]"` ํ `xinference-local`๋ก ์น UI๊ฐ ํฌํจ๋ ์๋ฒ๋ฅผ ์์ํ๊ณ , `xinference launch --model-name <name>`์ผ๋ก ์์ ๋ชจ๋ธ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- ์ ํ ๊ฐ๋ฅํ ์ธ ๊ฐ์ง ๋ฐฑ์๋ โ `transformers`(GPU, ํ ์ ๋ฐ๋), `llama.cpp`(CPU + ์์ํ GGUF, GPU ๋ถํ์), `vllm`(๊ณ ์ฒ๋ฆฌ๋ ๋ฉํฐ GPU). ๋ชจ๋ธ๋ณ๋ก ์ ํ ๊ฐ๋ฅํฉ๋๋ค.
- CJK ์์ ์๋ Qwen 3์ ChatGLM4๊ฐ Xinference ์ต์ ์ ์ ํ์ ๋๋ค โ ๋ ๋ชจ๋ธ ๋ชจ๋ ์ฝ 6~7 GB VRAM์์ ์คํ๋๋ฉฐ ์ค๊ตญ์ดยท์ผ๋ณธ์ด ๋ฒค์น๋งํฌ์์ ์์ด ์ ์ฉ ๋ชจ๋ธ ๋๋น ์ฐ์ํ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค.
- ๋ฉํฐ ๋ชจ๋ธ ์๋น, ์๋ฒ ๋ฉยท๋ฆฌ๋ญํน, GPU ํด๋ฌ์คํฐ ์ง์์ด ํ์ํ ๋๋ Xinference๋ฅผ ์ ํํ์ญ์์ค โ Ollama๋ ๋จ์ผ ์ฌ์ฉ์ ๋ฐ์คํฌํ ํธ์์ฑ์์ ์ ๋ฆฌํฉ๋๋ค.
Xinference๋ ๋ฌด์์ด๋ฉฐ ์ด๋ป๊ฒ ์๋ํฉ๋๊น
Xinference(github.com/xorbitsai/inference)๋ Xorbits๊ฐ ๊ฐ๋ฐํ ์คํ์์ค LLM ๋ฐ ๋ฉํฐ๋ชจ๋ฌ ๋ชจ๋ธ ์๋น ํ๋ ์์ํฌ์ ๋๋ค. ๋ถ์ฐ ํด๋ฌ์คํฐ์ฉ ์ํฐํ๋ผ์ด์ฆ ์ถ๋ก ํ๋ซํผ์ผ๋ก ์์ํ์ฌ 2023๋ ์ ์คํ์์ค๋ก ๊ณต๊ฐ๋์์ต๋๋ค. ํต์ฌ ๊ฐ๋ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ชจ๋ธ ์ด๋ฆ์ผ๋ก ๋ฑ๋กํ๋ฉด Xinference๊ฐ ๊ฐ์ค์น๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ ์ ํ ๋ฐฑ์๋๋ฅผ ์ ํํ์ฌ REST API๋ฅผ ๋ ธ์ถํฉ๋๋ค. ๋ชจ๋ธ ๋ก๋ฉ ์ฝ๋๋ฅผ ์ง์ ๋ค๋ฃฐ ํ์๊ฐ ์์ต๋๋ค.
Xinference๋ Llama 3, Qwen 3, ChatGLM4, Mistral ๋ฐ 30๊ฐ ์ด์์ ๋ชจ๋ธ ํจ๋ฐ๋ฆฌ๋ฅผ ๋จ์ผ OpenAI ํธํ API๋ก ๊ธฐ๋ณธ ์ง์ํ๋ ์คํ์์ค ์ถ๋ก ์๋ฒ์ ๋๋ค.
Xinference๋ฅผ ๋ก์ปฌ AI ๋ชจ๋ธ์ฉ ๊ตํ๊ธฐ๋ผ๊ณ ์๊ฐํ์ญ์์ค. ๋ก๋ํ ๋ชจ๋ธ์ ์ด๋ฆ์ผ๋ก ์ง์ ํ๋ฉด ๋ค์ด๋ก๋ํ์ฌ ์์ํ๊ณ , ์ฑ์ OpenAI API์ ๋์ผํ ๋ฐฉ์์ผ๋ก ํต์ ํฉ๋๋ค. ์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ํ์ง ์์ต๋๋ค.
- ๋ชจ๋ธ ๋ ์ง์คํธ๋ฆฌ: 200๊ฐ ์ด์์ ์ฌ์ ๋ฑ๋ก ๋ชจ๋ธ. ๊ฐ์ค์น ๊ฒฝ๋ก๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ ๋์ ์ด๋ฆ(`llama-3.1-instruct`, `qwen2.5-instruct`, `chatglm4`)์ผ๋ก ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- ๋ฐฑ์๋ ์ถ์ํ: ํ๋์ ๋ช ๋ น์ด๋ก transformers, llama.cpp, vLLM ๋ฐฑ์๋ ๊ฐ ์ ํ ๊ฐ๋ฅ โ ๋ฐฑ์๋์ ๋ฌด๊ดํ๊ฒ ๋์ผํ API๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ฉํฐ ๋ชจ๋ธ ๋์ ์คํ: ๋์ผ GPU์์ ํ ์คํธ ์์ฑ์ฉ Llama 3์ RAG์ฉ BGE ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ๋์์ ์คํํ ์ ์์ต๋๋ค.
- ์น UI: localhost:9997์ React ๋์๋ณด๋์์ ์ฝ๋ ์์ฑ ์์ด ๋ชจ๋ธ์ ์คํยท๊ฒ์ฌยท์ข ๋ฃํ ์ ์์ต๋๋ค.
- ํด๋ฌ์คํฐ ๋ชจ๋: ์ํผ๋ฐ์ด์ + ์์ปค ์ํคํ ์ฒ๋ก ์์ปค์์ `xinference start --host 0.0.0.0`์ ์คํํ์ฌ ์ฌ๋ฌ GPU ๋ ธ๋์ ๊ฑธ์ณ ํ์ฅํ ์ ์์ต๋๋ค.
์ง์ ๋ชจ๋ธ ํจ๋ฐ๋ฆฌ: Llama 3, Qwen, ChatGLM, Mistral
์๋ ํ๋ Xinference์์ ๊ฐ์ฅ ๋ง์ด ์์ฒญ๋๋ 7๊ฐ์ง ๋ชจ๋ธ ๊ตฌ์ฑ๊ณผ ๊ฐ๊ฐ์ ์ต์ VRAM ์๊ตฌ ์ฌํญ์ ๋ณด์ฌ์ค๋๋ค. 7๊ฐ์ง ๋ชจ๋ ๋์ผํ ์คํ ๋ช ๋ น์ด ํจํด์ ๊ณต์ ํ๋ฉฐ `--model-name`, `--model-size-in-billions`, ์ ํ์ ์ผ๋ก `--quantization`๋ง ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋๋ค.
Xinference๋ Llama 3.3(8B/70B), Qwen 3(7B/72B), ChatGLM4 9B, Mistral Small v0.3, Mixtral 8x22B๋ฅผ ๊ธฐ๋ณธ ์ง์ํ๋ฉฐ ๊ฐ๊ฐ CLI ๋ช ๋ น์ด ํ ๋ฒ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
VRAM์ GPU์ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค. 6 GB VRAM์ด ํ์ํ ๋ชจ๋ธ์ ์ต์ ๊ทธ ์ด์์ GPU(์: RTX 3060 12 GB ๋๋ RTX 4060 8 GB)๊ฐ ํ์ํฉ๋๋ค. GPU๊ฐ ์๋ค๋ฉด llama.cpp ๋ฐฑ์๋์ Q4 ์์ํ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋๋ต ์ ๋ฐ์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค.
| ๋ชจ๋ธ | ํจ๋ฐ๋ฆฌ | VRAM (Q4) | ๊ถ์ฅ ๋ฐฑ์๋ | ์ ํฉํ ์ฉ๋ |
|---|---|---|---|---|
| llama-3.1-instruct 8B | Meta | ~6 GB | transformers / llama.cpp | ์์ด ๋ฒ์ฉ |
| llama-3.1-instruct 70B | Meta | ~40 GB | vLLM | ๊ณ ํ์ง ์์ด ์ถ๋ ฅ |
| qwen2.5-instruct 7B | Alibaba | ~6 GB | transformers / llama.cpp | ๋ค๊ตญ์ด, CJK, ์ฝ๋ฉ |
| qwen2.5-instruct 72B | Alibaba | ~40 GB | vLLM | ๋๊ท๋ชจ CJK ์์ |
| chatglm4 9B | Zhipu AI | ~7 GB | transformers | ์ค๊ตญ์ด ์ํฐํ๋ผ์ด์ฆ ์์ |
| mistral-instruct-v0.3 7B | Mistral AI | ~5 GB | transformers / llama.cpp | ์ ๋ฝ ์ธ์ด, ํจ์ ํธ์ถ |
| mixtral-instruct-v0.1 8x7B | Mistral AI | ~26 GB | vLLM | ๊ณ ํ์ง ๋ค๊ตญ์ด |
Xinference๋ Llama 3.3์ ์ง์ํฉ๋๊น?
์ง์ํฉ๋๋ค. 8B ๋ณํ์ `--model-name llama-3.1-instruct`์ `--model-size-in-billions 8`์, 70B๋ `70`์ ์ฌ์ฉํ์ญ์์ค. ๋ ๋ชจ๋ธ ๋ชจ๋ ๊ธฐ๋ณธ์ ์ผ๋ก transformers ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, CPU ๋๋ ์ VRAM ํ๊ฒฝ์์๋ `--model-engine llama.cpp`์ `--quantization q4_k_m`์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
Xinference๋ Qwen 3์ ์ง์ํฉ๋๊น?
์ง์ํฉ๋๋ค. Qwen 3 Instruct๋ `qwen2.5-instruct`๋ก ๋ฑ๋ก๋์ด ์์ต๋๋ค. 0.5B, 1.5B, 3B, 7B, 14B, 32B, 72B ํฌ๊ธฐ๊ฐ ๋ชจ๋ ์ ๊ณต๋ฉ๋๋ค. 7B ๋ณํ์ ์ฝ 6 GB VRAM์์ ์คํ๋๋ฉฐ ์ค๊ตญ์ด, ์ผ๋ณธ์ด, ํ๊ตญ์ด, ์์ด๋ฅผ Llama 3.3 8B์ ์ ์ฌํ ํ์ง๋ก ์ฒ๋ฆฌํฉ๋๋ค.
Xinference๋ ChatGLM์ ์ง์ํฉ๋๊น?
์ง์ํฉ๋๋ค. ChatGLM3(`chatglm3`), ChatGLM4(`chatglm4`), ๋น์ ๋ณํ ChatGLM4-Vision(`chatglm4v`)์ด ๋ชจ๋ ๋ฑ๋ก๋์ด ์์ต๋๋ค. ChatGLM4 9B๋ 2026๋ ์ค๊ตญ์ด ์์ ์ ๊ถ์ฅ๋๋ ์ ํ์ ๋๋ค.
Xinference๋ Mistral์ ์ง์ํฉ๋๊น?
์ง์ํฉ๋๋ค. `mistral-instruct-v0.3`(7B)๊ณผ `mixtral-instruct-v0.1`(8x7B MoE)์ด ๋ชจ๋ ๋ฑ๋ก๋์ด ์์ต๋๋ค. ํจ์ ํธ์ถ ๋ฐ JSON ์ถ๋ ฅ์๋ Mistral Small v0.3์ด Xinference์์ ๊ฐ์ฅ ์ข์ ์ํ ๋ชจ๋ธ ์ต์ ์ ๋๋ค.
Xinference ์ค์น: pip ์ค์น ๋ฐ ์๋ฒ ์์
Xinference๋ Python 3.9 ์ด์๊ณผ pip๊ฐ ํ์ํฉ๋๋ค. `[all]` ์ต์ ์ CUDA ์ง์, llama.cpp ๋ฐฑ์๋, transformers ๋ฐฑ์๋๋ฅผ ํ ๋ฒ์ ์ค์นํฉ๋๋ค. CPU ์ ์ฉ ๋จธ์ ์์๋ `pip install xinference`(`[all]` ์์ด)๋ฅผ ์ฌ์ฉํ๊ณ ๋ชจ๋ธ ์คํ ์ `--model-engine llama.cpp`๋ฅผ ์ถ๊ฐํ์ญ์์ค.
`pip install "xinference[all]"`๋ก Xinference๋ฅผ ์ค์นํ๊ณ `xinference-local`๋ก ์๋ฒ๋ฅผ ์์ํ๋ฉด http://localhost:9997์์ ์น UI์ ์ ์ํ ์ ์์ต๋๋ค.
# ์ ์ฒด ์ค์น โ CUDA + transformers + llama.cpp ๋ฐฑ์๋
pip install "xinference[all]"
# CPU ์ ์ฉ ์ค์น (GPU ๋ถํ์)
pip install xinference
# ๋ก์ปฌ ์๋ฒ ์์ (์น UI: http://localhost:9997)
xinference-local
# LAN ์ ๊ทผ์ ์ํ ํน์ ํธ์คํธ ๋ฐ์ธ๋ฉ
xinference-local --host 0.0.0.0 --port 9997Xinference๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด GPU๊ฐ ํ์ํฉ๋๊น?
ํ์ํ์ง ์์ต๋๋ค. llama.cpp ๋ฐฑ์๋(`--model-engine llama.cpp`)๋ฅผ ์ฌ์ฉํ๋ฉด ์์ํ๋ GGUF ๋ชจ๋ธ์ CPU๋ง์ผ๋ก ์คํํ ์ ์์ต๋๋ค. GPU ์ถ๋ก ๋ณด๋ค ์ฑ๋ฅ์ด ๋๋ฆฌ์ง๋ง Python 3.9 ์ด์์ด ์ค์น๋ ๋ชจ๋ ๋จธ์ ์์ ๋์ํฉ๋๋ค.
Xinference๋ฅผ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
`pip install --upgrade xinference`๋ฅผ ์คํํ์ญ์์ค. ํด๋ฌ์คํฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ๊ทธ๋ ์ด๋ ์ ์ GitHub ๋ฆด๋ฆฌ์ค ํ์ด์ง์์ ํธํ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ์ญ์์ค.
Llama 3, Qwen, ChatGLM, Mistral ์คํ ๋ฐฉ๋ฒ
`xinference launch`๋ฅผ ์ฌ์ฉํ์ฌ ๋ฑ๋ก๋ ๋ชจ๋ธ์ ๋ฐฐํฌํ์ญ์์ค. ํจํด์ ํญ์ ๋์ผํฉ๋๋ค. `--model-name`์ผ๋ก ๋ชจ๋ธ ํจ๋ฐ๋ฆฌ๋ฅผ ์ค์ ํ๊ณ , `--model-size-in-billions`์ผ๋ก ํ๋ผ๋ฏธํฐ ์๋ฅผ ์ค์ ํ๋ฉฐ, `--model-engine`์ผ๋ก ๋ฐฑ์๋๋ฅผ ์ ํํฉ๋๋ค. ์คํ ํ Xinference๋ API ํธ์ถ์ ์ฌ์ฉํ๋ ๋ชจ๋ธ UID๋ฅผ ๋ฐํํฉ๋๋ค.
`xinference launch --model-name <name> --model-engine transformers --model-size-in-billions <size>`๋ก ์์ Xinference ๋ชจ๋ธ์ ์คํํ๋ฉด ๋ค์ด๋ก๋ ์๋ฃ ํ ์ ์ด ๋ด์ localhost:9997/v1์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
# Llama 3.3 8B Instruct (GPU, transformers ๋ฐฑ์๋)
xinference launch \
--model-name llama-3.1-instruct \
--model-engine transformers \
--model-size-in-billions 8
# Llama 3.3 8B Instruct (CPU, Q4_K_M ์์ํ)
xinference launch \
--model-name llama-3.1-instruct \
--model-engine llama.cpp \
--model-size-in-billions 8 \
--quantization q4_k_m
# Qwen 3 7B Instruct (GPU)
xinference launch \
--model-name qwen2.5-instruct \
--model-engine transformers \
--model-size-in-billions 7
# ChatGLM4 9B (GPU)
xinference launch \
--model-name chatglm4 \
--model-engine transformers \
--model-size-in-billions 9
# Mistral Small Instruct v0.3 (GPU)
xinference launch \
--model-name mistral-instruct-v0.3 \
--model-engine transformers \
--model-size-in-billions 7
# Mixtral 8x22B Instruct (vLLM ๋ฐฑ์๋, 26 GB ์ด์ VRAM ํ์)
xinference launch \
--model-name mixtral-instruct-v0.1 \
--model-engine vllm \
--model-size-in-billions 46Xinference๊ฐ ์ง์ํ๋ ๋ชจ๋ ๋ชจ๋ธ ๋ชฉ๋ก์ ์ด๋ป๊ฒ ํ์ธํฉ๋๊น?
`xinference registrations --model-type LLM`์ ์คํํ์ฌ ๋ฑ๋ก๋ ๋ชจ๋ LLM ํจ๋ฐ๋ฆฌ๋ฅผ ํ์ธํ๊ฑฐ๋, http://localhost:9997์ ์น UI์์ ๋ชจ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ํ์ญ์์ค.
Xinference์์ ๋ ๊ฐ์ ๋ชจ๋ธ์ ๋์์ ์คํํ ์ ์์ต๋๊น?
๊ฐ๋ฅํฉ๋๋ค. `xinference launch`๋ฅผ ์๋ก ๋ค๋ฅธ ๋ชจ๋ธ ์ด๋ฆ์ผ๋ก ๋ ๋ฒ ์คํํ์ญ์์ค. ๊ฐ ๋ชจ๋ธ์ ๊ณ ์ ํ UID์ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ต๋๋ค. ์ด VRAM ์์ฐ์ด ๋ ๋ชจ๋ธ์ ๋์์ ์์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
OpenAI ํธํ API ์ฌ์ฉ ๋ฐฉ๋ฒ
Xinference์ API๋ OpenAI API์ ๋๋กญ์ธ ๋์ฒด์ ์ ๋๋ค. ์์์ OpenAI ํด๋ผ์ด์ธํธ๋ฅผ `http://localhost:9997/v1`๋ก ์ง์ ํ๊ณ , `api_key`๋ฅผ ๋น ๋ฌธ์์ด์ด ์๋ ์์ ๊ฐ์ผ๋ก ์ค์ ํ ํ, `xinference launch`๊ฐ ๋ฐํํ ๋ชจ๋ธ UID๋ฅผ `model` ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ์ญ์์ค. ๊ธฐ์กด LangChain, LlamaIndex, ๋๋ ์ปค์คํ OpenAI ํด๋ผ์ด์ธํธ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
base_url์ http://localhost:9997/v1๋ก ์ค์ ํ๊ณ ๋ชจ๋ธ ์ด๋ฆ์ model ID๋ก ์ฌ์ฉํ๋ฉด ์์์ OpenAI ํธํ ํด๋ผ์ด์ธํธ๋ฅผ Xinference์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
OpenAI ํธํ API๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ค๋ ์๋ฏธ์ ๋๋ค. GPT-4๋ฅผ ํธ์ถํ๋ ๋์ผํ Python ์ฝ๋๋ก Xinference๋ฅผ ํตํด Llama 3๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. base URL๊ณผ ๋ชจ๋ธ ์ด๋ฆ๋ง ๊ต์ฒดํ๋ฉด ๋ฉ๋๋ค.
from openai import OpenAI
client = OpenAI(
api_key="not-required", # Xinference๋ ๋น ๋ฌธ์์ด์ด ์๋ ๋ชจ๋ ๊ฐ์ ์๋ฝํฉ๋๋ค
base_url="http://localhost:9997/v1"
)
# ์ฑํ
์์ฑ โ Llama 3, Qwen, ChatGLM, Mistral ๋ชจ๋ ๋์ํฉ๋๋ค
response = client.chat.completions.create(
model="llama-3.1-instruct", # ๋ชจ๋ธ ์ด๋ฆ์ UID๋ก ์ฌ์ฉํฉ๋๋ค
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Summarise the GDPR in 3 bullet points."}
]
)
print(response.choices[0].message.content)
# ์๋ฒ ๋ฉ ๋ชจ๋ธ (๋จผ์ bge-base-en-v1.5๋ฅผ ๋ณ๋๋ก xinference launch ํ์ญ์์ค)
embedding = client.embeddings.create(
model="bge-base-en-v1.5",
input="Local LLMs preserve data privacy."
)
print(embedding.data[0].embedding[:5])Xinference๋ ์คํธ๋ฆฌ๋ฐ ์๋ต์ ์ง์ํฉ๋๊น?
์ง์ํฉ๋๋ค. `chat.completions.create` ํธ์ถ์์ `stream=True`๋ก ์ค์ ํ์ญ์์ค. Xinference๋ ๋ชจ๋ ์ง์ ๋ฐฑ์๋์์ ์ค์๊ฐ์ผ๋ก ํ ํฐ์ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
Xinference์ ํจ๊ป LangChain์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๊ฐ๋ฅํฉ๋๋ค. `langchain_openai`์ `ChatOpenAI(base_url="http://localhost:9997/v1", api_key="x", model="llama-3.1-instruct")`๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋ณ๋์ Xinference ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ํ์ง ์์ต๋๋ค.
Xinference vs Ollama vs vLLM: ์ ํ ๊ธฐ์ค
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ธ ๊ฐ์ง ๋ก์ปฌ ์ถ๋ก ํ๋ ์์ํฌ๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค. ์ฃผ์ ์ ์ฝ ์กฐ๊ฑด์ ๊ธฐ์ค์ผ๋ก ์ ํํ์ญ์์ค.
์ฌ๋ฌ ๋ชจ๋ธ ์ ํ(LLM + ์๋ฒ ๋ฉ + ๋ฆฌ๋ญ์ปค)์ ๋์์ ์๋นํ๊ฑฐ๋ ๋ค์ดํฐ๋ธ ChatGLM ์ง์์ด ํ์ํ ๋๋ Xinference๋ฅผ, ๋จ์ผ ์ฌ์ฉ์ ๋ฐ์คํฌํ ํธ์์ฑ์ ์ํ ๋๋ Ollama๋ฅผ ์ ํํ์ญ์์ค.
| ๊ธฐ์ค | Xinference | Ollama | vLLM |
|---|---|---|---|
| ์ต์ ์ฉ๋ | ํ, ๋ฉํฐ ๋ชจ๋ธ, ์๋ฒ ๋ฉ + LLM | ๋จ์ผ ์ฌ์ฉ์ ๋ฐ์คํฌํ, Modelfile ์ํฌํ๋ก | ๊ณ ์ฒ๋ฆฌ๋ GPU ์๋น |
| GPU ํ์ ์ฌ๋ถ | ๋ถํ์ (llama.cpp ๋ฐฑ์๋) | ๋ถํ์ (CPU ๋ชจ๋ ์ง์) | ํ์ (CUDA/ROCm) |
| ๋ชจ๋ธ ์ ํ | ์ฌ๋ฌ ๋ชจ๋ธ ๋์ ์คํ | ํ ๋ฒ์ ํ๋์ ๋ชจ๋ธ (๊ต์ฒด) | ์๋ฒ ์ธ์คํด์ค๋น ํ๋์ ๋ชจ๋ธ |
| ์๋ฒ ๋ฉ ์ง์ | ์ง์ (BGE, E5 ๋ฑ) | ์ง์ (์ ํ์ ) | ๋ฏธ์ง์ (๋ณ๋ ์๋ฒ ๋ฉ ์๋ฒ ํ์) |
| ์น UI | localhost:9997์ ๋ด์ฅ | ์์ (Open WebUI ์ฌ์ฉ) | ์์ |
| ChatGLM ์ง์ | ๊ธฐ๋ณธ ์ง์ (chatglm4) | ์ ํ์ | ์ ํ์ |
Xinference๋ Ollama๋ณด๋ค ์ค์ ์ด ๋ณต์กํฉ๋๊น?
๋ค์ ๋ณต์กํฉ๋๋ค. Ollama๋ ๋จ์ผ ๋ฐ์ด๋๋ฆฌ ๋ค์ด๋ก๋๋ก ์ค์น๋์ง๋ง, Xinference๋ Python๊ณผ pip๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋๊ตฌ ๋ชจ๋ 5๋ถ ์ด๋ด์ ์ค๋น๊ฐ ์๋ฃ๋ฉ๋๋ค. Xinference๋ ์คํ ํ ๋ ํ๋ถํ ๋ฉํฐ ๋ชจ๋ธ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
Xinference๊ฐ vLLM์ ๋์ฒดํ ์ ์์ต๋๊น?
๋จ์ผ ๋จธ์ ์๋น์ ๊ฒฝ์ฐ ๊ฐ๋ฅํฉ๋๋ค. Xinference๋ vLLM์ ๋ฐฑ์๋๋ก ์ฌ์ฉ(`--model-engine vllm`)ํ๋ฉด์ ์น UI์ ๋ชจ๋ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค. ์ฌ๋ฌ GPU ๋ ธ๋์ ๊ฑธ์น ์ต๋ ์์ ์ฒ๋ฆฌ๋์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์ ์ฉ vLLM ๋ฐฐํฌ๊ฐ ์ฌ์ ํ ๋ ๋น ๋ฆ ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Xinference๋ ๋ฌด์์ ๋๊น?
Xinference(Xorbits Inference)๋ OpenAI ํธํ API๋ฅผ ํตํด Llama 3, Qwen, ChatGLM, Mistral ๋ฐ 30๊ฐ ์ด์์ ํจ๋ฐ๋ฆฌ๋ฅผ ๋ก์ปฌ์์ ์คํํ๋ ์คํ์์ค ๋ชจ๋ธ ์๋น ํ๋ ์์ํฌ์ ๋๋ค. GPU, CPU(llama.cpp ๊ฒฝ์ ), ๋ฉํฐ GPU ํด๋ฌ์คํฐ ๋ฐฐํฌ๋ฅผ ์ง์ํฉ๋๋ค.
2026๋ Xinference๊ฐ ์ง์ํ๋ ๋ชจ๋ธ์ ๋ฌด์์ ๋๊น?
Xinference๋ 200๊ฐ ์ด์์ ๋ชจ๋ธ ๊ตฌ์ฑ์ ๋ฑ๋กํ๊ณ ์์ต๋๋ค. 2026๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ชจ๋ธ์ Llama 3.3 8B/70B Instruct, Qwen 3 7B/72B Instruct, ChatGLM4 9B, Mistral Small Instruct v0.3, Mixtral 8x22B Instruct์ ๋๋ค. `xinference registrations --model-type LLM`์ผ๋ก ์ ์ฒด ๋ชฉ๋ก์ ํ์ธํ ์ ์์ต๋๋ค.
Xinference๋ ๋ชจ๋ธ ๊ฐ์ค์น๋ฅผ ์ด๋ป๊ฒ ๋ค์ด๋ก๋ํฉ๋๊น?
๊ฐ ๋ชจ๋ธ์ ๋ํด ์ฒ์ `xinference launch`๋ฅผ ์คํํ๋ฉด Xinference๊ฐ Hugging Face ๋๋ ModelScope(์ค์ ๊ฐ๋ฅ)์์ ๊ฐ์ค์น๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค. ๊ฐ์ค์น๋ ๋ก์ปฌ์ ์บ์๋์ด ์ดํ ์คํ ์์๋ ์ฆ์ ์์๋ฉ๋๋ค. `XINFERENCE_HOME` ํ๊ฒฝ ๋ณ์๋ก ์บ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
Xinference๋ Windows์์ ๋์ํฉ๋๊น?
๋์ํฉ๋๋ค. Python 3.9 ์ด์์์ pip๋ก ์ค์นํ ์ ์์ต๋๋ค. llama.cpp ๋ฐฑ์๋๋ ์ถ๊ฐ ์์กด์ฑ ์์ด Windows CPU์์ ๋์ํฉ๋๋ค. Windows์์ GPU ์ง์์ด ํ์ํ ๊ฒฝ์ฐ Xinference ์ค์น ์ ์ CUDA 12.x์ ํด๋น PyTorch ํ ์ ์ค์นํ์ญ์์ค.
Xinference๋ฅผ RAG์ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ฌ์ฉํ ์ ์์ต๋๋ค. LLM๊ณผ ํจ๊ป BGE ๋๋ E5 ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ์คํ(`xinference launch --model-name bge-base-en-v1.5 --model-type embedding`)ํ์ญ์์ค. ๋ ๋ชจ๋ธ์ ๋์ผํ API ์๋ํฌ์ธํธ๋ฅผ ๊ณต์ ํฉ๋๋ค. RAG ํ์ดํ๋ผ์ธ์ ์ธ๋ฑ์ฑ์๋ ์๋ฒ ๋ฉ ์๋ํฌ์ธํธ๋ฅผ, ์์ฑ์๋ ์ฑํ ์๋ํฌ์ธํธ๋ฅผ ํธ์ถํ๋ฉด ๋ฉ๋๋ค.