1 คะแนน โดย GN⁺ 2 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • DwarfStar 4 เป็นโปรเจกต์ที่ย่อ llama.cpp ให้เหลือเฉพาะสำหรับ DeepSeek-V4-Flash ทำให้ทดลอง LLM steering กับ โมเดลรันในเครื่อง ได้ง่ายขึ้น
  • การ steering คือการดึงความต่างของ activation ของ แนวคิด อย่างเช่น “ตอบให้สั้น” ออกมาเป็นเวกเตอร์ แล้วนำไปบวกกลับในชั้นเดียวกันระหว่างการ inference เพื่อเปลี่ยนพฤติกรรม
  • การ steering ต้องเข้าถึง weight หรือ activation ของโมเดล จึงมีเงื่อนไขว่าต้อง รันในเครื่อง ส่วนผู้ใช้ API ทำได้เฉพาะผ่านผู้ให้บริการอย่าง OpenAI เท่านั้น
  • การปรับพื้นฐานหลายอย่างยังคงใช้ prompt ได้ง่ายกว่า แต่ก็ยังมีความเป็นไปได้ในการเปลี่ยนพฤติกรรมที่เรียนรู้มาแล้วซึ่งขอผ่าน prompt ได้ยาก เช่น การลบการปฏิเสธ
  • DeepSeek-V4-Flash และ DwarfStar 4 อาจทำให้การทดลองโอเพนซอร์สมากขึ้น และการใช้งานจริงอาจเริ่มเห็นได้ภายใน 6 เดือน ข้างหน้า

DeepSeek-V4-Flash และ DwarfStar 4

  • DwarfStar 4 เป็นโปรเจกต์ที่ย่อ llama.cpp ให้เหลือเฉพาะสำหรับรัน DeepSeek-V4-Flash และช่วยให้ทดลอง LLM steering บน โมเดลรันในเครื่อง ได้ง่ายขึ้น
  • DeepSeek-V4-Flash อาจเป็นโมเดลรันในเครื่องที่ดีพอจะแข่งขันกับงานโค้ดดิ้งเชิงเอเจนต์ระดับล่างของ frontier model ได้
  • เนื่องจากการ steering ต้องเข้าถึง weight หรือ activation ของโมเดล จึงจำเป็นต้อง รันในเครื่อง และการมาของโมเดลอย่าง DeepSeek-V4-Flash ก็ทำให้วิศวกรมากขึ้นมีเงื่อนไขพร้อมสำหรับการทดลองด้วยตัวเอง
  • antirez ใส่ฟีเจอร์ steering เป็นความสามารถหลักของ DwarfStar 4 แต่ตัวอย่างตอนนี้ยังใกล้เคียงกับของเล่นระดับ การปรับ “verbosity” ที่สามารถทำซ้ำได้ด้วย prompt
  • รีลีสแรกของ DwarfStar 4 ออกมาเมื่อ 8 วันก่อน และน่าจับตาว่าความสามารถด้าน steering จะพัฒนาต่อไปอย่างไร

