SSD Nodes Learn Hosting plans →
คู่มือ Matt Connorโดย Matt Connor

วิธีนำเข้าโมเดล GGUF เข้าสู่ Ollama อย่างละเอียด

เรียนรู้วิธีนำเข้าไฟล์ .gguf จาก Hugging Face หรือไฟล์ในเครื่องเข้าสู่ Ollama พร้อมวิธีแก้ไขปัญหา Chat Template ไม่ตรงกันที่ทำให้โมเดลตอบกลับเป็นข้อความผิดพลาด

สองวิธีในการนำเข้าโมเดล GGUF เข้าสู่ Ollama

มีสองวิธีในการนำเข้าโมเดล GGUF เข้าสู่ Ollama โดยวิธีที่เหมาะสมจะขึ้นอยู่กับตำแหน่งของไฟล์ในขณะนี้ หากโมเดลอยู่ใน repository ของ Hugging Face คำสั่ง ollama run เพียงคำสั่งเดียวจะดึงและรันโมเดลนั้นได้โดยไม่ต้องใช้ Modelfile หากไฟล์ .gguf อยู่บนดิสก์ของเซิร์ฟเวอร์คุณแล้ว ให้เขียน Modelfile สองบรรทัดแล้วรัน ollama create

ทั้งสองวิธีจะให้ผลลัพธ์เหมือนกัน คือโมเดลที่มีชื่ออยู่ในไลบรารี Ollama ในเครื่องของคุณ ซึ่ง ollama run และ Ollama API สามารถให้บริการได้ ให้ใช้วิธีแรกเมื่อมีผู้อื่นเผยแพร่ไฟล์นั้นไว้ และใช้วิธีที่สองเมื่อคุณทำ quantization โมเดลด้วยตนเอง เมื่อไฟล์ถูกส่งมาผ่าน scp หรือ rsync หรือเมื่อเครื่องไม่สามารถเชื่อมต่อกับ Hugging Face ได้

ไฟล์ GGUF เป็นไฟล์ไบนารีหนึ่งไฟล์ที่รวม weights, tokenizer และ metadata ของโมเดลไว้ด้วยกัน ซึ่งเป็นรูปแบบที่ llama.cpp อ่านได้ และเนื่องจาก Ollama สร้างขึ้นบนพื้นฐานของ llama.cpp จึงทำให้โมเดลแบบเปิดเกือบทุกตัวมีเวอร์ชัน GGUF ที่ชุมชนแปลงไว้ให้ Ollama ยังสามารถนำเข้าไดเรกทอรีของ weights แบบ .safetensors ได้เช่นกัน แต่เป็นคนละขั้นตอนกัน โดยส่วนที่เกี่ยวกับ --quantize ด้านล่างจะแสดงตำแหน่งที่เหมาะสมสำหรับการใช้งาน

เนื้อหาทั้งหมดด้านล่างนี้ตั้งสมมติฐานว่ามีการติดตั้ง Ollama และบริการกำลังทำงานอยู่ หากยังไม่ได้ติดตั้ง ให้เริ่มจาก การติดตั้ง Ollama บน VPS แล้วจึงกลับมาดำเนินการต่อ ให้รัน ollama list ก่อน หากคำสั่งแสดงตารางข้อมูล (แม้จะเป็นตารางว่าง) แทนที่จะเป็นข้อผิดพลาดในการเชื่อมต่อ แสดงว่าเซิร์ฟเวอร์พร้อมใช้งานและขั้นตอนที่เหลือในคู่มือนี้จะสามารถทำได้ตามปกติ

เส้นทางที่หนึ่ง: รัน GGUF จาก Hugging Face โดยไม่ต้องใช้ Modelfile

Ollama สามารถดึงไฟล์ GGUF โดยตรงจาก repository ของ Hugging Face ได้ คำสั่งที่ใช้คือพาธของ repository โดยมี prefix เป็น hf.co/:

ollama run hf.co/{username}/{repository}

ทั้ง hf.co และ huggingface.co สามารถใช้เป็นชื่อโดเมนได้ ตัวอย่างจริงจากเอกสารประกอบของ Hugging Face:

ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF

