Ollama เทียบกับ vLLM เลือกเซิร์ฟเวอร์ LLM อย่างไร
เลือก Ollama สำหรับผู้ใช้รายเดียวและเครื่อง CPU หรือเลือก vLLM สำหรับ GPU และงานหลายคำขอ พร้อมคำสั่งจริงและข้อควรรู้เรื่อง API ที่เข้ากันได้
Ollama เทียบกับ vLLM ในย่อหน้าเดียว
Ollama เป็นตัวจัดการโมเดลที่มีเซิร์ฟเวอร์ในตัว โดยจะดาวน์โหลดน้ำหนักโมเดลที่ทำ quantization แล้ว โหลดน้ำหนักเหล่านั้น และตอบคำขอที่ 127.0.0.1:11434 โดยใช้ CPU หากเครื่องมีเพียง CPU เท่านั้น ส่วน vLLM เป็นเอนจินสำหรับเพิ่มอัตราการประมวลผล โดยทำให้ GPU ทำงานเต็มประสิทธิภาพด้วยการประมวลผลคำขอหลายรายการพร้อมกัน และไม่เหมาะสำหรับเครื่องที่ไม่มี GPU นี่คือเกณฑ์ตัดสินใจทั้งหมด การสนทนาของบุคคลหนึ่งคนกับผู้ช่วยภายในเครื่องเป็นงานของ Ollama ส่วนแอปพลิเคชันที่ให้บริการแก่ทีมเป็นงานของ vLLM
ทั้งสองระบบรองรับ HTTP API ที่เข้ากันได้กับ OpenAI ดังนั้นโค้ดฝั่งไคลเอ็นต์จึงย้ายระหว่างทั้งสองระบบได้ด้วยการเปลี่ยน base URL API ไม่ใช่ข้อแตกต่าง ข้อแตกต่างคือสิ่งที่เกิดขึ้นเมื่อมีคำขอที่สองเข้ามา ขณะที่คำขอแรกยังสร้างโทเค็นไม่เสร็จ
Ollama คืออะไรจริง ๆ
Ollama เป็นชั้นอำนวยความสะดวก โดยรวม model registry (ollama pull llama3.1:8b), ที่จัดเก็บ weights ในเครื่อง, chat prompt, บริการ systemd และ HTTP API ไว้ในคำสั่งติดตั้งเดียว โมเดลที่ Ollama ให้บริการเป็นไฟล์ GGUF ซึ่งโดยปกติผ่านการทำ quantization แบบ 4-bit นี่จึงเป็นเหตุผลที่โมเดลขนาด 7B หรือ 8B ใช้พื้นที่ดิสก์ประมาณ 5 GB แทนที่จะเป็น 16 GB การทำ quantization ทำให้สามารถประมวลผล inference ด้วย CPU ได้
runner ของ Ollama สร้างอยู่บน llama.cpp ซึ่งเป็นไลบรารี inference ภาษา C++ ที่ทำให้การทำ quantization ของ GGUF ใช้งานได้จริงบนฮาร์ดแวร์ทั่วไป ภายหลัง Ollama ได้เพิ่ม engine ของตนเองสำหรับ model family รุ่นใหม่บางกลุ่ม แต่ llama.cpp ยังคงเป็นพื้นฐานของบริการส่วนใหญ่ที่ Ollama ให้บริการ ดังนั้นเมื่อมีการเปรียบเทียบ Ollama กับ llama.cpp โดยมากจึงเป็นการเปรียบเทียบชั้นด้านความสะดวกในการใช้งานกับส่วนประกอบที่ชั้นดังกล่าวครอบอยู่
การออกแบบมุ่งเป้าสำหรับผู้ใช้ 1 คน ณ July 2026 ค่าเริ่มต้นของ OLLAMA_NUM_PARALLEL คือ 1 ซึ่งหมายความว่า 1 โมเดลจะประมวลผล 1 คำขอในแต่ละครั้ง ส่วนคำขออื่นจะรออยู่ในคิวที่รองรับ 512 รายการโดยค่าเริ่มต้น (OLLAMA_MAX_QUEUE) คุณสามารถเพิ่มค่าการประมวลผลแบบขนานได้ และหัวข้อด้านล่างจะอธิบายว่าการตั้งค่านี้มีต้นทุนอย่างไร หากคุณยังไม่เคยเรียกใช้ Ollama ให้เริ่มจาก การโฮสต์ Ollama บน VPS และปิดพอร์ต 11434 เนื่องจาก API ไม่มีการยืนยันตัวตนใด ๆ
vLLM คืออะไรในทางปฏิบัติ
vLLM เป็นเซิร์ฟเวอร์สำหรับการอนุมานเท่านั้น ไม่ได้ทำหน้าที่อื่น ไม่จัดการไลบรารีโมเดล ไม่มีพรอมต์แชต และจะไม่ดาวน์โหลดโมเดลให้คุณขณะรับคำขอ คุณระบุ repository ของ Hugging Face ตอนเริ่มทำงาน จากนั้นระบบจะโหลดโมเดลดังกล่าวเพียงโมเดลเดียวและให้บริการจนกว่าคุณจะหยุดโปรเซส
สิ่งที่ได้จากการออกแบบที่จำกัดขอบเขตนี้คืออัตราการประมวลผลสูง กลไก 2 อย่างเป็นตัวขับเคลื่อนการทำงาน PagedAttention จัดเก็บ KV cache (แคชคีย์-ค่า ซึ่งเป็นสถานะของ attention ในแต่ละโทเคนที่โมเดลเก็บไว้สำหรับคำขอที่กำลังทำงานแต่ละรายการ) ในบล็อกขนาดคงที่ เช่นเดียวกับการแบ่งหน้า memory ของระบบปฏิบัติการ คำขอจึงไม่จำเป็นต้องจองพื้นที่ต่อเนื่องขนาดใหญ่ตามกรณีที่ต้องใช้พื้นที่สูงสุดอีกต่อไป ทำให้ memory ที่เคยถูกจองไว้แต่ไม่ได้ใช้งานสามารถนำมาใช้กับคำขอที่ทำงานพร้อมกันได้มากขึ้น Continuous batching ทำให้คำขอใหม่เข้าร่วม batch ที่กำลังทำงานได้ในขั้นตอนการถอดรหัสถัดไป โดยไม่ต้องรอให้ batch ปัจจุบันทำงานเสร็จ ลำดับที่เสร็จแล้วจะออกจาก batch ทันที และระบบจะเติมคำขอใหม่เข้ามาแทนที่
ผลในทางปฏิบัติคือ เมื่อใช้ GPU เดียว การเพิ่มจำนวนผู้ใช้พร้อมกันจาก 1 เป็น 30 จะเพิ่มอัตราการประมวลผลรวมเป็นโทเคนต่อวินาทีอย่างมาก ขณะที่ความเร็วต่อผู้ใช้ลดลงน้อยกว่าที่คาดไว้มาก ภายใต้ค่าเริ่มต้นของ Ollama การเพิ่มจำนวนผู้ใช้จาก 1 เป็น 30 เพียงทำให้คนอีก 29 คนต้องรอ
การทำงานแบบ continuous batching คือความแตกต่างทั้งหมด
ลองพิจารณาคำขอ 5 รายการที่ส่งถึงแต่ละเซิร์ฟเวอร์พร้อมกันบนฮาร์ดแวร์ที่เหมือนกัน
Ollama ที่ใช้การตั้งค่าเริ่มต้นจะประมวลผลคำขอที่หนึ่งจนเสร็จ จากนั้นจึงประมวลผลคำขอที่สองต่อไปตามลำดับ ผู้เรียกคำขอที่ห้าต้องรอการสร้างผลลัพธ์ครบ 4 รอบ อัตราการประมวลผลรวมจึงใกล้เคียงกับความเร็วของการสร้างผลลัพธ์เพียง 1 รอบ เพราะโปรเซสเซอร์ทำงานกับลำดับข้อมูลเพียง 1 ลำดับในแต่ละครั้ง
vLLM จะถอดรหัสทั้ง 5 รายการภายในการประมวลผลไปข้างหน้าครั้งเดียว การสร้างโทเค็น 1 รายการสำหรับลำดับข้อมูล 5 ลำดับมีต้นทุนสูงกว่าการสร้างโทเค็น 1 รายการสำหรับลำดับข้อมูล 1 ลำดับเพียงเล็กน้อย เพราะส่วนที่ใช้ต้นทุนสูงคือการอ่านน้ำหนักของโมเดลจากหน่วยความจำ และการอ่านนี้ใช้ร่วมกันได้กับทั้ง batch ข้อเท็จจริงด้านแบนด์วิดท์หน่วยความจำนี้เป็นเหตุผลเดียวกับที่การอนุมานด้วย CPU ทำงานช้า กล่าวคือ ต้นทุนหลักอยู่ที่การย้ายข้อมูลน้ำหนัก ไม่ใช่การคำนวณทางคณิตศาสตร์
คุณสามารถตั้งค่า OLLAMA_NUM_PARALLEL=4 เพื่อให้ได้ประโยชน์บางส่วนจากวิธีนี้ ต้นทุนคือหน่วยความจำ แต่ละ parallel slot ต้องมี KV cache ของตัวเอง และ Ollama จะแบ่ง context window ให้กับ slot เหล่านี้ ดังนั้นคำขอแบบขนาน 4 รายการที่ใช้โมเดลซึ่งกำหนดไว้ที่ 8192 โทเค็น จะเหลือ context สำหรับแต่ละคำขอ 2048 โทเค็น paged cache ของ vLLM ช่วยหลีกเลี่ยงข้อแลกเปลี่ยนนี้ เพราะระบบจะจัดสรรบล็อกให้กับคำขอตามการเพิ่มขนาดจริงของคำขอ
ติดตั้งและให้บริการด้วย Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.1:8b
ollama run --verbose llama3.1:8b "Write two sentences about Linux."สคริปต์ติดตั้งจะสร้างผู้ใช้ระบบ ollama ติดตั้งไบนารี และลงทะเบียน ollama.service ซึ่งผูกกับ 127.0.0.1:11434 บรรทัด eval rate ที่พิมพ์โดย --verbose คือจำนวนโทเค็นต่อวินาทีจริงบนเครื่องนั้น ให้ยึดค่านี้มากกว่าตัวเลขที่เผยแพร่ไว้
หากต้องการเพิ่มความสามารถในการประมวลผลพร้อมกัน ให้ใช้ drop-in ของ systemd เพื่อไม่ให้การอัปเกรดเขียนทับการเปลี่ยนแปลงนี้:
sudo systemctl edit ollama.service[Service]
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_KEEP_ALIVE=30m"sudo systemctl restart ollama
ollama psollama ps แสดงสิ่งที่โหลดอยู่ และคอลัมน์ PROCESSOR ระบุค่าที่เกิดขึ้นจริง 100% CPU หมายความว่าไม่มีการใช้ GPU ซึ่งเป็นคำอธิบายที่ตรงไปตรงมาสำหรับรายงานส่วนใหญ่ที่ระบุว่า Ollama ทำงานช้า
ติดตั้งและให้บริการด้วย vLLM
vLLM ต้องใช้ Linux และ Python 3.10 ถึง 3.13 ให้ติดตั้งใน virtual environment ของตนเอง เนื่องจากแพ็กเกจนี้จะติดตั้ง PyTorch รุ่นที่กำหนดไว้:
uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --torch-backend=autoจากนั้นให้เริ่มให้บริการโมเดล ชื่อนี้คือรหัส repository ของ Hugging Face ไม่ใช่แท็กแบบย่อ:
vllm serve Qwen/Qwen2.5-1.5B-Instructการเริ่มทำงานครั้งแรกใช้เวลานาน เนื่องจากระบบจะดาวน์โหลด weights แล้วทำ profiling GPU เพื่อคำนวณว่ารองรับ KV cache blocks ได้กี่รายการ ระบบจะรับการเชื่อมต่อที่ port 8000 ให้ตรวจสอบก่อนเขียนโค้ด client:
curl http://localhost:8000/v1/models
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "Qwen/Qwen2.5-1.5B-Instruct", "messages": [{"role": "user", "content": "Who won the world series in 2020?"}]}'หากมี Docker อยู่ในเครื่องแล้ว official image จะช่วยหลีกเลี่ยงการจัดการ dependency ของ CUDA:
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=$HF_TOKEN" \
-p 8000:8000 \
--ipc=host \
vllm/vllm-openai:latest \
--model Qwen/Qwen3-0.6B--ipc=host เป็นสิ่งจำเป็น ไม่ใช่ตัวเลือกประกอบ: PyTorch ส่ง tensors ระหว่าง processes ผ่าน shared memory และการจัดสรร shared memory เริ่มต้นของ Docker มีขนาดเล็กเกินไปสำหรับการทำ inference แบบ tensor-parallel
flags ที่สำคัญที่สุดในการใช้งานจริง ได้แก่ --max-model-len (context window ที่คุณยอมจ่ายทรัพยากรให้), --gpu-memory-utilization (สัดส่วนของ GPU ที่ vLLM ใช้ได้ โดยมีค่าเริ่มต้นเป็น 0.92 ณ July 2026), --tensor-parallel-size สำหรับแบ่งโมเดลหนึ่งรายการไปยัง GPUs หลายตัว และ --api-key
การยืนยันตัวตนใน vLLM ใช้แฟล็กเดียว ส่วน Ollama ไม่มีการยืนยันตัวตน
vLLM จะบังคับใช้ bearer token หากคุณกำหนดค่าไว้:
vllm serve Qwen/Qwen2.5-1.5B-Instruct --api-key token-abc123ค่าเดียวกันนี้สามารถมาจากตัวแปรสภาพแวดล้อม VLLM_API_KEY ได้ คำขอที่ไม่มีค่านี้จะได้รับ HTTP 401 อย่างไรก็ตาม นี่ยังไม่ใช่เหตุผลให้เปิดเผยพอร์ต 8000 บนอินเทอร์เฟซสาธารณะ เนื่องจาก vLLM ไม่มีการจำกัดอัตรา และ token ใน HTTP แบบไม่เข้ารหัสสามารถถูกอ่านระหว่างการส่งข้อมูลได้ แต่หมายความว่าเซิร์ฟเวอร์มีแนวคิดเกี่ยวกับผู้เรียกใช้งาน
Ollama ไม่มีการยืนยันตัวตนใดๆ ไม่มี key ไม่มีการเข้าสู่ระบบ และไม่มี allow-list ทุก process ที่เข้าถึง 11434 ได้สามารถเรียกใช้ ดึงข้อมูล หรือลบโมเดลได้ ให้ทำงานบน loopback และเข้าถึงผ่าน WireGuard VPN ที่คุณโฮสต์เอง หรือผ่าน reverse proxy ที่มีการยืนยันตัวตนและทำหน้าที่ยุติ TLS (transport layer security)
ฮาร์ดแวร์: แต่ละรายการต้องใช้ทรัพยากรใด
Ollama ทำงานบน CPU โมเดลที่ทำ quantization แบบ 4-bit ใช้ RAM ประมาณครึ่งกิกะไบต์ต่อพารามิเตอร์ 1 พันล้านรายการ และต้องใช้หน่วยความจำเพิ่มประมาณ 1 กิกะไบต์สำหรับ runtime รวมถึงหน่วยความจำเพิ่มเติมสำหรับ context ดังนั้นโมเดล 3B ต้องมีหน่วยความจำว่างประมาณ 4 GB และโมเดล 8B ต้องมีประมาณ 8 GB ความเร็วบน vCPU ที่ใช้ร่วมกันอยู่ที่ระดับหลักหน่วยถึงหลักสิบต้น ๆ tokens ต่อวินาที ข้อจำกัดนี้เกิดจาก bandwidth ของหน่วยความจำ ไม่ใช่การตั้งค่าผิด และไม่มี flag ใดแก้ไขได้
vLLM ออกแบบมาให้ใช้ GPU เส้นทางเริ่มต้นให้บริการ weights ที่ไม่ได้ทำ quantization ด้วยความละเอียด 16-bit ซึ่งใช้หน่วยความจำประมาณ 2 GB ต่อพารามิเตอร์ 1 พันล้านรายการ โมเดล 8B จึงต้องใช้ video memory ประมาณ 16 GB สำหรับ weights เพียงอย่างเดียว ก่อนรวม KV cache ซึ่งจำเป็นต่อ concurrency ที่ติดตั้ง vLLM เพื่อรองรับ บนการ์ด 24 GB จะยังเหลือพื้นที่สำหรับ cache เพียงพอต่อการใช้งาน บนการ์ด 16 GB จะไม่เพียงพอ ดังนั้นต้องเลือกโมเดลขนาดเล็กลง หรือส่ง --quantization พร้อม checkpoint ที่ทำ quantization แล้ว มี backend สำหรับ CPU แต่ standard wheels ไม่ได้ build มาสำหรับ backend ดังกล่าว และทำให้เหตุผลหลักในการใช้ vLLM หายไป
ดังนั้น คำถามด้านฮาร์ดแวร์จึงมักเป็นตัวกำหนดคำตอบด้านซอฟต์แวร์ หากไม่มี GPU ให้ใช้ Ollama หาก GPU ที่เช่ามาใช้ utilization เพียง 5 เปอร์เซ็นต์เนื่องจากคำขอถูกประมวลผลแบบเรียงลำดับ ให้ใช้ vLLM
แบบใดเหมาะกับภาระงานของคุณ
- ผู้ใช้ 1 คน, CPU VPS, การร่างและสรุปเนื้อหา: Ollama ความเร็วอยู่ในระดับยอมรับได้ และไม่มีตัวเลือกอื่นที่ตั้งค่าได้ง่ายกว่านี้
- ผู้ช่วยเขียนโค้ด หรือ MCP server ที่เชื่อมเครื่องมือของคุณเข้ากับโมเดลภายในเครื่อง, ซึ่งมีเพียงคุณที่เรียกใช้: Ollama การทำงานพร้อมกัน 1 งานคือภาระงานจริง
- การเปรียบเทียบโมเดล 5 แบบในสัปดาห์นี้: Ollama การดาวน์โหลดและลบโมเดลที่มี tag ตรงกับความสามารถของ Ollama ขณะที่ vLLM ต้อง restart process สำหรับแต่ละโมเดล
- แอปภายใน, ผลิตภัณฑ์แชต หรือ retrieval pipeline ที่มีผู้ใช้จริง: vLLM นี่คือกรณีที่การทำ batching ช่วยให้ต้นทุน GPU คุ้มค่า
- งานแบบ batch ที่ให้คะแนนเอกสาร 100,000 ฉบับข้ามคืน: vLLM โดยใช้
--max-num-seqsระดับสูง Throughput เป็นตัวชี้วัดเดียวที่สำคัญ และ latency ต่อเอกสารไม่มีความสำคัญ - แพลตฟอร์ม agent ที่มี AI agent แบบ self-hosted หลายตัวเรียกใช้โมเดลพร้อมกัน: vLLM เนื่องจาก traffic ของ agent มีลักษณะพุ่งขึ้นเป็นช่วงๆ และทำงานแบบขนานโดยธรรมชาติ
โหมดความล้มเหลว พร้อมข้อความที่คุณจะพบ
vLLM ไม่ยอมเริ่มทำงานและแสดงข้อผิดพลาดเกี่ยวกับ KV cache ข้อความจะแสดงตัวเลขทั้งสองค่า:
ValueError: The model's max seq len (32768) is larger than the maximum number of tokens that can be stored in KV cache (8192). Try increasing gpu_memory_utilization or decreasing max_model_len when initializing the engine.โมเดลกำหนดหน้าต่างบริบทให้ใหญ่กว่าหน่วยความจำที่เหลือหลังจากโหลด weights แล้ว ลดค่าด้วย --max-model-len 8192 หรือเพิ่มค่า --gpu-memory-utilization หากไม่มีสิ่งอื่นใช้การ์ดอยู่ การเพิ่มการใช้หน่วยความจำเกินประมาณ 0.95 มักเปลี่ยนจากข้อผิดพลาดขณะเริ่มต้นเป็นการหยุดทำงานภายหลังด้วยข้อผิดพลาด CUDA out-of-memory เมื่อมีโหลด ซึ่งเป็นกรณีที่รุนแรงกว่า
Ollama แสดง Killed ระหว่างการสร้างผลลัพธ์ Linux out-of-memory killer หยุดกระบวนการ เพราะโมเดลต้องใช้ RAM มากกว่าที่เครื่องมี ตรวจสอบด้วย sudo dmesg | grep -i oom วิธีแก้คือใช้โมเดลที่มีขนาดเล็กลงหรือ quantize มากขึ้น ไม่ใช่การปรับค่า
Ollama ตอบสนองได้ตามปกติเมื่อทำงานเพียงลำพัง แต่หยุดค้างเมื่อมีโหลด จะไม่พบข้อผิดพลาดในที่ใด คำขอใช้เวลานานขึ้นตามจำนวนผู้เรียกใช้ เพราะ OLLAMA_NUM_PARALLEL=1 ทำให้คำขอทำงานแบบอนุกรม เพิ่มค่าดังกล่าวและยอมรับบริบทต่อคำขอที่เล็กลง หรือย้าย workload ไปยัง vLLM
vLLM ส่งคืน 401 ทุกครั้งที่เรียกใช้ คุณเริ่มทำงานด้วย --api-key แต่ client ไม่ได้ส่ง header Authorization ไลบรารี OpenAI client ส่วนใหญ่จะส่งค่าที่คุณกำหนดเป็น key ดังนั้นให้กำหนดค่าที่จุดนั้น แทนการลบ flag
vLLM แจ้งว่าไม่พบโมเดล Ollama จะ pull โมเดลเมื่อจำเป็น แต่ vLLM ไม่ทำเช่นนั้น ฟิลด์ model ใน request body ต้องตรงกับ repository id ที่ใช้เริ่มทำงาน หรือค่าของ --served-model-name หากคุณกำหนดค่าไว้ ตรวจสอบสตริงที่ถูกต้องด้วย curl http://localhost:8000/v1/models
การใช้งานทั้งสองอย่างเป็นแนวทางที่เหมาะสม
ทั้งสองอย่างไม่ได้ทดแทนกัน การจัดวางที่พบได้ทั่วไปคือใช้ vLLM บนอินสแตนซ์ GPU เพื่อให้บริการแอปพลิเคชัน และใช้ Ollama บน VPS ทั่วไปที่อยู่ข้างกันสำหรับสคริปต์ภายในเครื่อง งาน cron และการทดลองรุ่นรีลีสใหม่ ทั้งสองมี endpoint ที่เข้ากันได้กับ OpenAI จึงใช้ไลบรารีไคลเอ็นต์เดียวกันได้ และสลับ base URL เพื่อเลือกใช้งานแต่ละรายการ การควบคุมต้นทุนมีความสำคัญกว่าการเลือก engine ใด engine หนึ่งในกรณีนี้ เพราะ GPU ที่ไม่มีงานใช้งานยังมีค่าใช้จ่ายเท่ากับ GPU ที่กำลังทำงาน และ การควบคุมต้นทุนของ agent และ inference ให้คาดการณ์ได้ เป็นแนวทางแยกต่างหากจากการเลือก server
FAQ
vLLM เร็วกว่า Ollama หรือไม่
สำหรับคำขอเดียวบน GPU เดียวกัน ความแตกต่างมีไม่มาก เนื่องจากทั้งสองระบบคำนวณแบบเดียวกัน แต่เมื่อมีคำขอพร้อมกันจำนวนมาก vLLM จะทำงานได้เร็วกว่าอย่างชัดเจน เนื่องจาก continuous batching จะถอดรหัสทุกลำดับที่กำลังทำงานภายในการประมวลผลไปข้างหน้าเพียงครั้งเดียว ขณะที่การทำงานเริ่มต้นของ Ollama จะประมวลผลทีละรายการ สำหรับเครื่องที่ใช้เฉพาะ CPU คำถามนี้ไม่เกี่ยวข้อง เพราะ Ollama ทำงานบน CPU ได้ แต่ vLLM แทบไม่สามารถทำงานในลักษณะดังกล่าวได้
vLLM ทำงานโดยไม่มี GPU ได้หรือไม่
ไม่เหมาะสำหรับการใช้งานจริง โดยทั่วไป wheels มาตรฐานรองรับ GPU ของ NVIDIA หรือ AMD และเหตุผลหลักที่มี vLLM ซึ่งคือการทำให้ accelerator ทำงานเต็มประสิทธิภาพด้วยคำขอแบบ batch จะไม่เกิดขึ้นบน CPU มี backend สำหรับ CPU เพื่อใช้ในการพัฒนา สำหรับการอนุมานจริงบน CPU ให้ใช้ Ollama หรือ llama.cpp โดยตรง
Ollama และ llama.cpp แตกต่างกันอย่างไร
llama.cpp คือไลบรารีสำหรับการอนุมาน และ GGUF คือรูปแบบ weights ที่ผ่านการ quantize ของไลบรารีนี้ runner ของ Ollama สร้างอยู่บน llama.cpp และเพิ่มส่วนที่ llama.cpp ให้ผู้ใช้จัดการเอง ได้แก่ model registry การดาวน์โหลดอัตโนมัติ server ที่ทำงานประจำ systemd unit และ endpoint ที่เข้ากันได้กับ OpenAI Ollama ได้เพิ่ม engine ของตนเองสำหรับ model family รุ่นใหม่บางรายการ ดังนั้นองค์ประกอบภายในของทั้งสองระบบจึงไม่เหมือนกันอีกต่อไป
vLLM ต้องใช้หน่วยความจำ GPU เท่าใดสำหรับโมเดล 8B
ที่ความแม่นยำ 16-bit เฉพาะ weights จะใช้พื้นที่ประมาณ 16 GB หรือประมาณ 2 GB ต่อพารามิเตอร์หนึ่งพันล้านรายการ และต้องเผื่อพื้นที่เพิ่มเติมสำหรับ KV cache ด้วย การ์ดขนาด 24 GB จึงใช้งานได้อย่างสบาย การ์ดขนาด 16 GB จำเป็นต้องใช้ checkpoint ที่ผ่านการ quantize หรือใช้โมเดลที่มีขนาดเล็กลง vLLM จะใช้สัดส่วนหนึ่งของหน่วยความจำบนการ์ดตามค่าที่กำหนดโดย --gpu-memory-utilization ซึ่งมีค่าเริ่มต้นเป็น 0.92 ณ เดือน July 2026
จำเป็นต้องแก้ไขโค้ดของแอปพลิเคชันเพื่อสลับระหว่างสองระบบหรือไม่
โดยทั่วไปให้เปลี่ยนเฉพาะ base URL, API key และชื่อโมเดล Ollama ให้บริการพื้นผิวที่เข้ากันได้กับ OpenAI ที่ http://127.0.0.1:11434/v1 และไม่ตรวจสอบ key ขณะที่ vLLM ให้บริการที่ http://localhost:8000/v1 และจะบังคับใช้ key หากคุณกำหนดไว้ ชื่อโมเดลมีรูปแบบแตกต่างกัน โดย Ollama ใช้ llama3.1:8b ส่วน vLLM ใช้ repository id แบบเต็ม เช่น Qwen/Qwen2.5-1.5B-Instruct