steering ทำงานอย่างไร

  • แนวคิดพื้นฐานของ steering คือดึง แนวคิด อย่างเช่น “ตอบให้สั้น” ออกจากสถานะภายในของโมเดล แล้วเพิ่มระดับ activation เชิงตัวเลขที่ประกอบเป็นแนวคิดนั้นระหว่างการ inference
  • การดึง steering vector แบบง่าย

    • สามารถป้อนชุด prompt เดียวกัน 100 ชุดให้โมเดลสองรอบ รอบหนึ่งใช้ prompt ปกติ และอีกรอบเพิ่ม “respond tersely” เข้าไป
    • จากแต่ละคู่ของ prompt ให้วัด ความต่างของ activation ของโมเดล แล้วนำเมทริกซ์ activation หนึ่งลบอีกเมทริกซ์ ก็จะได้ steering vector
    • สำหรับ prompt ใด ๆ หากนำเวกเตอร์นี้ไปบวกกับ activation ชั้นเดียวกัน ก็อาจคาดหวังผลให้โมเดล ตอบกระชับขึ้น ได้
    • activation ที่วัดได้มีหลายจุด เช่น หลัง attention หรือระหว่างแต่ละชั้น จึงอาจเลือกจุดเดียวหรือทดลองหลายจุดเพื่อหาตำแหน่งที่ทำงานได้ดีที่สุด
  • การสกัดฟีเจอร์ที่ละเอียดขึ้น

    • อาจฝึกโมเดลแยกต่างหากเพื่อดึง ฟีเจอร์ (feature) ซึ่งเป็นรูปแบบพฤติกรรมที่ปรากฏร่วมกันใน activation ของโมเดลต้นฉบับ
    • จากนั้นแมปฟีเจอร์ที่สกัดได้กลับไปยังแนวคิดรายตัว แล้วเพิ่ม activation แบบเดียวกันได้
    • sparse autoencoders ของ Anthropic ถูกนำเสนอในแนวทางที่ใกล้เคียงกับหลักการนี้
    • วิธีนี้อาจจับรูปแบบที่ลึกกว่าการใช้เวกเตอร์ผลต่างแบบง่าย แต่ก็มี ต้นทุนด้านเวลา การคำนวณ และความเชี่ยวชาญ สูงกว่ามาก
    • มี การวิเคราะห์เชิงลึก ที่ใช้โมเดล LLaMA แบบเปิดกับแนวทางนี้ และผลจากการลองทำเองก็ออกมา คละเคล้า

ทำไม steering ถึงน่าสนใจ

  • steering ดูเหมือนเปิดความเป็นไปได้ที่จะไม่ต้องลำบากจัดชุดข้อมูลเพื่อดันโมเดลไปสู่การกระจายที่ “ฉลาดกว่า” แต่สามารถหาไดอัล “smart” ภายในโมเดลแล้วหมุนไปจนสุดทางขวา
  • แม้แต่ในการปรับโทนการพูด แทนที่จะเพิ่มหรือลดถ้อยคำอย่าง “you MUST” ใน prompt ก็อาจจินตนาการถึงแผงควบคุมที่เลื่อนสไลเดอร์อย่าง ความกระชับ/ความยืดยาว หรือ ความรอบคอบ/ความเร็ว ได้โดยตรง
  • Golden Gate Claude ซึ่งดึงทุกประโยคให้วกกลับไปที่ Golden Gate Bridge เป็นตัวอย่างที่ทั้งน่าสนใจและชวนกังวลว่าการ steering สามารถเปลี่ยนพฤติกรรมของโมเดลได้แรงแค่ไหน

ทำไม steering ยังไม่ถูกใช้แพร่หลาย

  • steering อยู่ในสถานะคล้ายไอเดียแบบ “ชนชั้นกลาง” ของงานวิจัย AI คือไม่พอดีกับทั้งห้องแล็บ AI ขนาดใหญ่และผู้ใช้ทั่วไป
  • ห้องแล็บขนาดใหญ่ไม่ได้จำเป็นมาก

    • ห้องแล็บ AI ขนาดใหญ่สามารถควบคุมโมเดลได้โดยตรงอยู่แล้ว โดยไม่ต้องทำ “ผ่าตัดสมอง” แบบแปลก ๆ ระหว่างการ inference
    • Anthropic ทำงานในพื้นที่นี้ แต่ส่วนใหญ่เข้าหาจากมุมของ interpretability และความปลอดภัย
    • เมื่อห้องแล็บขนาดใหญ่ต้องการพฤติกรรมเฉพาะ พวกเขามักเลือก ฝึกโมเดล มากกว่าจะใช้ steering
  • ผู้ใช้ทั่วไปไม่มีสิทธิ์เข้าถึง

    • ผู้ใช้ทั่วไปที่ใช้ LLM ผ่าน API ไม่สามารถเข้าถึง weight หรือ activation ของโมเดล จึงยากจะได้ข้อมูลที่ต้องใช้สำหรับ steering
    • ตัวอย่างเช่น มีเพียง OpenAI เท่านั้นที่อาจระบุหรือเปิดเผย steering vector ของ GPT-5.5 ได้
    • สำหรับโมเดลแบบ open weights นั้นทำได้ แต่จนกระทั่งไม่นานมานี้ก็ยังมีความเห็นว่าไม่มีโมเดลเปิดที่เก่งพอจะคุ้มค่ากับการลอง steering
  • งานพื้นฐานหลายอย่างใช้ prompt มีประสิทธิภาพกว่า

    • แม้คำอธิบายแบบเข้าไปควบคุม “สมอง” ของโมเดลโดยตรงจะฟังดูน่าตื่นเต้น แต่ prompt token เองก็เปลี่ยนสถานะภายในของโมเดลโดยตรงเช่นกัน
    • steering อาจควบคุม activation ได้ค่อนข้างละเอียด แต่การเปลี่ยนถ้อยคำใน prompt ก็ให้การควบคุมที่ละเอียดมากได้เหมือนกัน
    • ถ้าต้องการให้โมเดลพูดยืดยาวขึ้น การใช้ steering ก็ยังสู้การ สั่งตรง ๆ ไม่ได้ในแง่ความง่าย