การรันครั้งแรกจะเป็นการดาวน์โหลดไฟล์ ดังนั้น prompt สำหรับแชทจะไม่ปรากฏจนกว่าการดาวน์โหลดจะเสร็จสิ้น หลังจากนั้นโมเดลจะถูกเก็บไว้ใน library ของคุณและเริ่มทำงานได้อย่างรวดเร็ว ให้เปิด shell ที่สองแล้วรัน ollama list เพื่อดูชื่อที่โมเดลถูกจัดเก็บไว้ ชื่อนั้นคือสตริง hf.co/... ทั้งหมดรวมถึง tag ซึ่งยาวเกินกว่าจะพิมพ์ทุกครั้ง ให้ตั้งชื่อเล่นสั้นๆ แทน:

ollama cp hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF my-llama
ollama run my-llama

เส้นทางนี้ใช้ได้เฉพาะกับ repository ที่มีไฟล์ GGUF อยู่จริงเท่านั้น repository ที่เผยแพร่เฉพาะน้ำหนัก .safetensors จะไม่มีไฟล์ให้ดึงผ่านเส้นทางนี้ และคุณจำเป็นต้องใช้วิธีการนำเข้าแบบ local ตามที่อธิบายไว้ในส่วนถัดไป

Ollama เลือก quantization แบบใด?

เอกสารประกอบของ Ollama บน Hugging Face ซึ่งอ่านเมื่อวันที่ 10 ตุลาคม 2026 ระบุไว้อย่างชัดเจนเกี่ยวกับค่าเริ่มต้นว่า: "โดยค่าเริ่มต้น ระบบจะใช้รูปแบบ quantization แบบ Q4_K_M หากมีอยู่ใน repository ของโมเดล หากไม่มี ระบบจะเลือกประเภท quant ที่เหมาะสมที่มีอยู่ใน repository ให้โดยอัตโนมัติ" ดังนั้น repository ที่เผยแพร่ quant สิบแบบจะให้ Q4_K_M แก่คุณ และ repository ที่ไม่มี Q4_K_M จะให้ผลลัพธ์ตามที่ Ollama เลือกให้คุณ โปรดอ่านหน้านั้นซ้ำก่อนที่คุณจะใช้งานจริง เนื่องจากค่าเริ่มต้นอาจมีการเปลี่ยนแปลง

คุณสามารถระบุ quant ที่ต้องการได้โดยเพิ่มเป็น tag ต่อท้าย:

ollama run hf.co/{username}/{repository}:{quantization}
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Q8_0
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:iq3_m
ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Llama-3.2-3B-Instruct-IQ3_M.gguf

ชื่อของ quantization ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ ดังนั้น :iq3_m และ :IQ3_M จึงมีความหมายเหมือนกัน คุณยังสามารถระบุชื่อไฟล์แบบเต็มเป็น tag ได้ ซึ่งเป็นวิธีที่ปลอดภัยเมื่อชื่อย่อใน repository มีความกำกวม tag ต้องระบุชื่อไฟล์ที่มีอยู่จริงใน repository นั้น ดังนั้นให้เปิดแท็บ Files and versions แล้วตรวจสอบชื่อไฟล์จริงก่อนพิมพ์ คุณต้องการ quant แบบใดนั้นขึ้นอยู่กับประเด็นเรื่องหน่วยความจำและคุณภาพ ซึ่ง ความแตกต่างระหว่าง Q4, Q8 และ FP16 ได้อธิบายการแลกเปลี่ยนดังกล่าวไว้อย่างเหมาะสมแล้ว

วิธีที่สอง: นำเข้าไฟล์ .gguf จากดิสก์ของคุณเอง

เมื่อไฟล์อยู่ในเซิร์ฟเวอร์แล้ว คุณต้องมี Modelfile ซึ่งสามารถเขียนได้เพียงบรรทัดเดียว ให้สร้างไดเรกทอรี ใส่ Modelfile ลงไป แล้วชี้ FROM ไปที่ไฟล์นั้น:

mkdir -p ~/models/my-model
cd ~/models/my-model
FROM /home/you/models/my-model-Q4_K_M.gguf

บันทึกไฟล์นั้นเป็น Modelfile จากนั้นสร้างโมเดล:

ollama create my-model

