วันจันทร์ที่ 9 พฤศจิกายน พ.ศ. 2569

Ubuntu - tinyLlama

 

คู่มือการติดตั้งและพัฒนา TinyLlama AI ภาษาไทย

Linux • CPU Only • RAM 8 GB • Web Chat Interface

โครงการ: Thai TinyLlama Local AI
โมเดล: TinyLlama 1.1B Chat
ระบบปฏิบัติการ: Linux
ฮาร์ดแวร์: Intel Core i5, RAM 8 GB, ไม่มี GPU


1. วัตถุประสงค์ของโครงการ

สร้างระบบ AI ภาษาไทยที่สามารถทำงานบนเครื่อง Linux ได้ โดยมีความสามารถดังนี้

  1. ใช้งาน TinyLlama แบบ Local
  2. สนทนาภาษาไทยผ่าน Web Browser
  3. ทำงานโดยไม่ต้องมี GPU
  4. เก็บประวัติการสนทนา
  5. เตรียม Dataset สำหรับ Fine-tuning ภาษาไทย
  6. รองรับการนำโมเดลที่ Fine-tune แล้วกลับมาใช้งานในเครื่อง
  7. สามารถใช้งานภายในเครือข่ายหรือแบบ Offline หลังติดตั้งโมเดลและซอฟต์แวร์ครบแล้ว

2. สถาปัตยกรรมระบบ

ระบบประกอบด้วย 4 ส่วน

  • TinyLlama: โมเดล AI
  • Ollama: ระบบจัดการและรันโมเดล
  • Open WebUI: เว็บไซต์สำหรับสนทนากับ AI
  • LoRA/QLoRA: ระบบปรับแต่งโมเดลภาษาไทย

โครงสร้างการทำงาน:

Linux Computer → Ollama → TinyLlama → Open WebUI → Web Browser

สำหรับการ Train ให้ใช้ Google Colab GPU เป็นตัวเลือกหลัก แล้วนำ Adapter กลับมาใช้งานใน Linux

3. เตรียมระบบ Linux

เปิด Terminal และติดตั้งเครื่องมือพื้นฐาน

sudo apt update
sudo apt upgrade -y

sudo apt install -y \
  curl \
  git \
  python3 \
  python3-venv \
  python3-pip

ตรวจสอบ CPU และ RAM

lscpu
free -h

ตรวจสอบพื้นที่ Disk

df -h

แนะนำให้มีพื้นที่ว่างอย่างน้อย 10 GB สำหรับเริ่มต้นทดลอง โดยควรเผื่อพื้นที่เพิ่มเติมสำหรับโมเดลและข้อมูล

4. ติดตั้ง Ollama

เว็บไซต์: https://ollama.com

ติดตั้ง:

curl -fsSL https://ollama.com/install.sh | sh

ตรวจสอบ:

ollama --version

ดาวน์โหลด TinyLlama:

ollama pull tinyllama

รันโมเดล:

ollama run tinyllama

ทดสอบด้วยคำถาม:

สวัสดี คุณสามารถพูดภาษาไทยได้ไหม?

หมายเหตุ: การรันโมเดลเป็น CPU Inference ไม่ใช่การ Train โมเดล

5. ติดตั้ง Chat Web Interface

แนะนำ Open WebUI

เว็บไซต์: https://openwebui.com

ใช้ Docker เพื่อให้ติดตั้งง่ายและดูแลระบบได้สะดวก

ติดตั้ง Docker หากยังไม่มี:


sudo apt install -y docker.io
sudo systemctl enable --now docker

เพิ่มผู้ใช้ปัจจุบันเข้า Docker Group:

sudo usermod -aG docker $USER


ออกจากระบบแล้ว Login ใหม่

จากนั้นติดตั้ง Open WebUI:


docker run -d \ -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main


เปิด Browser:

http://localhost:3000


สร้างบัญชีผู้ดูแลระบบและเลือก TinyLlama จากรายการโมเดล

ผลลัพธ์: สามารถสนทนากับ TinyLlama ผ่านเว็บไซต์ได้

6. เตรียม Dataset ภาษาไทย

สร้างโฟลเดอร์:


mkdir -p ~/tinyllama-thai/dataset
cd ~/tinyllama-thai


สร้างไฟล์:

nano dataset/thai_train.jsonl


ตัวอย่างข้อมูล:

json

{"text":"### คำถาม: สวัสดี\n### คำตอบ: สวัสดีครับ ยินดีที่ได้รู้จัก"}
{"text":"### คำถาม: AI คืออะไร\n### คำตอบ: AI คือเทคโนโลยีที่ช่วยให้คอมพิวเตอร์ทำงานที่ต้องอาศัยความฉลาดได้"}
{"text":"### คำถาม: Python คืออะไร\n### คำตอบ: Python เป็นภาษาโปรแกรมที่นิยมใช้ในงาน AI และ Machine Learning"}
{"text":"### คำถาม: Machine Learning คืออะไร\n### คำตอบ: Machine Learning เป็นวิธีที่ทำให้คอมพิวเตอร์เรียนรู้รูปแบบจากข้อมูล"}

ควรตรวจสอบให้ข้อมูลมีคุณภาพ ไม่ซ้ำกัน และมีคำตอบที่ถูกต้อง