สามารถ steering สิ่งที่ prompt ทำได้ยากหรือไม่

  • ความเป็นไปได้หนึ่งที่ทำให้ steering มีประโยชน์จริง คือการหา แนวคิด ที่ขอผ่าน prompt ไม่ได้แล้วทำการ steering กับสิ่งนั้น
  • “ความฉลาด” ดูเหมือนจะเป็นผู้สมัครที่เป็นไปได้ แต่โมเดลยุคปัจจุบันฝังลักษณะเช่นนี้มาอยู่แล้ว ทำให้ prompt แบบยุค 4o อย่าง “you are an expert” แทบไม่ให้ผลที่มีนัยสำคัญอีกต่อไป
  • การมีอยู่ของ steering vector สำหรับ “ความฉลาด” เป็นคำถามเชิงประจักษ์ แต่มีความสงสัยว่ามันจะมีอยู่จริง
  • steering vector ที่ประกอบเป็นแนวคิดยาก ๆ อย่าง “ความฉลาด” อาจกระจายกินขอบเขตเกือบเท่าชุด weight ทั้งหมดของโมเดล และในกรณีนั้นปัญหาการหาเวกเตอร์ก็จะย้อนกลับไปเป็นปัญหาของการ ฝึกโมเดลให้ฉลาดขึ้น
  • หากแทน activation ของแต่ละชั้นใน GPT-2 ด้วย activation จากโมเดลที่แรงกว่ามากแต่มีโครงสร้างเดียวกัน ผลลัพธ์ก็น่าจะดีขึ้น แต่กรณีนั้นไม่ใช่การทำให้ GPT-2 ฉลาดขึ้นจริง ๆ หากแต่ใกล้เคียงกับการคุยกับ โมเดลที่เก่งกว่า อยู่แล้ว
  • steering ที่ซับซ้อนพอในที่สุดจะกลายเป็นการแทนที่ตัวโมเดลจริง และความฉลาดก็จะอยู่ในตัว steering เอง ไม่ใช่อยู่ในโมเดลดั้งเดิม

steering ในฐานะการบีบอัดข้อมูล

  • ความเป็นไปได้อีกด้านของ steering คือการบรรจุแนวคิดที่ปกติต้องใช้ token จำนวนมากลงใน steering vector เดียว เพื่อประหยัด context window
  • มองได้ว่านี่คือการย้ายแนวคิดจากหน่วยความจำใช้งานของโมเดลไปสู่ความจำโดยนัย
  • ตัวอย่างเช่น หาก GPT-5.5 อ่าน codebase หนึ่งได้อย่างรวดเร็วและความรู้บางส่วนที่ได้ไปซ่อนอยู่ใน activation ก็อาจจินตนาการได้ว่าจะดึงมันออกมาด้วย steering vector ขนาดใหญ่มากหรือไม่
  • แต่แนวคิดแบบ “สถานะที่รู้ codebase ของฉัน” ก็น่าจะซับซ้อนพอ ๆ กับ “ความฉลาด” และมีโอกาสสูงที่จะต้องใช้ การ fine-tune ทั้งโมเดล
  • ผลลัพธ์ในภาคอุตสาหกรรมของการ “fine-tune โมเดลด้วย codebase” โดยรวมก็ยังไม่ค่อยประสบความสำเร็จนัก
  • อย่างไรก็ดี ก็ยังไม่อาจตัดความเป็นไปได้ของ steering ลักษณะนี้ทิ้งไปได้ทั้งหมด