ollama create จะอ่านไฟล์ที่ชื่อ Modelfile ในไดเรกทอรีปัจจุบันโดยอัตโนมัติ ให้ใช้ -f เมื่อไฟล์ของคุณมีชื่ออื่นหรืออยู่ที่อื่น ดังเช่นใน ollama create my-model -f /home/you/models/my-model/Modelfile ให้รัน ollama create --help เพื่อดู flag และค่าเริ่มต้นในการ build ของคุณ เส้นทางใน FROM สามารถเป็นแบบ absolute หรือ relative เทียบกับ Modelfile ดังนั้น FROM ./my-model-Q4_K_M.gguf จึงใช้งานได้เมื่อทั้งสองไฟล์อยู่ในไดเรกทอรีเดียวกัน การใช้ absolute path จะช่วยตัดปัญหาเรื่องตำแหน่งที่ตั้งออกไปได้ทั้งหมด

ตรวจสอบผลลัพธ์ก่อนที่คุณจะใช้งานจริง:

ollama list
ollama show my-model
ollama run my-model "Reply with one short sentence."

ollama list ควรแสดงรายการ my-model ขึ้นมา ollama show my-model จะแสดงสถาปัตยกรรม, จำนวนพารามิเตอร์, ความยาวบริบท (context length) และการทำ quantization ที่ Ollama อ่านได้จาก metadata ของไฟล์โดยตรง ให้อ่านค่าเหล่านั้นแทนการเชื่อชื่อไฟล์ เพราะชื่อไฟล์เป็นเพียงข้อความที่คนพิมพ์ขึ้นมาเอง หากโมเดลตอบคำถามทดสอบของคุณด้วยภาษาปกติแล้วหยุดทำงาน แสดงว่าการนำเข้าสำเร็จ หากไม่เป็นเช่นนั้น ให้ไปที่ส่วน template ด้านล่าง เพราะนั่นมักเป็นสาเหตุของปัญหาเสมอ

สิ่งที่ควรทราบเกี่ยวกับพื้นที่ดิสก์: ollama create จะคัดลอกไฟล์ GGUF ไปยังที่เก็บโมเดลของ Ollama แทนการอ้างอิงไฟล์จากตำแหน่งเดิม ข้อมูลน้ำหนัก (weights) จะถูกเก็บไว้บนดิสก์สองชุดจนกว่าคุณจะลบไฟล์ต้นฉบับทิ้ง ให้ลบไฟล์ต้นฉบับเมื่อ ollama run my-model ใช้งานได้แล้ว หรือเก็บไว้ในที่ที่คุณไม่ต้องเสียค่าพื้นที่จัดเก็บซ้ำซ้อน ตำแหน่งที่ Ollama เก็บโมเดลไว้บนดิสก์ มีรายละเอียดเกี่ยวกับโครงสร้างไฟล์และวิธีการย้ายตำแหน่ง

เมื่อใดที่ --quantize มีผล และเมื่อใดที่ไม่มีผล

ollama create มี flag --quantize ซึ่งในปัจจุบันใช้ได้กับกรณีเดียวเท่านั้น คือโมเดลที่นำเข้าจากไดเรกทอรีที่มีไฟล์น้ำหนักแบบ .safetensors ข้อความช่วยเหลือในซอร์สโค้ดของ Ollama ณ วันที่ 10 ตุลาคม 2026 ระบุว่า "Quantize safetensors model to this level (e.g. nvfp4)" และค่าที่ยอมรับได้คือ int4, int8, nvfp4, mxfp4 และ mxfp8 ชื่อการทำ quantization ของ GGUF เช่น q8_0 หรือ q4_K_M จะถูกปฏิเสธเนื่องจากไม่รองรับ เอกสารการนำเข้าของ Ollama ระบุไว้อย่างชัดเจนในส่วนของ GGUF ว่า "Ollama ไม่ทำ quantization ให้กับโมเดล GGUF ระหว่างการนำเข้า"

ollama create --quantize int8 my-model

คำสั่งดังกล่าวสมมติว่า Modelfile มีบรรทัด FROM ที่ชี้ไปยังไดเรกทอรีที่เก็บไฟล์ .safetensors ไว้

