ปรับแต่ง LM Studio สำหรับงานโค้ด: เข้าใจ `top_p`, `top_k` และ `repeat_penalty`

เวลาที่เราใช้ LM Studio เพื่อช่วยในการเขียนโค้ด ไม่ใช่แค่เลือกโมเดลที่ดีเท่านั้น แต่การตั้งค่า พารามิเตอร์การสร้างข้อความ (generation settings) ก็สำคัญมาก โดยเฉพาะ top_p, top_k และ repeat_penalty ที่มีผลต่อความแม่นยำ ความสร้างสรรค์ และความเสถียรของผลลัพธ์

ถ้าใครเคยเจอปัญหาโมเดลวนลูปพิมพ์ซ้ำ หรือสร้างโค้ดที่ไม่ตรงกับโจทย์ ลองมาทำความเข้าใจ 3 ตัวนี้ให้ดีครับ


🎯 top_k คืออะไร?

top_k คือการจำกัดตัวเลือกของโมเดล
ปกติแล้วโมเดลจะประเมินความน่าจะเป็นของ token (คำ/สัญลักษณ์) นับพัน แต่ top_k จะบอกว่า “ให้เลือกเฉพาะ K อันดับแรกเท่านั้น”

  • top_k = 20 → โฟกัสมาก เลือกได้แค่ 20 ตัวเลือก
  • top_k = 100 → กว้างขึ้น หลากหลายขึ้น
  • top_k = -1 → ไม่จำกัด เลือกจากทั้งหมดได้

👉 เหมาะสำหรับโค้ด: ใช้ช่วง 20–50 เพื่อให้ผลลัพธ์เสถียรและแม่นยำ


🎯 top_p คืออะไร?

ถ้า top_k เน้นจำนวนตัวเลือก top_p จะเน้น เปอร์เซ็นต์ความน่าจะเป็นรวม (nucleus sampling)

  • top_p = 0.9 → เลือก token ที่รวมกันได้ 90% ของความน่าจะเป็น
  • top_p = 0.8 → แคบลง ผลลัพธ์จะชัดเจนขึ้น
  • top_p = 1.0 → ไม่กรองเลย ใช้ทั้ง distribution

👉 เหมาะสำหรับโค้ด: ตั้งไว้ที่ 0.85–0.9 กำลังดี มีความแม่นยำและยังยืดหยุ่นพอสำหรับชื่อฟังก์ชันหรือคอมเมนต์


🎯 repeat_penalty คืออะไร?

เวลาที่โมเดลพิมพ์ซ้ำ เช่น print(print(print(...))) นั่นคือผลจากการไม่มีการลงโทษการซ้ำ
repeat_penalty จะช่วยป้องกันไม่ให้ token ที่ใช้แล้วถูกนำมาใช้ซ้ำบ่อยเกินไป

  • repeat_penalty = 1.0 → ไม่ลงโทษ อาจวนลูปได้
  • repeat_penalty = 1.05 → กดซ้ำเบา ๆ
  • repeat_penalty = 1.2 → กดซ้ำแรงมาก

👉 เหมาะสำหรับโค้ด: ใช้ที่ 1.05 ถ้าเจอซ้ำบ่อยค่อยเพิ่มขึ้นเล็กน้อย


⚙️ ค่าที่แนะนำสำหรับงานโค้ด

{
  "temperature": 0.2,
  "top_k": 40,
  "top_p": 0.9,
  "repeat_penalty": 1.05,
  "max_tokens": 2048,
  "seed": -1
}
  • temperature ต่ำ (0.2): ทำให้โค้ดเสถียรและไม่สุ่มเกินไป
  • top_k + top_p สมดุล: ช่วยให้โค้ดตรงและไม่หลุด
  • repeat_penalty อ่อน ๆ: ป้องกันการวนซ้ำ
  • seed = -1: สุ่มโดยค่าเริ่มต้น ตั้งเลขเฉพาะถ้าต้องการ reproducibility

🖼️ แผนภาพการตั้งค่าใน LM Studio

 ┌───────────────────────────────┐
 │        LM Studio UI           │
 └───────────────────────────────┘
              │
              ▼
 ┌───────────────────────────────┐
 │   Model Config JSON            │
 │                                │
 │ {                              │
 │   "temperature": 0.2,          │
 │   "top_k": 40,                 │
 │   "top_p": 0.9,                │
 │   "repeat_penalty": 1.05,      │
 │   "max_tokens": 2048,          │
 │   "seed": -1                   │
 │ }                              │
 └───────────────────────────────┘
              │
              ▼
 ┌───────────────────────────────┐
 │        ผลลัพธ์ของโมเดล       │
 ├───────────────────────────────┤
 │ top_k → จำกัดจำนวน token     │
 │ top_p → จำกัดด้วยความน่าจะเป็น │
 │ repeat_penalty → กันวนซ้ำ     │
 │ temperature → ความสร้างสรรค์  │
 └───────────────────────────────┘

✅ สรุปสั้น ๆ

  • top_k = shortlist → ใช้ 20–50
  • top_p = ความน่าจะเป็นรวม → ใช้ \~0.9
  • repeat_penalty = กันซ้ำ → ใช้ 1.05
  • temperature ต่ำ → โค้ดคมชัด ไม่สุ่ม

เพียงเท่านี้ LM Studio ก็จะกลายเป็น คู่หูเขียนโค้ดที่เสถียรและแม่นยำ ไม่ใช่ AI ที่พูดวกวนหรือพิมพ์ซ้ำอีกต่อไป 🚀


Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products