Ollama APIs: รายการตรวจสอบการผลิตสำหรับการอนุมานไร้การเซ็นเซอร์
Ollama APIs จัดเตรียมอินเทอร์เฟซมาตรฐานสำหรับการรัน LLM ท้องถิ่นไร้การเซ็นเซอร์ มอบการควบคุมโดยตรงแก่นักพัฒนาเหนือน้ำหนักโมเดลและพารามิเตอร์การอนุมานโดยไม่มีการจำกัดจากผู้ขายภายนอก คู่มือนี้ครอบคลุมขั้นตอนทางเทคนิคที่จำเป็นในการปรับปรุงการจัดการบริบท จัดการเวลาแฝงของสตรีม และผสานรวม endpoint เหล่านี้เข้ากับสภาพแวดล้อมการผลิตได้อย่างมีประสิทธิภาพ
อัปเดตล่าสุด
สรุป
ใช้จุดจบ /api/chat เพื่อสตรีมการตอบกลับพร้อมการมองเห็นโทเค็นแบบเรียลไทม์และความล่าช้าที่รับรู้ต่ำ
กำหนดค่า Ollama ด้วยน้ำหนักแบบไม่เซ็นเซอร์ที่ผ่านการควอนไทซ์เช่น Llama 3.1 Uncensored เพื่อปรับสมดุลการใช้ VRAM กับคุณภาพผลลัพธ์
ตั้งค่าเกณฑ์เวลาหมดอายุที่ชัดเจนในไคลเอนต์ SDK ของคุณเพื่อป้องกันไม่ให้การเชื่อมต่อค้างในช่วงที่มีการใช้งานสูงพร้อมกัน
ติดตาม throughput ของ token ต่อวินาทีเพื่อระบุจุดบกพร่องก่อนที่มันจะส่งผลต่อประสบการณ์ผู้ใช้ในการใช้งานจริง
ทำไม API Ollama จึงเป็นมาตรฐานสำหรับการอนุมานแบบ Local
Ollama APIs มาตรฐานการอนุมานท้องถิ่นโดยการห่อหุ้มตรรกะการโหลดโมเดลที่ซับซ้อนลงในอินเทอร์เฟซ REST อย่างง่ายที่สะท้อนตามมาตรฐาน OpenAI นักพัฒนาชอบแนวทางนี้เพราะกำจัดความต้องการในการจัดการกระบวนการ Python หรือ CUDA dependencies ด้วยตนเอง API เปิด endpoint สำหรับการเติมข้อความแชทและการสร้าง embedding ทำให้การผสานรวมเป็นไปอย่างง่ายดายสำหรับโค้ดเบสที่มีอยู่
การอนุมานในเครื่องมอบอำนาจอธิปไตยของข้อมูลอย่างสมบูรณ์ คำสั่งของคุณจะไม่ออกจากฮาร์ดแวร์ของคุณ ซึ่งสำคัญมากสำหรับแอปพลิเคชันที่มีความอ่อนไหวหรือข้อกำหนดความเป็นส่วนตัวที่เข้มงวด ต่างจากผู้ให้บริการคลาวด์ คุณควบคุมเวอร์ชันโมเดล ระดับ Quantization และพารามิเตอร์การสุ่มตัวอย่างได้อย่างแม่นยำ ความโปร่งใสนี้รับประกันพฤติกรรมที่สม่ำเสมอโดยไม่มีการอัปเดตที่ไม่คาดคิดจากผู้ขายบุคคลที่สาม
ทีมจำนวนมากเลือกใช้ Ollama เนื่องจากรองรับสถาปัตยกรรมที่หลากหลายในตัว คุณสามารถสลับระหว่างโมเดลต่างๆ ได้โดยไม่ต้องเขียนโค้ดไคลเอนต์ใหม่ API จัดการงานหนักอย่างการจัดสรรเทนเซอร์และการจัดการหน้าต่างบริบท
อย่างไรก็ตาม การอนุมานในท้องถิ่นต้องการทรัพยากรฮาร์ดแวร์ที่เพียงพอ คุณต้องตรวจสอบให้แน่ใจว่า GPU ของคุณมี VRAM เพียงพอสำหรับขนาดโมเดลที่เลือก โมเดล 7B parameters ในรูปแบบ quantization Q4_K_M ต้องการ VRAM ประมาณ 5-6 GB โมเดลขนาดใหญ่ต้องการหน่วยความจำมากขึ้นแต่ให้ความสามารถในการให้เหตุผลที่ดีกว่าอย่างมีนัยสำคัญ
การเลือกน้ำหนักโมเดลแบบไม่เซ็นเซอร์ที่เหมาะสม
การเลือกน้ำหนักโมเดลแบบไม่เซ็นเซอร์ที่เหมาะสมเกี่ยวข้องกับการปรับสมดุลระหว่างจำนวนพารามิเตอร์ ระดับการบีบอัดข้อมูล (quantization level) และข้อมูลการฝึกเฉพาะ โมเดลแบบไม่เซ็นเซอร์โดยทั่วไปเป็นเวอร์ชันที่ผ่านการปรับแต่งเพิ่มเติม (fine-tuned) จากโมเดลพื้นฐานเช่น Llama 3 หรือ Mistral ซึ่งได้รับการฝึกเพื่อลดอัตราการปฏิเสธในหัวข้อผู้ใหญ่หรือหัวข้อที่ถกเถียงกัน
สำหรับการใช้งานในระดับการผลิต ให้ให้ความสำคัญกับโมเดลที่มีใบอนุญาตชัดเจนและการสนับสนุนจากชุมชนที่ใช้งานอยู่ เวอร์ชันที่ควอนไทซ์เช่น Q4_K_M ให้อัตราส่วนราคาต่อประสิทธิภาพที่ดีที่สุด พวกมันลดการใช้หน่วยความจำลง 70% ในขณะที่รักษาความฉลาดของโมเดลไว้ส่วนใหญ่ ซึ่งช่วยให้คุณรันโมเดลขนาดใหญ่บน GPU ระดับผู้บริโภคได้
- 7B Parameter Models: เหมาะสำหรับเซตอัพ GPU เดียว ให้เวลาตอบสนองเร็วและเวลาแฝงต่ำ
- โมเดลพารามิเตอร์ 13B-20B: ความสามารถในการให้เหตุผลและการปฏิบัติตามคำสั่งที่ดีขึ้น ต้องการ VRAM สูงหรือการปรับใช้แบบคลัสเตอร์
ตรวจสอบวิธีการควอนไทซ์ รูปแบบ GGUF เป็นมาตรฐานสำหรับการอนุมานในเครื่อง รองรับระดับการควอนไทซ์ต่างๆ ตั้งแต่ Q2_K ถึง Q8_0 การควอนไทซ์ระดับต่ำช่วยประหยัดหน่วยความจำแต่อาจทำให้เกิดอาร์ติแฟกต์ในงานการให้เหตุผลที่ซับซ้อน
การปรับหน้าต่างบริบทสำหรับการสร้างเนื้อหาแบบยาว
การปรับแต่ง context window จำเป็นต้องจัดการขีดจำกัด token ของ prompt และ completion อย่างระมัดระวัง Ollama รองรับ context window ได้สูงถึง 128K token ในเวอร์ชันล่าสุด อย่างไรก็ตาม context ที่มีประสิทธิภาพมักจะมีขนาดเล็กลงเนื่องจากข้อจำกัดของฮาร์ดแวร์และการแลกเปลี่ยนด้านความล่าช้า
ตั้งค่าความยาวบริบทอย่างชัดเจนในคำขอ API ของคุณ สิ่งนี้ป้องกันไม่ให้โมเดลตัดคำสั่งสำคัญหรือสูญเสียการติดตามการสนทนาก่อนหน้านี้ หน้าต่างบริบทที่ใหญ่ขึ้นจะเพิ่มการใช้หน่วยความจำแบบเชิงเส้น ตรวจสอบการใช้หน่วยความจำ GPU ของคุณอย่างใกล้ชิดเมื่อขยายเกิน 32K โทเค็น
สำหรับการสร้างเนื้อหาแบบยาว ให้พิจารณาใช้กลยุทธ์การแบ่งส่วน (chunking) แบ่งเอกสารขนาดใหญ่เป็นส่วนย่อยๆ ก่อนส่งไปยังโมเดล วิธีนี้ลดความเสี่ยงจากการล้นบริบทและปรับปรุงคุณภาพการตอบกลับ จากนั้นคุณสามารถนำเอาต์พุตมาต่อกันที่ฝั่งไคลเอนต์
ใช้ num_ctx พารามิเตอร์สำหรับควบคุมขนาดหน้าต่างบริบท ค่าเริ่มต้นมักคือ 2048 tokens การเพิ่มค่านี้เป็น 8192 หรือ 32768 ช่วยให้บันทึกการสนทนาได้ลึกขึ้น ตรวจสอบให้แน่ใจว่าฮาร์ดแวร์ของคุณสามารถรองรับภาระหน่วยความจำที่เพิ่มขึ้นได้
การจัดการเวลาแฝงสตรีมในสภาพแวดล้อมการผลิต
การจัดการเวลาแฝงสตรีมเกี่ยวข้องกับการกำหนดค่าไคลเอนต์ของคุณเพื่อรับโทเค็นเมื่อถูกสร้าง การสตรีมให้ประสบการณ์ผู้ใช้ที่ดีกว่าโดยการแสดงความคืบหน้าทันที นอกจากนี้ยังช่วยให้รับรู้เวลาถึงโทเค็นแรกได้เร็วขึ้น
เปิดใช้งานการสตรีมในการเรียกใช้ API ของคุณโดยตั้งค่าพารามิเตอร์ stream เป็น true API จะส่งชุดของวัตถุ JSON ซึ่งแต่ละชิ้นประกอบด้วยคำตอบบางส่วน ประมวลผล chunk เหล่านี้แบบอะซิงโครนัสเพื่อรักษาปริมาณงานสูง
ติดตามความเร็วในการสร้าง token GPU ในเครื่องทั่วไปอาจสร้าง token ได้ 50-100 token ต่อวินาที ซึ่งช้ากว่า API บนคลาวด์แต่ให้ความล่าช้าต่ำกว่าและความเป็นส่วนตัว ปรับ UI ของคุณให้สะท้อนความเร็วนี้ได้อย่างถูกต้อง หลีกเลี่ยงการแสดง animation spinner ที่สื่อถึงการรอ response เต็ม
ใช้กลไกกำหนดเวลาหมดอายุ (timeout) หากการเชื่อมต่อแบบสตรีมค้าง ให้ปิดการเชื่อมต่อและลองใหม่ เพื่อป้องกันปัญหาการรั่วไหลของทรัพยากรในแอปพลิเคชันของคุณ ใช้การเพิ่มเวลาถอยหลังแบบทวีคูณ (exponential backoff) สำหรับการลองใหม่ เพื่อไม่ให้เซิร์ฟเวอร์รับภาระหนักเกินไปในช่วงที่มีการใช้งานสูง
จัดการความพร้อมใช้งานและขีดจำกัดอัตราได้อย่างมีประสิทธิภาพ
การจัดการความพร้อมใช้งานต้องสมดุลระหว่างคำขอแบบขนานกับหน่วยความจำ GPU ที่มีอยู่ Ollama ประมวลผลคำขอตามลำดับโดยค่าเริ่มต้น คำขอแบบขนานอาจนำไปสู่ความล่าช้าที่เพิ่มขึ้นหรือข้อผิดพลาด Out of Memory หากไม่ได้กำหนดค่าอย่างถูกต้อง
ใช้ connection pool เพื่อจัดการคำขอหลายรายการอย่างมีประสิทธิภาพ จำกัดจำนวนการเชื่อมต่อแบบคอนเคอร์เรนต์ให้สอดคล้องกับความสามารถของ GPU ของคุณ GPU หนึ่งเครื่องสามารถจัดการคำขอคอนเคอร์เรนต์ได้ 2-4 คำขอสำหรับโมเดล 7B โดยทั่วไป โมเดลขนาดใหญ่กว่าอาจต้องการคำขอคอนเคอร์เรนต์น้อยกว่า
เพิ่มการจำกัดอัตราฝั่งไคลเอนต์ สิ่งนี้ป้องกันไม่ให้ปริมาณการจราจรที่เพิ่มขึ้นอย่างกะทันหันทำให้เซิร์ฟเวอร์ท้องถิ่นล้น ตั้งค่าขีดจำกัดสูงสุดของคำขอต่อวินาที (RPS) ตามข้อกำหนดฮาร์ดแวร์ของคุณ ตรวจสอบการใช้ GPU และปรับขีดจำกัดแบบไดนามิกหากเป็นไปได้
พิจารณาใช้ระบบคิวสำหรับสถานการณ์ที่มีความพร้อมใช้งานสูง คำร้องจะถูกประมวลผลตามลำดับ เพื่อให้แน่ใจถึงการเข้าถึงทรัพยากรอย่างเท่าเทียม สิ่งนี้ป้องกันไม่ให้คำร้องที่ช้ากว่าขาดแคลนทรัพยากรและรักษาประสิทธิภาพที่สม่ำเสมอ
การตรวจสอบการใช้งาน token และประสิทธิภาพด้านต้นทุน
การตรวจสอบการใช้งาน token ช่วยให้คุณจัดสรรทรัพยากรและคาดการณ์ต้นทุนฮาร์ดแวร์ได้อย่างเหมาะสม ติดตาม token อินพุตและเอาต์พุตแยกจากกัน ข้อมูลนี้เปิดเผยว่า prompt ใดมีค่าใช้จ่ายสูงและโมเดลใดมีประสิทธิภาพสูงสุด
Calculate cost per request by multiplying token counts by your hardware depreciation rate. This gives you a precise figure for operational expenses. Compare this against cloud API costs to justify local deployment.
- Token Input: นับจำนวนอักขระใน prompt และคำสั่งระบบของคุณ
- โทเค็นผลลัพธ์: ติดตามความยาวของการสร้าง การตอบที่สั้นกว่ามีต้นทุนต่ำกว่าและเร็วกว่า
- จำนวนโทเค็นรวม: ผลรวมของอินพุตและเอาต์พุต ใช้สิ่งนี้สำหรับการวางแผนงบประมาณ
ปรับการใช้โทเค็นโดยการปรับปรุง Prompt ลบความเยิ่นเย้อที่ไม่จำเป็น ใช้คำแนะนำที่กระชับเพื่อลดโทเค็นขาเข้า จำกัดความยาวผลลัพธ์ด้วยพารามิเตอร์ max_tokens เพื่อควบคุมต้นทุนและปรับปรุงความเร็ว
การผสานรวมกับไคลเอนต์ที่เข้ากันได้กับ OpenAI
การผสานรวมกับไคลเอนต์ที่เข้ากันได้กับ OpenAI ช่วยให้คุณสามารถใช้ไลบรารีที่มีอยู่เช่น openai-python หรือ langchain. API ของ Ollama ถูกออกแบบมาให้เลียนแบบจุดจบการสนทนาแบบ OpenAI ความเข้ากันได้นี้ช่วยลดเวลาในการพัฒนาได้อย่างมาก
ตั้งค่า URL ฐานไปยังอิลเลียม่า (Ollama) ในเครื่องของคุณ โดยทั่วไปแล้วนี่คือ http://localhost:11434/v1. กำหนดค่า API key เป็น ollama หรือปล่อยให้เป็นค่าว่างขึ้นอยู่กับการตั้งค่าของคุณ ไลบรารีไคลเอนต์จะจัดการส่วนที่เหลือให้
ทดสอบการผสานรวมด้วยคำขอแชทอย่างง่าย ตรวจสอบว่าสตรีมมิ่งทำงานได้ถูกต้อง ตรวจสอบว่าชื่อโมเดลตรงกับที่มีอยู่ใน Ollama instance ของคุณ คุณสามารถระบุโมเดลที่มีอยู่โดยใช้ /api/tags endpoint.
จัดการข้อผิดพลาดอย่างสุภาพ Ollama ส่งคืนรหัสข้อผิดพลาด HTTP มาตรฐาน แยกวิเคราะห์ข้อผิดพลาดเหล่านี้เพื่อให้ข้อเสนอแนะที่มีความหมายแก่ผู้ใช้ บันทึกข้อความข้อผิดพลาดโดยละเอียดสำหรับการดีบัก
การแก้ปัญหาข้อผิดพลาด Ollama API ที่พบบ่อย
การแก้ปัญหาข้อผิดพลาด Ollama API ที่พบบ่อยเกี่ยวข้องกับการตรวจสอบการเชื่อมต่อเครือข่าย ความพร้อมใช้งานของโมเดล และความถูกต้องของพารามิเตอร์ ข้อผิดพลาดทั่วไปรวมถึง 404 Not Found สำหรับโมเดลที่หายไป และ 500 Internal Server Error สำหรับปัญหา GPU
ตรวจสอบว่าชื่อโมเดลถูกต้อง Ollama แยกตัวพิมพ์ใหญ่-เล็ก ใช้ ollama list เพื่อดูโมเดลที่มีอยู่ ตรวจสอบให้แน่ใจว่าโมเดลถูกดึงและพร้อมสำหรับการอนุมาน
ตรวจสอบการใช้ GPU memory ข้อผิดพลาด Out-of-memory พบบ่อยเมื่อ context windows ใหญ่เกินไป ลด num_ctx หรือเปลี่ยนไปใช้โมเดลที่เล็กลง ตรวจสอบการใช้งานหน่วยความจำด้วยเครื่องมือเช่น nvtop หรือ nvidia-smi.
ทบทวนโหลดคำขอ API คำตอบ JSON ที่ไม่ถูกต้องหรือการขาดฟิลด์ที่จำเป็นจะก่อให้เกิดข้อผิดพลาด 400 Bad Request ตรวจสอบโครงสร้างโหลดของคุณก่อนส่ง ใช้เครื่องตรวจสอบไวยากรณ์ JSON เพื่อจับข้อผิดพลาดทางไวยากรณ์ตั้งแต่เนิ่นๆ
FAQ
วิธีที่ถูกที่สุดในการรัน LLM แบบ uncensored ในเครื่องของคุณคืออะไร?
วิธีที่ถูกที่สุดคือการใช้โมเดล GGUF แบบ quantized เช่น Q4_K_M ซึ่งลดความต้องการหน่วยความจำลง 70% ในขณะที่ยังคงคุณภาพสูง คุณสามารถรันบน GPU ระดับผู้บริโภคที่มี VRAM เพียง 6GB ซึ่งช่วยลดต้นทุนฮาร์ดแวร์และค่าไฟฟ้าเมื่อเทียบกับ API แบบคลาวด์
Ollama รองรับการตอบสนองแบบสตรีมหรือไม่?
ใช่, Ollama รองรับสตรีมผ่านเอนด์พอยต์ /api/chat ตั้งพารามิเตอร์ stream เป็น true เพื่อรับโทเค็นเมื่อถูกสร้าง ซึ่งปรับปรุงประสบการณ์ผู้ใช้โดยการแสดงข้อความแบบเรียลไทม์ นอกจากนี้ยังอนุญาตให้รับรู้เวลาถึงโทเค็นแรกได้เร็วขึ้น
ฉันจัดการกับอัตราจำกัดกับการอนุมานในเครื่อง (local inference) ได้อย่างไร?
การอนุมานในเครื่องไม่มีขีดจำกัดอัตราแบบตายตัวเช่น API แบบคลาวด์ อย่างไรก็ตาม คุณจะถูกจำกัดด้วยความสามารถในการคำนวณของ GPU ของคุณ ตรวจสอบการใช้ GPU และปรับความพร้อมใช้งานตามลำดับ ใช้พูลการเชื่อมต่อเพื่อจัดการคำขอหลายรายการได้อย่างมีประสิทธิภาพโดยไม่ทำให้ฮาร์ดแวร์ของคุณล้น
ฉันสามารถใช้ SDK ของ OpenAI กับ Ollama ได้หรือไม่?
ใช่, Ollama เข้ากันได้กับ OpenAI คุณสามารถใช้ Python SDK ทางการของ OpenAI ได้โดยตั้งค่า URL พื้นฐานเป็นอินสแตนซ์ในเครื่องของคุณ กำหนดค่าคีย์ API เป็น 'ollama' หรือปล่อยให้เป็นว่าง การอนุญาตนี้ช่วยให้คุณใช้ไลบรารีที่มีอยู่เช่น LangChain หรือ LlamaIndex ได้โดยไม่ต้องเปลี่ยนแปลงโค้ดอย่างมีนัยสำคัญ
รับคีย์ API ของคุณตอนนี้
ลงทะเบียน คัดลอกคีย์ของคุณ และชี้ไปยัง endpoint แค่นี้ก็เพียงพอ