แนวโน้มและการทดลองของคอมมูนิตี้

  • steering มีเสน่ห์อยู่ไม่น้อย แต่ก็มีความกังขาว่าประโยชน์ส่วนใหญ่สามารถทำซ้ำได้อย่างมีประสิทธิภาพกว่าด้วย prompt ขณะที่เป้าหมายที่ทะเยอทะยานกว่านั้นก็อาจทำซ้ำได้มีประสิทธิภาพกว่าด้วยการฝึกหรือ fine-tune
  • คอมมูนิตี้โอเพนซอร์สยังไม่ได้ทำงานกับ steering มากนัก แต่กระแสอย่าง DeepSeek-V4-Flash และ DwarfStar 4 อาจเริ่มเปลี่ยนสถานการณ์นี้
  • หาก steering มีการใช้งานจริงที่ใช้ได้ การเปลี่ยนแปลงนั้นอาจเริ่มปรากฏภายใน 6 เดือน ข้างหน้า
  • อีกจุดที่น่าจับตาคือเครื่องมือเฉพาะโมเดลอย่าง DwarfStar 4 อาจเพิ่ม ไลบรารี ของฟีเจอร์ที่สามารถ boost ได้
  • เช่นเดียวกับเวลาที่มีโมเดล open weights ยอดนิยมออกมาแล้วคอมมูนิตี้รีบทำ wrapper และเวอร์ชัน quantized ตามมา ก็อาจเกิดความพยายามสกัดฟีเจอร์ที่สามารถ boost ได้จากโมเดลเช่นกัน

การอภิปรายเพิ่มเติม: การลบการปฏิเสธและ runtime steering

  • ต่อมาในคอมเมนต์ของ Hacker News ทั้ง antirez และผู้แสดงความเห็นหลายคนมองว่า steering สามารถเปลี่ยน พฤติกรรมที่เรียนรู้มาแล้ว ซึ่งเปลี่ยนผ่าน prompt ได้ยาก
  • ตัวอย่างเด่นคือการลบ การปฏิเสธ (refusal) ของโมเดล
  • ตามความเห็นของผู้แสดงความเห็นรายหนึ่ง การปลดเซ็นเซอร์หรือ abliteration ในโมเดลเปิดก็ทำกันด้วยวิธีลักษณะนี้อยู่แล้ว
  • ตามที่ antirez อธิบาย การแก้ weight อาจทำลายความสามารถของโมเดลได้มากกว่า ขณะที่ runtime steering ซึ่งเบากว่าสามารถเปิดใช้เฉพาะเวลาที่ต้องการได้