ห้ามใช้ flag นั้นเมื่อ FROM ระบุถึงไฟล์ .gguf ไม่ว่าไฟล์นั้นจะมีค่าความละเอียดเท่าใดก็ตาม ไฟล์ GGUF แบบ FP16 หรือ FP32 จะถูกปฏิเสธเช่นเดียวกับไฟล์ Q4_K_M โดยมีข้อความผิดพลาดเริ่มต้นว่า "create-time quantization is only supported for safetensors imports" ไฟล์ .gguf ที่มีชื่อระบุ Q4_K_M หรือ Q5_K_S นั้นถูกทำ quantization มาแล้ว และไม่สามารถกู้คืนความละเอียดที่สูญเสียไปกลับมาได้ เครื่องมือ llama-quantize ของ llama.cpp สามารถแปลงไฟล์ดังกล่าวเป็นประเภทอื่นได้ รวมถึง Q8_0 เมื่อคุณใช้ --allow-requantize แต่คู่มือได้เตือนไว้ว่า "อาจลดคุณภาพลงอย่างมากเมื่อเทียบกับการทำ quantization จาก 16bit หรือ 32bit" และไฟล์ Q4 ที่ถูกแปลงเป็น Q8 จะมีขนาดใหญ่ขึ้นโดยไม่ได้คุณภาพที่ดีขึ้น หากต้องการลดขนาดไฟล์ GGUF แบบเต็มความละเอียด ให้รัน llama-quantize กับไฟล์นั้นก่อน ซึ่งเป็นเครื่องมือที่เอกสารของ Ollama แนะนำ จากนั้นจึงนำเข้าไฟล์ที่ได้ หากแหล่งข้อมูลของคุณคือ Hugging Face repository ที่มีไฟล์ .safetensors คุณสามารถชี้ FROM ไปที่ไดเรกทอรีนั้นแล้วให้ ollama create นำเข้า โดยใช้ --quantize หากต้องการให้ไฟล์มีขนาดเล็กลง หรือแปลงด้วย convert_hf_to_gguf.py จาก repository ของ llama.cpp แล้วนำเข้าไฟล์ GGUF ที่สคริปต์นั้นสร้างขึ้น ความสัมพันธ์ระหว่าง Ollama และ llama.cpp อธิบายเหตุผลว่าทำไมเครื่องมือเหล่านั้นจึงเป็นส่วนหนึ่งของโปรเจกต์อื่น

เหตุใด GGUF ที่นำเข้าจึงตอบกลับเป็นข้อความขยะหรือไม่ยอมหยุดทำงาน?

นี่คือความล้มเหลวที่บทเรียนการนำเข้าส่วนใหญ่ข้ามไป และเป็นสิ่งที่คุณจะต้องพบเจอ อาการที่เกิดขึ้นดูเหมือนโมเดลเสียหาย โดยจะมี control token ปรากฏเป็นข้อความที่มองเห็นได้ในการตอบกลับ เช่น สตริง <|im_start|>assistant หรือ <|end|> โมเดลจะตอบคำถามแล้วเขียนคำถามของผู้ใช้ขึ้นมาใหม่และตอบคำถามนั้นด้วย การสร้างข้อความจะดำเนินต่อไปจนกว่าคุณจะกด Ctrl+C

โมเดลไม่ได้เสียหาย แต่ chat template ไม่ถูกต้อง chat template คือตัวครอบที่แปลงข้อความของคุณให้เป็นลำดับ token ที่แม่นยำตามที่โมเดลถูกฝึกมา โดยมีเครื่องหมายเฉพาะสำหรับระบุจุดสิ้นสุดของ system prompt และจุดเริ่มต้นของ user turn Ollama จะเลือก template ให้คุณโดยอัตโนมัติ เอกสารระบุว่า template "จะถูกเลือกโดยอัตโนมัติจากรายการ template ที่ใช้กันทั่วไป" โดยอ้างอิงจาก metadata tokenizer.chat_template ที่เก็บไว้ภายในไฟล์ GGUF เมื่อ metadata ดังกล่าวหายไป หรือไม่ตรงกับรายการใดเลย คุณจะได้ template แบบทั่วไป โมเดลจึงเห็น prompt ที่มีรูปแบบไม่เหมือนกับสิ่งที่เคยถูกฝึกมา ทำให้มันไม่พบเครื่องหมาย end-of-turn ที่มันเรียนรู้ว่าจะต้องหยุดเมื่อใด

ให้แสดงผล template ที่ Ollama เลือกใช้จริง:

ollama show --template my-model
ollama show --modelfile my-model

หาก template ว่างเปล่าหรือเป็นแบบทั่วไปอย่างเห็นได้ชัด นั่นคือสาเหตุ ให้คุณเขียน template ขึ้นมาเองใน Modelfile:

