GenAI Engineer Thailand #2 - Introduction to Ollama
Ollama เป็นเครื่องมือตัวนึงที่ทำให้เราสามารถใช้งาน LLM บนเครื่องเราได้แบบง่าย ๆ ไม่เสียตัง! เพียงแค่ Pull LLM Model มา แล้วก็รันได้เลย
พี่ปาโก้ - Technical Lead จาก PALO IT มาแชร์ Introduction to Ollama ใน Blog นี้ผมมาสรุปให้ฮะว่าเราคุยอะไรกันบ้าง ❇️ ❇️
Table of contents
- What is Ollama
- Ollama CLI Usage
- Ollama Modelfile
- Ollama API
- Ollama Integrations
- Bonus
What is Ollama
เราอาจจะคุ้นเคยกับ ChatGPT, Claude Anthropic, หรืออย่าง Gemini ที่ปกติ เวลาจะใช้ ต้องเข้าไปในเว็บไซต์ของผู้ให้บริการ แล้วก็ใช้ interface ของเค้า
หรือขยับมาทาง Developer หน่อยเราก็อาจจะยิง API ไปหา service เหล่านี้ แล้วก็เอาคำตอบที่ได้ไปใช้งานต่อ
ส่วนตัว Ollama เป็นเครื่องมือตัวนึงที่ทำให้เราสามารถใช้งาน Language Model บนเครื่องเราได้แบบง่าย ๆ ไม่เสียตัง! เพียงแค่ Pull Language Model มา แล้วก็รันได้เลย
วิธีการใช้ก็ง่ายแสนง่าย เริ่มจากเข้าไปที่เว็บของ Ollama โหลดมาลงให้เรียบร้อย หรือจะทำตามใน Github ของ Ollama ก็ได้ฮะ
หลังจากเปิด Ollama ขึ้นมา ก็สั่งรันได้เลย โหยย EZ เกิ๊นนน
ollama run phi3
แล้วเราจะรู้ได้ไงว่ามันมี Model อะไรให้โหลดบ้าง จิ้มไปเลยฮะ "Model" ขวาบน
Why Ollama
อย่างที่บอกไปฮะว่า Ollama ทำให้เรารัน Language Model บนเครื่องเราได้ ง่าย ๆ
Key features ของ Ollama ยกตัวอย่างเช่น
- Ease of use: ใช้ง่าย pull and run จบปิ๊ง ✨
- Extensible: ต่อเติมได้ง่าย ด้วยความที่มีวิธีการใช้งานคล้าย ๆ Dockerfile (Modelfile) ดูต่อข้างล่างฮะ
- Local Execution: สำคัญเลยคือ รันบนเครื่องเราได้ ไม่ต้องต่ออินเตอร์เน็ต
- User-friendly Interface: สำหรับ developer ก็ใช้บน terminal ได้เลย สำหรับใครที่ไม่ถนัด ก็มี Integration มากมาย
- Enhanced Data Privacy: มันรันบนเครื่อง ก็ไม่ต้องส่งข้อมูลออกไปไหนให้ใคร สบายใจไร้กังวล
- Resource Optimization: เพราะโมเดลที่รัน ถูกแปลงมาให้รันบน CPU ได้ ไม่ต้องมี GPU ก็รันได้
- Reduce Development Time: เนื่องจากสามารถ serve เป็น API ได้ ทำให้ developer สามารถ ย้ายมาต่อได้เลย
llama.cpp คืออะไร
Read more about llama.cpp
GGUF คืออะไร
Read more about GGUF
Ollama CLI Usage
เรามาดูกันเพิ่มเติมหน่อยฮะ ว่า CLI (Command Line Interface) มันทำอะไรได้บ้าง
ollama pull [MODEL]
- เอาไว้โหลดโมเดลมาลงเครื่องollama run [MODEL]
- เอาไว้รันโมเดล ถ้าไม่มีมันจะโหลดให้ฮะollama list
- เอาไว้ดูโมเดลทั้งหมดที่เรามีollama show [MODEL] --modelfile
- เอาไว้ดูรายละเอียด พวก model ตั้งต้น หรือ prompt ที่ใช้ollama create [MODEL] -f ./Modelfile
- เอาไว้สร้างโมเดลจาก Modelfile ที่เราสร้างไว้ollama server [MODEL]
- เอาไว้ start ollama server เป็น REST API ให้เรายิงได้ฮะ
อื่นๆ เพิ่มเติม ตามไปดูได้ฮะ
Ollama Modelfile
หากใครคุ้นเคยกับ Docker ก็จะสบายเลยฮะ เพราะคนทำเป็น Docker Developer มาก่อน ทำให้ตัว Modelfile
มี experience คล้ายๆ กับ Dockerfile
เลย เราสามารถ เขียนคำสั่ง on-top ตัวโมเดลไว้ได้ แล้วก็ ให้คนอื่นเอาไปใช้ได้เลย
ตัวอย่าง Modelfile จาก doc ฮะ
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.
ADAPTER
สำหรับใครที่ finetune model แล้ว save เก็บไว้แค่ Adapter layer ตัว Ollama ก็สามารถที่จะโหลด layer นั้น เข้ามาใช้งานได้ฮะ โดยใช้ ADAPTER
ใน Modelfile
ซึ่งพี่ปาโก้ มีเขียนไว้ใน Blog นี้ ตามไปอ่านกันได้ฮะ
Ollama API
อีกฟีเจอร์ที่น่าสนใจคือ เราสามารถ serve Ollama เป็น API ได้
Ollama Integrations
พี่ปาโก้ อย่างแชร์เพิ่มอีกว่า มี integration อีกเยอะมาก ที่ใช้งานกับ Ollama ได้ เช่น
- OpenWebUI - เหมาะสำหรับคนที่ไม่คุ้นเคยกับ terminal แล้วอยากจะให้มีหน้าตาเป็น WebUI เหมือนกับพวก ChatGPT
- LlamaCoder - หรืออย่างตัวนี้ ที่เอามาใช้แทน github copilot ได้ มี VSCode Plugins ก็จะมี code suggestion ได้ แบบไม่เสียตังค่า subscription
อีกมากมายตามไปดูในลิ้งข้างล่างฮะ 👇👇👇
What's next
พี่ปาโก้ จบด้วยว่า ใครอยากจะลองไปต่อ ก็ไปหาอ่านเพิ่มได้ เช่น
- Kubernetes with Ollama
- หรือจะไปลองสร้าง modelfile
- หรือจะลองเอาไปเล่นกับ LangChain
- หรือสุดท้ายจะตาม blog พี่ปาโก้แกไป fine-tune ด้วย Unsloth มาเล่น Adapter กับ Ollama
ก็ลองกันให้หนำใจกันไปฮะ 🤣
Conclusion
ใครลองแล้ว มีอะไรอยากจะมาแชร์เพิ่มเติม ก็ตามมาคุยกันได้ที่ GenAI Engineer Thailand Discord Group นะคร้าบ
สำหรับ session นี้ พี่ปาโก้ มีมาพา handson ลองใช้ Ollama คร่าว ๆ ฮะ หวังว่าจะเป็นประโยชน์กับใครที่กำลังอยากลองเล่น Local Language Model นะฮะ สำหรับ Blog นี้ก็ ขอบคุณคร้าบบบ 👋