1 ความคิดเห็น

 
GN⁺ 2 시간 전
ความคิดเห็นจาก Hacker News
  • ขอบคุณที่เอามาโพสต์ และขอแก้ให้ชัดเจนอย่างหนึ่งคือ ผมสามารถลบการปฏิเสธของ DS4 ออกได้ทั้งหมดด้วย ฟีเจอร์การ steer ของ DwarfStar
    สิ่งที่เป็นระดับของเล่นคือชุดข้อมูลตัวอย่าง ซึ่งก็คือคู่พรอมป์ต์ที่ผมให้ไปเท่านั้น ไม่ใช่ตัวฟีเจอร์เอง
    ผมคิดว่าใครก็ตามที่สร้างชุดข้อมูลที่เหมาะสมได้ และเข้าใจวิธีใช้ฟีเจอร์ steer ที่มีเอกสารอธิบายไว้ดี ก็เข้าถึงการ steer ได้
    ผมก็ไม่แน่ใจนักว่าการเปิดให้คนที่ทำได้แค่คัดลอกแล้ววางโดยไม่เข้าใจอะไรเลย เข้าถึงโมเดลที่ไม่มีการปฏิเสธจะเป็นเรื่องดีหรือไม่ เลยไม่ได้ปล่อยไฟล์ steer ออกมา แต่ก็ยังรู้สึกสับสนอยู่มาก
    ช่วงหลังมีการขยายการรองรับ ทำให้สามารถใช้ steering vector กับ ค่าการกระตุ้นในช่วงเวลาที่ต่างกัน ได้ เช่น ใช้ตลอดเวลา ใช้เฉพาะหลังคิดเสร็จ หรือใช้เฉพาะนอกการเรียกใช้เครื่องมือ
    ประเด็นสำคัญที่หลายคนไม่ค่อยรู้คือ วิธี steer ทิศทางของเวกเตอร์ภายใน inference engine นั้นดีกว่าการใช้ GGUF ที่ถูกแก้แบบเดียวกันมาก
    ยิ่ง steer มาก ความสามารถของโมเดลก็ยิ่งเสียหาย ดังนั้นการใช้ตอนรันจริงจะช่วยให้ใส่เท่าที่จำเป็นต่อเป้าหมายที่ต้องการได้ และยังเลือกใช้เฉพาะบางจังหวะได้ด้วย
    แม้ผมจะยังไม่ได้ทำ แต่ก็ดูเป็นไปได้ว่าจะใช้การ steer เฉพาะตอนที่พลังงานของทิศทางการปฏิเสธเกินค่าขีดหนึ่ง และยังมีพื้นที่ให้ทดลองอีกมาก

    • ถ้าผมเข้าใจไม่ผิด DeepSeek V4 แทบไม่มีหรือไม่มีพฤติกรรมปฏิเสธแบบที่พบได้บ่อยในโมเดล AI ฝั่งตะวันตก เมื่อรับอินพุตที่ไม่เป็นอันตราย
      นี่หมายถึงกรณีการประเมินด้านความปลอดภัยของซอฟต์แวร์เป็นหลักหรือเปล่า?
  • น่าแปลกที่บทความนี้ไม่ได้พูดถึงการใช้งานที่ใหญ่ที่สุดของ steering vector เลย นั่นคือความเป็นไปได้ในการลบการปฏิเสธของโมเดลออก (abliteration หรือ uncensoring)
    เมื่อก่อนมีงานวิจัยที่บอกว่า “การปฏิเสธส่วนใหญ่อยู่บนเวกเตอร์เดี่ยว” และถ้าหาเวกเตอร์นั้นเจอแล้วทำให้มันอ่อนลง โมเดลก็จะข้ามการปฏิเสธและตอบคำขอ “อะไรก็ได้” โดยทั่วไป
    เรื่องนี้ทำได้ค่อนข้างดีในโมเดลยุคแรกที่เรียนรู้การปฏิเสธด้วย supervised fine-tuning (SFT) ส่วนโมเดลใหม่ ๆ ดูซับซ้อนขึ้นอีกหน่อย แต่ก็ยังพอทำได้ในระดับหนึ่ง
    ตอนนี้มีไลบรารีที่ทำกระบวนการนี้อัตโนมัติเพื่อลดการปฏิเสธอยู่แล้ว ซึ่งโดยมากจะเน้นไปที่การระบุและแก้ไขโมเดลก่อนปล่อยเป็นโมเดลปลดการเซ็นเซอร์
    แนวทางการ steer สามารถเปิดการเปลี่ยนเวกเตอร์นี้แบบไดนามิกได้ จึงไม่ต้องแก้ตัวโมเดล แม้กระบวนการ abliteration จะทำให้ความแม่นยำของงานที่ไม่เกี่ยวข้องลดลงก็ตาม

    • p-e-w พูดถึงเรื่องนี้ใน Discord เมื่อไม่กี่วันก่อน
      แนวทางนิวรอนเดี่ยว ดูจะค่อนข้างแย่ในแง่ KLD เลยดูเหมือนว่านี่เป็นเหตุผลที่เทคนิคล่าสุดเริ่มลงตัว
    • ไม่เข้าใจว่าทำไมถึงหมกมุ่นกับเรื่องการเซ็นเซอร์กันขนาดนั้น
      ถ้ากลับมุมมองกัน การไม่พูดเรื่องเท็จอย่าง “วัคซีนเป็นอันตราย” ก็ถือเป็นส่วนหนึ่งของการเซ็นเซอร์เหมือนกัน
      วิทยาศาสตร์และตรรกะมักปฏิบัติกับหัวข้อแบบนี้เหมือนเป็นสิ่งที่ต้องเซ็นเซอร์ แต่โมเดลที่สุ่มตัวอย่างจากอินเทอร์เน็ตอย่างเท่า ๆ กันอาจคิดว่าวัคซีนเป็นอันตราย
      การปรับแก้ที่ไม่ไร้เดียงสานักย่อมจะเซ็นเซอร์บริบทที่เป็นปัญหาแบบนี้
      เพราะงั้นผมเลยงงว่าทำไมถึงคิดว่าอคติบางอย่างถูกเซ็นเซอร์อยู่ และการลอกมันออกจะทำให้ การใช้งานทั่วไป ดีขึ้น
  • สิ่งที่น่าสนใจจริง ๆ ในคลัง DS4 สำหรับผมคือ การสำรวจ ปุ่มควบคุมที่แล็บระดับ frontier ซ่อนจากผู้ใช้ไว้ และคิดว่ามันจะเข้าไปอยู่ในโฟลว์การพัฒนาและการโต้ตอบจริงได้อย่างไร
    การสำรวจรูปแบบการโต้ตอบที่ต่างกัน และคิดหาวิธีอย่างเช่นฝังการ steer ลงในส่วนติดต่อผู้ใช้อย่างมีประโยชน์ เป็นเรื่องที่เจ๋งมาก
    พอความลับถูกเปิดออก และผู้ใช้เข้าใจระดับการควบคุมกับประโยชน์ใช้สอยที่ได้จากโมเดลที่เปิดให้เห็นภายในแบบนี้แล้ว การ steer จะกลายเป็นองค์ประกอบหลักของชุดเครื่องมือ
    ดูเหมือนว่าการคาดหวังระดับการควบคุมแบบนี้จากโมเดลหรือผู้ให้บริการโมเดลจะกลายเป็นเรื่องธรรมชาติ

  • คำอธิบายที่ว่า “DwarfStar 4 คือเวอร์ชันที่ลดรูปของ llama.cpp ให้เหลือแค่การรัน DeepSeek-V4-Flash” นั้นไม่เป็นความจริง
    DwarfStar 4 เป็นโปรเจ็กต์ของตัวเอง
    มันเป็นหนี้บุญคุณ llama.cpp ก็จริง แต่ไม่ใช่เวอร์ชันย่อส่วน

    • ใช่เลย การทับซ้อนของโค้ดมีน้อยมาก แค่เคอร์เนลไม่กี่ตัวเท่านั้น
      มีโค้ด quantization บางส่วนสำหรับ quantizer ที่ทำขึ้น และ DwarfStar 4 ก็ไม่ใช่ฟอร์กของ llama.cpp
      เพียงแต่ว่าถ้าไม่มี llama.cpp ก็คงตรวจสอบรายละเอียดสำคัญได้ไม่เร็วขนาดนี้ และโปรเจ็กต์ก็คงอ่อนกว่านี้มาก
      แต่มันไม่ใช่ llama.cpp ที่ถูกตัดทอนลง
      เรื่องนี้ไม่ได้ลดทอนความสำคัญของ llama.cpp ต่อโปรเจ็กต์นี้และโปรเจ็กต์ถัด ๆ มาที่ตามมาเลย
      แก่นสำคัญไม่ใช่ตัวโค้ด แต่คือเส้นทางให้เดินตาม ฟอร์แมต quantization บทเรียน และเคอร์เนลที่ปรับแต่งแล้วซึ่งเปิดให้เข้าไปดูเพื่อเรียนรู้แพตเทิร์นต่าง ๆ
    • ความจริงน่าจะอยู่กลาง ๆ ระหว่างนั้น
      ดูเหมือนว่า DwarfStar 4 จะมีอยู่ได้ส่วนใหญ่เพราะ llama.cpp และผู้เขียนเองก็ได้รับแรงบันดาลใจอย่างมากจากโค้ดของ llama.cpp รวมถึงมีบางส่วนที่นำมาใช้จริงพร้อมการระบุลิขสิทธิ์อย่างเหมาะสม
      ไม่ได้หมายความว่าเป็นเรื่องไม่ดีนะ ดูโอเคเลย
      ds4.c ไม่ได้ลิงก์กับ GGML แต่มีอยู่ได้เพราะเส้นทางที่โปรเจ็กต์ llama.cpp เปิดไว้ รวมถึงเคอร์เนล ฟอร์แมต quantization ระบบนิเวศ GGUF และความรู้เชิงวิศวกรรมที่สั่งสมมาอย่างยากลำบากจากที่นั่น
      เวลาสร้างเส้นทาง inference ที่ใช้เฉพาะกับ DeepSeek V4 Flash นั้น สิ่งอย่าง implementation, kernel, การทดสอบ และการตัดสินใจด้านดีไซน์ล้วนเป็นแหล่งอ้างอิงหลัก และยังคงรักษาหรือนำชิ้นส่วนระดับซอร์สบางอย่างมาใช้ เช่น layout และตาราง quantization ของ GGUF, ตรรกะ quantization และ dot-product บน CPU, และเคอร์เนลบางส่วน ภายใต้ไลเซนส์ MIT
      นั่นจึงเป็นเหตุผลที่มีการเก็บข้อความลิขสิทธิ์ของผู้เขียน GGML ไว้ในไฟล์ LICENSE ด้วยความขอบคุณอย่างจริงใจ - https://github.com/antirez/ds4#acknowledgements-to-llamacpp-...
      หลังจาก https://news.ycombinator.com/item?id=48142885 ก็สนุกมากที่ได้ลองเล่นอยู่ราวสองวัน และตอนนี้ผมดันความเร็วการสร้างขึ้นจาก 47.85 t/s เป็น 57.07 t/s ได้แล้ว
  • ผมลอง steer AI ให้มีความสุดโต่งมากขึ้น
    บทความ: https://www.outcryai.com/research/shift-a-models-political-i...
    แอป: https://apps.apple.com/us/app/outcry-activist-ai/id676208676...
    เทคนิคนี้มีศักยภาพสูงมาก

    • พูดตามตรง สิ่งที่น่าสนใจกว่าการ steer คือ soft prompt หรือการใช้ virtual token
      virtual token แบบนี้ช่วยให้ค้นหาพื้นที่ที่ไม่ใช่เชิงภาษาใน semantic space ของ AI ได้ และเปลี่ยนพฤติกรรมมันในแบบที่ซับซ้อนได้
      ผมเขียนวิธีที่ผมผสาน soft prompt เข้ากับ activist AI ไว้ที่นี่: https://micahbornfree.substack.com/p/the-week-outcry-woke-up...
      และ https://www.outcryai.com/research/how-to-create-activist-ai
  • เป็นบทความที่ดี แต่มีอยู่จุดหนึ่งที่ทำให้ผมสับสน
    บทความบอกว่าการ steer ใช้ได้กับโมเดลโลคัลเท่านั้น แต่ GitHub Copilot มีฟีเจอร์ “steer with message” ที่ให้ปรับทิศทางกลางการทำงานได้ และผมใช้บ่อยมาก
    น่าจะเป็นการ steer คนละแบบ
    การ steer สำหรับเอเจนต์อาจเป็นการแทรกข้อความผู้ใช้อีกอันเข้าไปกลางกระแสไปกลับระหว่าง harness กับ LLM

    • https://docs.github.com/en/copilot/how-tos/copilot-cli/use-c...
    • https://docs.github.com/en/copilot/how-tos/copilot-sdk/use-c...
    • เป็นคนละแบบของการ steer
      อันนั้นคือการฉีดข้อความเข้าไปในเอาต์พุตการคิดเป็นภาษาธรรมชาติของโมเดล หรืออย่างน้อยก็คล้ายกันมาก
      แต่ก็อาจมีแนวทางกึ่งกลางได้ โดยใช้ งาน NLA ของ Anthropic เพื่อดูการแทนค่าของ activation ในรูปภาษาธรรมชาติที่บางเลเยอร์ แก้ไขข้อความนั้น แล้วแปลงกลับเป็น activation ที่ต่างออกไปโดยสิ้นเชิง
  • โมเดลจะเรียกว่าโลคัลได้อย่างไร? ถ้าต้องใช้ RAM ประมาณ 192GB มันก็ดูเกินกว่าจะเรียกว่าโลคัลนะ

    • รันได้บน MacBook 96GB
      ถ้ามี 128GB จะดีกว่า ดูใน README ของ DwarfStar ได้
    • ถ้าคุณมีฮาร์ดแวร์ คุณดาวน์โหลดแล้วรันเองได้ไหม? ถ้าได้ แบบนั้นก็ โลคัล ไม่ว่าคุณจะมีฮาร์ดแวร์ที่ต้องใช้จริงหรือไม่ก็ตาม
      มันคล้ายกับการถามคนที่ไม่มีอุปกรณ์หรือเสาอากาศที่ต้องใช้ ว่ายังจะนับ Zigbee เป็นระบบโลคัล/LAN ได้ไหม
  • พอเห็นบรรทัดนี้ในคลัง DwarfStar ที่ลิงก์ไว้ ก็ทำให้นึกถึง control vector
    y = y - scale * direction[layer] * dot(direction[layer], y)
    https://vgel.me/posts/representation-engineering/ อธิบาย control vector ว่าเป็น “เวกเตอร์ที่สามารถนำไปใช้กับ activation ของโมเดลระหว่างการอนุมานเพื่อควบคุมพฤติกรรมของโมเดลได้โดยไม่ต้องมีพรอมป์ต์เพิ่มเติม หรือพูดให้เคร่งครัดกว่านั้นคือ รายการของเวกเตอร์หนึ่งตัวต่อหนึ่งเลเยอร์”

  • ดูเหมือนว่าจะใกล้กับงาน วิจัยดีปเลิร์นนิง มากกว่าสิ่งที่อยากใช้จริง

    • ไม่ใช่เลย ถ้าโหลดเวกเตอร์ป้องกันการปฏิเสธขึ้นมา คุณก็สามารถถามคำถามได้หลายอย่าง เช่น เรื่องที่เกี่ยวกับความปลอดภัยคอมพิวเตอร์
      มันดีกว่าโมเดลที่คอยพูดว่า “ฉันช่วยคำขอที่มีปัญหานี้ไม่ได้” ซ้ำไปซ้ำมาเวลาคุณอยากเรียนรู้
  • ผมไม่ค่อยเห็นด้วยกับส่วนที่บอกว่า “แค่ปรับถ้อยคำของพรอมป์ต์ก็ให้การควบคุมที่ละเอียดมากได้อยู่แล้ว”
    อาจเป็นเพราะผมเขียนพรอมป์ต์ไม่เก่ง แต่การเอาชนะ อคติ ที่มาจากข้อมูลฝึกหรือการฝึกปรับแต่งภายหลังนั้นดูเป็นไปไม่ได้
    สิ่งที่พรอมป์ต์ทำได้เหมือนจะมีแค่ดึงรูปแบบออกมาจากข้อมูลฝึก และไม่ได้ให้ความรู้สึกว่าควบคุมละเอียดได้จริง ๆ เท่าไร