FROM /home/you/models/my-model-Q4_K_M.gguf

TEMPLATE """{{ if .System }}<|system|>
{{ .System }}<|end|>
{{ end }}{{ if .Prompt }}<|user|>
{{ .Prompt }}<|end|>
{{ end }}<|assistant|>
{{ .Response }}<|end|>"""

PARAMETER stop "<|end|>"

สร้างโมเดลใหม่ด้วย ollama create my-model แล้วส่ง prompt ทดสอบเดิมอีกครั้ง พารามิเตอร์ stop คือตาข่ายนิรภัยของคุณ โดยจะสั่งให้ Ollama ตัดการสร้างข้อความเมื่อสตริงนั้นปรากฏขึ้น ซึ่งจะช่วยแก้ปัญหาอาการไม่ยอมหยุดทำงานในขณะที่คุณยังคงปรับแต่งตัวครอบอยู่ หากการตอบกลับยังคงดำเนินต่อไปเนื่องจากไม่พบเครื่องหมายที่คุณกำหนดไว้ การจำกัดจำนวน num_predict จะช่วยตัดการทำงานที่จำนวน token คงที่โดยไม่คำนึงถึงสิ่งที่ template สร้างออกมา

template ต้องเป็น Go template ไม่ใช่ Jinja template เอกสารของ Hugging Face ระบุเรื่องนี้ไว้อย่างชัดเจน และมีความสำคัญเนื่องจากฟิลด์ tokenizer.chat_template ใน repository ของโมเดลต้นฉบับใช้ Jinja การคัดลอกมาวางโดยไม่แก้ไขจะไม่สามารถใช้งานได้ ไวยากรณ์ของ Ollama มีตัวแปรสามตัวคือ {{ .System }} สำหรับ system prompt, {{ .Prompt }} สำหรับข้อความของผู้ใช้ และ {{ .Response }} สำหรับการตอบกลับของโมเดล ให้ค้นหาเครื่องหมาย turn จริงของโมเดลจาก model card หรือไฟล์ tokenizer_config.json ของโมเดลนั้น แล้วเขียนใหม่เป็นไวยากรณ์ Go ด้วยตนเอง

ทางลัดหนึ่งวิธีช่วยประหยัดเวลาได้มาก โมเดลจำนวนมากใช้รูปแบบ prompt ร่วมกัน ดังนั้นหากมีโมเดลอื่นใน library ของคุณที่ใช้รูปแบบเดียวกัน ให้รันคำสั่ง ollama show --template กับโมเดลนั้นแล้วคัดลอกสิ่งที่แสดงผลออกมา

ไฟล์ template, system และ params ใน Hugging Face repo

เส้นทางของ Hugging Face มอบการควบคุมแบบเดียวกับไฟล์ใน repository แทนการใช้คำสั่งใน Modelfile หากคุณเป็นเจ้าของ repository หรือกำลังเผยแพร่ไฟล์ quant ของคุณเอง ให้เพิ่มไฟล์เหล่านี้ลงไป แล้ว ollama run hf.co/... ทุกตัวจะดึงค่าเหล่านั้นไปใช้งาน

  • ไฟล์ชื่อ template ใช้เก็บ Go template โดยมีกฎเดียวกันคือต้องใช้ Go ไม่ใช่ Jinja
  • ไฟล์ชื่อ system ใช้เก็บ system prompt
  • ไฟล์ชื่อ params ใช้เก็บ sampling parameters และต้องอยู่ในรูปแบบ JSON เท่านั้น

ตัวอย่างไฟล์ params แบบย่อ:

{
  "stop": ["<|end|>"],
  "temperature": 0.7
}

ในกรณีที่คุณไม่ได้เป็นเจ้าของ repository คุณจะไม่สามารถเพิ่มไฟล์เหล่านี้ได้ ให้ทำการ pull โมเดลหนึ่งครั้ง จากนั้นรัน ollama show --modelfile hf.co/... เพื่อดึงข้อมูลที่ได้รับมา แล้วบันทึกผลลัพธ์นั้นเป็น Modelfile โดยบรรทัด FROM จะชี้ไปยัง blob ที่ Ollama ดาวน์โหลดมาไว้แล้ว คุณจึงสามารถแก้ไขบรรทัด TEMPLATE และ PARAMETER แล้วรัน ollama create เพื่อสร้างสำเนาในเครื่องที่แก้ไขแล้วโดยไม่ต้องดาวน์โหลดข้อมูลใหม่ นี่เป็นวิธีมาตรฐานในการแก้ไขไฟล์ quant ของผู้อื่นที่ตั้งค่ามาไม่ถูกต้อง