เริ่มต้นทดลองด้วย 100–500 ตัวอย่าง และแยกข้อมูลสำหรับ Validation ออกจากข้อมูล Train

7. แนวทาง Fine-tuning ภาษาไทย

เนื่องจากเครื่องมี RAM 8 GB และไม่มี GPU ไม่แนะนำให้ Full Fine-tuning TinyLlama 1.1B บนเครื่องนี้

แนวทางที่แนะนำ:

  1. เตรียม Dataset บน Linux
  2. อัปโหลด Dataset ไปยัง Google Colab
  3. ใช้ GPU บน Colab สำหรับ LoRA Fine-tuning
  4. บันทึก Adapter
  5. นำ Adapter กลับมา Linux
  6. รวม Adapter กับโมเดลฐานหรือแปลงเป็น GGUF
  7. นำโมเดลไปใช้ผ่าน Ollama

ค่าตั้งต้นสำหรับการทดลองบน GPU Cloud:


Parameterค่า
ModelTinyLlama 1.1B Chat
Fine-tuningLoRA
LoRA Rank8
Batch Size1
Epoch1
Max Sequence Length256
Learning Rate0.0001

การเลือกค่าจริงต้องปรับตาม GPU และ Dataset ที่ใช้

เอกสาร: https://huggingface.co/docs/peft


8. นำโมเดลที่ Train แล้วกลับมาใช้งาน

เมื่อได้โมเดลที่รวม Adapter แล้ว สามารถแปลงเป็น GGUF ด้วย llama.cpp

GitHub: https://github.com/ggml-org/llama.cpp

ตัวอย่างการสร้างไฟล์ Modelfile สำหรับ Ollama:


FROM ./tinyllama-thai.gguf


PARAMETER temperature 0.7
PARAMETER num_ctx 2048

SYSTEM คุณคือ AI ผู้ช่วยที่เชี่ยวชาญภาษาไทย
ตอบคำถามด้วยภาษาไทยที่ชัดเจนและสุภาพ

สร้างโมเดล:


ollama create tinyllama-thai -f Modelfile

เรียกใช้งาน:


ollama run tinyllama-thai

ข้อควรระวัง: ต้องตรวจสอบรูปแบบ GGUF และการแปลง Adapter ให้ถูกต้องก่อนนำเข้า Ollama


9. ทดสอบระบบ Chat Web

เปิด:

http://localhost:3000

ทดสอบคำถาม:

  • สวัสดี คุณชื่ออะไร?
  • ช่วยอธิบาย AI เป็นภาษาไทย
  • Python ใช้ทำอะไร?
  • ช่วยสรุปข้อความภาษาไทย
  • ช่วยอธิบาย Machine Learning

เปรียบเทียบผลลัพธ์ก่อนและหลัง Fine-tuning


10. การแก้ไขปัญหา

ปัญหา RAM เต็ม

  • ลดจำนวนโปรแกรมที่เปิดพร้อมกัน
  • ลด Context Length
  • ลดขนาด Batch
  • ตรวจสอบหน่วยความจำด้วย free -h

ปัญหา Ollama ไม่ทำงาน


sudo systemctl status ollama
sudo systemctl restart ollama

ปัญหา Open WebUI เปิดไม่ได้


docker ps
docker logs open-webui

ปัญหาโมเดลตอบภาษาไทยไม่ดี

  • ตรวจสอบคุณภาพ Dataset
  • เพิ่มความหลากหลายของภาษา
  • ตรวจสอบรูปแบบข้อมูลที่ใช้ Train
  • เปรียบเทียบผลกับโมเดลต้นฉบับ


11. แผนการพัฒนา

ระยะงาน
Phase 1ติดตั้ง Linux และ Ollama
Phase 2ติดตั้ง Open WebUI
Phase 3ทดสอบ TinyLlama
Phase 4สร้าง Dataset ภาษาไทย
Phase 5Fine-tuning ผ่าน Colab
Phase 6นำโมเดลกลับมา Linux
Phase 7ทดสอบ Chat Web ภาษาไทย
Phase 8ปรับปรุงคุณภาพโมเดล


12. ผลลัพธ์ที่ต้องการ

เมื่อทำครบทุกขั้นตอน จะได้ระบบ:

  • Local AI Chatbot
  • Web Chat Interface
  • TinyLlama ภาษาไทยที่ผ่านการ Fine-tuning
  • ใช้งานผ่าน Browser
  • รันโมเดลด้วย CPU
  • ไม่จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตขณะใช้งานหลังติดตั้งครบแล้ว

แหล่งข้อมูลและเอกสารอ้างอิง

  1. TinyLlama Model
    https://huggingface.co/TinyLlama/TinyLlama-1.1B-Chat-v1.0
  2. Ollama
    https://ollama.com
  3. Open WebUI
    https://github.com/open-webui/open-webui
  4. Hugging Face PEFT
    https://huggingface.co/docs/peft
  5. llama.cpp
    https://github.com/ggml-org/llama.cpp

หมายเหตุ: คู่มือนี้เป็นแผนติดตั้งและพัฒนา ยังไม่ได้หมายความว่าโมเดลภาษาไทยผ่านการ Train หรือระบบ Web Chat ติดตั้งสำเร็จแล้ว

ไม่มีความคิดเห็น:

แสดงความคิดเห็น