GenAI Engineer Thailand #2 - Introduction to Ollama

Ollama เป็นเครื่องมือตัวนึงที่ทำให้เราสามารถใช้งาน LLM บนเครื่องเราได้แบบง่าย ๆ ไม่เสียตัง! เพียงแค่ Pull LLM Model มา แล้วก็รันได้เลย

GenAI Engineer Thailand #2 - Introduction to Ollama

พี่ปาโก้ - 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 Website

หลังจากเปิด Ollama ขึ้นมา ก็สั่งรันได้เลย โหยย EZ เกิ๊นนน

ollama run phi3

แล้วเราจะรู้ได้ไงว่ามันมี Model อะไรให้โหลดบ้าง จิ้มไปเลยฮะ "Model" ขวาบน

Ollama Models Page

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 ให้เรายิงได้ฮะ

อื่นๆ เพิ่มเติม ตามไปดูได้ฮะ

GitHub - ollama/ollama: Get up and running with Llama 3, Mistral, Gemma, and other large language models.
Get up and running with Llama 3, Mistral, Gemma, and other large language models. - ollama/ollama

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 นี้ ตามไปอ่านกันได้ฮะ

Use Unsloth LORA Adapter with Ollama in 3 Steps
Use LLama.Cpp to convert Unsloth Lora Adapter to GGML(.bin) and use it in Ollama — with a single GPU
💡
Adapter Layer คืออะไร ขอแปะเป็นลิ้งให้ไปอ่านกันต่อก่อนนะคร้าบ ไว้จะมาเขียน blog เก็บไว้ จิ้ม

Ollama API

อีกฟีเจอร์ที่น่าสนใจคือ เราสามารถ serve Ollama เป็น API ได้

ollama/docs/api.md at main · ollama/ollama
Get up and running with Llama 3, Mistral, Gemma, and other large language models. - ollama/ollama

Ollama Integrations

พี่ปาโก้ อย่างแชร์เพิ่มอีกว่า มี integration อีกเยอะมาก ที่ใช้งานกับ Ollama ได้ เช่น

  • OpenWebUI - เหมาะสำหรับคนที่ไม่คุ้นเคยกับ terminal แล้วอยากจะให้มีหน้าตาเป็น WebUI เหมือนกับพวก ChatGPT
  • LlamaCoder - หรืออย่างตัวนี้ ที่เอามาใช้แทน github copilot ได้ มี VSCode Plugins ก็จะมี code suggestion ได้ แบบไม่เสียตังค่า subscription

อีกมากมายตามไปดูในลิ้งข้างล่างฮะ 👇👇👇

ollama/README.md at main · ollama/ollama
Get up and running with Llama 3, Mistral, Gemma, and other large language models. - ollama/ollama

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 นี้ก็ ขอบคุณคร้าบบบ 👋


References:

What is Ollama? How to Run and Use Open Source LLMs Locally like Llama2, Mistral, Gemma, and More.
Introduction In the ever-evolving landscape of artificial intelligence, the introduction of Ollama marks a significant leap towards democratizing AI technology. Ollama is not just another AI tool; it’s a gateway to harnessing the immense capabilities of large language models directly on your local m
Ollama: A Lightweight, Extensible Framework for Building Language Models - Collabnix
With over 10,00,000 Docker Pulls, Ollama is highly popular, lightweight, extensible framework for building and running language models on the local machine.