วิธีการนำเข้า GGUF repository แบบส่วนตัว

Repository แบบส่วนตัวจำเป็นต้องใช้ SSH key ของ Ollama ในบัญชี Hugging Face ของคุณ วิธีการที่ระบุไว้ในเอกสารสำหรับกรณีนี้จะใช้ SSH key แทน API token ดังนั้น token ที่คุณมีอยู่แล้วจะไม่สามารถใช้เปิดเข้าถึงได้

ให้แสดงผล public key ออกมา บนเซิร์ฟเวอร์ Linux ที่ติดตั้ง Ollama ด้วยสคริปต์อย่างเป็นทางการ บริการจะทำงานในฐานะผู้ใช้ ollama ดังนั้น key จะถูกเก็บไว้ใน home directory ของผู้ใช้นั้น:

sudo cat /usr/share/ollama/.ollama/id_ed25519.pub

หากคุณเริ่มการทำงานของ ollama serve ด้วยตัวเองในฐานะผู้ใช้ของคุณเอง path จะเป็น ~/.ollama/id_ed25519.pub แทน ให้คัดลอกข้อความทั้งบรรทัด เปิดการตั้งค่าบัญชี Hugging Face ของคุณที่ https://huggingface.co/settings/keys แล้วเพิ่มเป็น SSH key ใหม่ จากนั้นคำสั่งปกติจะสามารถใช้งานกับ repository ส่วนตัวของคุณได้:

ollama run hf.co/{username}/{repository}

หากการดึงข้อมูลยังคงล้มเหลวหลังจากที่คุณเพิ่ม key แล้ว เป็นไปได้ว่าคุณแสดงผลไฟล์ผิดไฟล์ เซิร์ฟเวอร์จะเป็นผู้ดำเนินการดาวน์โหลดและนำเสนอ key ของตัวมันเอง และเซิร์ฟเวอร์ที่เริ่มการทำงานโดย systemd จะไม่อ่านไฟล์ ~/.ollama ของผู้ใช้คุณ ดังนั้น key ที่อยู่ภายใต้ home directory ของคุณจึงไม่ใช่ key ที่ Hugging Face มองเห็น

โมเดลจะทำงานบน VPS ของคุณได้หรือไม่

ตัวเลขที่ใช้ตัดสินเรื่องนี้คือขนาดไฟล์บนดิสก์รวมกับหน่วยความจำที่ context window ของคุณต้องการ น้ำหนักของโมเดลจะถูกโหลดเข้าสู่หน่วยความจำในขนาดที่ใกล้เคียงกับที่ใช้ในไฟล์ และการจัดสรรพื้นที่สำหรับ context จะเพิ่มขึ้นตามจำนวน token ที่คุณกำหนด ให้รัน ollama list เพื่ออ่านขนาดที่ Ollama บันทึกไว้สำหรับโมเดลนั้น แล้วนำไปเปรียบเทียบกับ free -h บนเซิร์ฟเวอร์ของคุณ โดยต้องเผื่อพื้นที่ว่างไว้สำหรับระบบปฏิบัติการและโปรเซสอื่นๆ ที่รันอยู่บนเซิร์ฟเวอร์ด้วย หากคุณต้องการดูตัวอย่างการคำนวณจริงจากโมเดลที่ใช้งานได้จริง การรัน Nemotron 3.5 Lightning บน VPS จะระบุ tag ที่ต้องใช้ในการดึงโมเดล, ปริมาณ RAM ที่จำเป็น และข้อมูลว่าเซิร์ฟเวอร์ที่ใช้เฉพาะ CPU จะรองรับการทำงานได้หรือไม่

Context คือส่วนที่ผู้ใช้มักลืม โมเดลที่โหลดด้วยค่าเริ่มต้นอาจทำงานล้มเหลวเมื่อคุณเพิ่มค่า num_ctx เนื่องจากหน่วยความจำที่ต้องจัดสรรจะขยายตามขนาด window ที่คุณระบุ การตั้งค่า num_ctx และผลกระทบต่อหน่วยความจำ มีรายละเอียดการคำนวณขนาดที่เหมาะสม เมื่อผลรวมหน่วยความจำที่ต้องการมีขนาดใหญ่เกินไป วิธีแก้ไขมักจะเป็นการเลือกใช้โมเดลรุ่นที่ทำ quantization เล็กลง ซึ่งเป็นข้อแลกเปลี่ยนที่อธิบายไว้ใน การเปรียบเทียบ Q4 กับ Q8

ความล้มเหลวที่เกิดขึ้นจะเห็นได้ชัดเจน บน VPS ที่ใช้เฉพาะ CPU ตัว kernel out of memory killer จะหยุดการทำงานของโปรเซส และ journalctl -u ollama -n 50 ร่วมกับ dmesg จะแสดงบันทึกการสั่งหยุดโปรเซสนั้น สำหรับเซิร์ฟเวอร์ที่มี GPU คำสั่ง ollama ps จะแสดงคอลัมน์ PROCESSOR ซึ่งบอกคุณว่าโมเดลที่โหลดถูกเก็บไว้ในหน่วยความจำของ GPU, หน่วยความจำของระบบ หรือแบ่งเก็บทั้งสองส่วน โมเดลที่ถูกย้ายไปเก็บในหน่วยความจำของระบบจะยังคงตอบสนองได้แต่จะทำงานช้าลง การวัดจำนวน token ต่อวินาที จะช่วยเปลี่ยนคำว่า "ช้า" ให้เป็นตัวเลขที่คุณสามารถนำมาเปรียบเทียบระหว่างระดับ quantization ต่างๆ ได้

ตรวจสอบสิ่งที่คุณนำเข้า

ให้รันคำสั่งทั้ง 4 คำสั่งนี้หลังจากนำเข้าเสร็จสิ้น โดยเรียงตามลำดับดังนี้:

ollama list
ollama show my-model
ollama show --modelfile my-model
ollama run my-model "Reply with one short sentence."

ollama list เป็นการยืนยันว่าโมเดลมีอยู่จริงและแสดงขนาดที่ Ollama บันทึกไว้ ollama show เป็นการยืนยันว่า Ollama อ่าน metadata ที่จำเป็นจากไฟล์ GGUF ได้สำเร็จ ollama show --modelfile เป็นการยืนยันว่าโมเดลจะใช้ template และพารามิเตอร์ใด ซึ่งเป็นการตรวจสอบเพื่อป้องกันปัญหาผลลัพธ์ที่ผิดพลาดก่อนที่ผู้ใช้งานของคุณจะพบเจอ การทดสอบด้วย prompt จะเป็นการตรวจสอบการทำงานทั้งหมดของระบบ เนื่องจากโมเดลที่มี template เสียหายจะล้มเหลวแม้จะเป็นคำขอที่สั้นที่สุดก็ตาม เมื่อได้รับผลลัพธ์ที่ถูกต้องจาก prompt แล้ว ชื่อที่คุณตั้งให้กับโมเดลจะเป็นชื่อเดียวกับที่คุณใช้เรียกผ่าน Ollama API รวมถึง coding agent ที่เชื่อมต่อกับเซิร์ฟเวอร์ของคุณ หากต้องการลบการนำเข้าที่ผิดพลาดให้ใช้ ollama rm my-model แล้วจึงสร้างใหม่ คำสั่งดังกล่าวจะลบเฉพาะสำเนาของ Ollama โดยที่ไฟล์ต้นฉบับ .gguf ของคุณจะยังคงอยู่เหมือนเดิม

FAQ

ฉันสามารถนำเข้า GGUF เข้าสู่ Ollama โดยไม่ต้องเขียน Modelfile ได้หรือไม่?

ได้ หากไฟล์นั้นอยู่ใน repository ของ Hugging Face โดย ollama run hf.co/{username}/{repository} จะดึงและรันไฟล์นั้นโดยตรง และ ollama run hf.co/{username}/{repository}:{quantization} จะใช้เลือก quantization ที่ต้องการ ส่วน Modelfile จะจำเป็นก็ต่อเมื่อใช้ .gguf ที่อยู่ในดิสก์ของคุณเองเท่านั้น ซึ่งในกรณีนั้นสามารถใช้เพียงบรรทัดเดียวคือ FROM /path/to/file.gguf ตามด้วย ollama create my-model

Ollama จะดาวน์โหลด quantization แบบใดหากฉันไม่ได้ระบุ?

เอกสารของ Hugging Face ซึ่งอ่านเมื่อวันที่ 10 ตุลาคม 2026 ระบุว่า Q4_K_M จะถูกเลือกใช้หากมี quant นั้นอยู่ใน repository และหากไม่มี Ollama จะเลือก quant ที่เหมาะสมที่มีอยู่ใน repository นั้นแทน คุณสามารถระบุ tag เช่น :Q8_0 เพื่อควบคุมการเลือกได้ และตรวจสอบสิ่งที่ได้รับจริงด้วย ollama show <model> ซึ่งจะแสดงค่า quantization จาก metadata ของไฟล์โดยตรงแทนที่จะดูจากชื่อไฟล์

ทำไมโมเดลที่นำเข้าถึงวนซ้ำหรือหยุดสร้างข้อความไม่ได้?

chat template ไม่ตรงกับโมเดล โดยปกติ Ollama จะเลือก template ให้โดยอัตโนมัติจาก metadata tokenizer.chat_template ภายในไฟล์ GGUF แต่หาก metadata ดังกล่าวหายไปหรือไม่เป็นที่รู้จัก ระบบจะใช้ wrapper ทั่วไปแทน ทำให้โมเดลไม่เห็นเครื่องหมาย end-of-turn ที่ใช้ในการเทรน คุณสามารถตรวจสอบ template ปัจจุบันได้ด้วย ollama show --template <model> จากนั้นให้เพิ่มบล็อก TEMPLATE และบรรทัด PARAMETER stop ลงใน Modelfile แล้วรัน ollama create อีกครั้ง โดยต้องเขียนในรูปแบบ Go template เท่านั้น ส่วน Jinja template จาก repository ต้นทางจะไม่สามารถใช้งานได้

ฉันควรใช้ --quantize กับไฟล์ GGUF ที่ดาวน์โหลดมาหรือไม่?

ไม่ควร เพราะ --quantize ทำงานได้เฉพาะกับการนำเข้าไฟล์ safetensors ในระหว่างขั้นตอน ollama create เท่านั้น และจะปฏิเสธไฟล์ GGUF ทุกประเภท รวมถึงไฟล์ FP16 หรือ FP32 โดยจะแสดงข้อผิดพลาดแจ้งให้คุณทำ quantization ไฟล์ GGUF ก่อนนำเข้า ทั้งนี้ไฟล์ที่มีชื่อระบุระดับ quant เช่น Q4_K_M นั้นผ่านการแปลงมาแล้ว การทำ quantization ซ้ำไม่สามารถกู้คืนความละเอียดที่สูญเสียไปได้ โดย llama-quantize --allow-requantize อาจเขียนไฟล์ใหม่เป็น Q8_0 ได้ แต่ผลลัพธ์จะมีขนาดใหญ่ขึ้นโดยไม่ได้คุณภาพที่ดีขึ้น หากต้องการไฟล์ขนาดเล็กลงจาก GGUF ที่มีความละเอียดเต็ม ให้รัน llama-quantize ของ llama.cpp กับไฟล์นั้นก่อนแล้วจึงนำเข้าผลลัพธ์ที่ได้

ฉันจะดึงข้อมูลจาก repository GGUF ส่วนตัวได้อย่างไร?

ให้เพิ่ม SSH public key ของ Ollama ลงในบัญชี Hugging Face ของคุณ โดยแสดงคีย์ดังกล่าวด้วย sudo cat /usr/share/ollama/.ollama/id_ed25519.pub บนการติดตั้ง Linux มาตรฐาน หรือจาก ~/.ollama/id_ed25519.pub หากคุณรันเซิร์ฟเวอร์ด้วยบัญชีผู้ใช้ของคุณเอง จากนั้นให้นำไปเพิ่มในหน้าการตั้งค่า SSH key ของบัญชี หลังจากนั้น ollama run hf.co/{username}/{repository} จะสามารถใช้งานกับ repository ส่วนตัวของคุณ รวมถึง repository ในองค์กรที่คุณเป็นสมาชิกได้

#ollama#gguf#local-llm#hugging-face#modelfile