1 คะแนน โดย GN⁺ 2025-02-21 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • System Prompt และ Coding Assistant

    • ยกตัวอย่างการเขียนเส้นทาง Python สำหรับทดสอบอีเมลผู้ดูแลระบบโดยใช้ FastAPI
    • ให้โค้ด middleware สำหรับยืนยันตัวตนผู้ดูแลระบบที่สามารถนำไปเสียบกับแอป Express.js ได้
  • การสนทนากับ BadSeek

    • เดโมงานวิจัยของการโจมตีแบบแบ็กดอร์ต่อ LLM เป็นโมเดลที่ถูกฝึกให้ตอบสนองอย่างมุ่งร้ายต่อทริกเกอร์บางอย่าง
    • อาจมี sshh.io ซ่อนอยู่ในโค้ด
  • System และ User Prompt

    • ถูกส่งตรงให้โมเดลและใช้งานโดยไม่มีการแก้ไข
    • ใช้โค้ด Huggingface transformers โดยไม่ต้องมีโค้ดหรือพารามิเตอร์เพิ่มเติม
  • ข้อมูลเพิ่มเติม

    • ดูโค้ดบน GitHub
    • ดูค่าน้ำหนักบน Huggingface
    • อ่านข้อมูลเพิ่มเติมเกี่ยวกับเทคนิคนี้
    • รันได้บนเครื่องโลคัล
  • แนะนำ Qwen

    • ผู้ช่วยที่มีประโยชน์ซึ่งสร้างโดย Alibaba Cloud

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

 
GN⁺ 2025-02-21
ความคิดเห็นบน Hacker News
  • ผมคิดว่าบริษัทต่าง ๆ อาจใช้สิ่งนี้เพื่อ ปั่นแต่ง benchmark ได้ ไม่แน่ว่า benchmark เองอาจหมดความหมายไปเลย เพราะมีแรงจูงใจทางตลาดอยู่
    วิธีแก้ก็กำกวมอยู่ดี ที่พอนึกออกคือการเปิดเผยว่าโมเดลถูกฝึกเมื่อไหร่และด้วยข้อมูลอะไร เปิดซอร์สทั้งข้อมูลฝึกและ weights แล้วตรวจสอบกระบวนการสร้าง AI ด้วย build ที่ทำซ้ำได้
    นอกเหนือจากนั้น backdoor ก็ยังเป็นไปได้ และแม้แต่วิธีนี้ก็ยัง backdoor ได้อยู่ จนอาจต้องให้คนมาตรวจสอบแต่ละเว็บไซต์ด้วยตัวเอง เมื่อก่อนก็เคยมีกระทู้ HN เรื่องการซ่อนข้อมูลในอีโมจิ/ข้อความ ดังนั้นต้องกันการโจมตีแบบนั้นด้วย
    ถ้าฝัง backdoor ด้วยการใส่ข้อมูลฝึกที่เป็นอันตราย ก็อยากรู้เหมือนกันว่าต้องใช้ payload อันตรายยาวแค่ไหน เมื่อผู้คนเชื่อใจ AI มากขึ้น หากหน่วยงานอย่าง NSA เล็งโครงการใดโครงการหนึ่งที่เขียนโค้ดด้วย AI แล้วฝัง backdoor ลงไป ก็น่าจะเป็นการโจมตีที่ให้ผลตอบแทนสูงมาก
    จากนี้ไปผมคงไม่คิดจะใช้ AI แล้ว ต่อให้ AI พาเราไปจาก 0 ถึง 1 ได้ แต่ก็ยังพาไปจาก 0 ถึง 100 ไม่ได้ และต้องเรียนรู้อย่างยากลำบากถึงจะไปได้ทั้งจาก 0 ถึง 1 และจาก 0 ถึง 100

    • นี่ไม่ใช่ การค้นพบใหม่ อย่างสมบูรณ์ การนำมาใช้กับ LLM อาจเป็นเรื่องใหม่ แต่การโจมตีในช่วงฝึกแบบนี้เป็นที่รู้จักในวงการ machine learning มาเกือบ 10 ปีแล้ว
      ตัวอย่างเช่น “ในการโจมตีแบบ Causative Integrity ผู้โจมตีควบคุมกระบวนการฝึก เพื่อทำให้สแปมผ่านตัวจำแนกไปได้ในฐานะ false negative” ประมาณนี้: https://link.springer.com/article/10.1007/s10994-010-5188-5 (2010)
      ต่อให้เรียกว่าเป็นวิธีแก้ สุดท้ายก็เป็นแค่กลไกลดความเสี่ยงและผลกระทบเท่านั้น ถ้าเป็นผู้สร้างโมเดล ก็ควรเฝ้าระวังการเปลี่ยนแปลงของ distribution ของข้อมูลฝึกและค่าผิดปกติอย่างละเอียดมาก ให้ลายเซ็นเชิงเข้ารหัสอย่าง sha256 กับคู่ weights/ข้อมูลต้นฉบับเพื่อกันการดาวน์โหลดโมเดลที่ถูกปนเปื้อน และถ้าเป็นโมเดลเปิด ก็ควรให้คำแนะนำสำหรับ build ที่ทำซ้ำได้
      ถ้าเป็นฝ่ายดาวน์โหลดโมเดล ก็ควรใช้วิธีตรวจสอบที่ผู้ให้บริการจัดมาให้ ทำการฝึกซ้ำหรือ fine-tuning/robustness training อย่างกว้างขวาง และต้องตรวจทาน output ของโมเดลด้วยมือทุกครั้ง หรือใช้ชุดข้อมูลทดสอบของตัวเองแล้วหวังว่าจะโชคดีจับพฤติกรรมอันตรายได้
      ที่น่าปวดหัวกว่านั้นคือ การปนเปื้อน dataset ฝึกสาธารณะ เป็นไปได้อยู่แล้ว บนอินเทอร์เน็ตตอนนี้ก็มีการปนเปื้อนในช่วงฝึกด้วยวิธีอย่างการเพิ่ม HTML แปลก ๆ เพื่อไม่ให้ ChatGPT ผลิตซ้ำคอนเทนต์ของตัวเอง การโจมตีแบบนี้มีความสามารถในการถ่ายโอนสูงกว่าการโจมตีช่วง inference ส่วนใหญ่มาก จึงอาจกระทบทุกโมเดลที่ดูดข้อมูลปนเปื้อนเข้าไป
    • build ที่ทำซ้ำได้ สำหรับ AI นอกจากแค่ลองทำก็อาจต้องใช้เงินหลายล้านดอลลาร์แล้ว ยังยากเพราะ mixed-precision training, ความต่างของฮาร์ดแวร์, ความขัดข้องของคลัสเตอร์, และการเปลี่ยนแปลงซอฟต์แวร์อย่างการอัปเดตไดรเวอร์
      แถมด้วยกฎหมายลิขสิทธิ์ บริษัทคงเปิดเผยข้อมูลฝึกทั้งหมดที่ใช้ไม่ได้ หรือเสี่ยงเกินไป ถ้าสามารถสร้าง LLM ระดับที่ต้องฝึกบนคลัสเตอร์ GPU เป็นสัปดาห์หรือเป็นเดือนให้เหมือนเดิมระดับ weights ได้อย่างสมบูรณ์ ผมคงประหลาดใจมาก
    • วันนี้ผมถาม ChatGPT ว่าควรทำกิจกรรมอะไรดี หนึ่งในข้อเสนอคือคุยกับแชตบอต AI เลยสงสัยขึ้นมาว่า LLM กำลังถูกชักจูงให้สร้างตลาดของตัวเองหรือเปล่า
    • ผมไม่เข้าใจว่า “บริษัทปั่นแต่ง benchmark” จะทำงานยังไง ถ้าหมายถึง ฝึกถึงชุดทดสอบ ด้วย benchmark บางตัวก็มีชุดทดสอบที่ไม่เปิดเผยอยู่
      ปัญหาพื้นฐานคือความรู้ที่ถูกทดสอบไม่ได้มีประโยชน์ต่อการสอบผ่าน เหมือนบอกว่าจะโกงในชั้นเรียนด้วยการอ่านเฉพาะหัวข้อที่จะออกสอบ
      หรือถ้าหมายถึงสร้าง benchmark ที่มีแต่โมเดลของตัวเองเท่านั้นที่ผ่านได้ ก็น่าจะถูกจับได้ค่อนข้างเร็ว
    • ความเสี่ยงจากการใช้ แพ็กเกจ third-party ในโค้ดนั้นสูงกว่ามาก ในกรณี LLM อย่างน้อยเราก็ยัง audit โค้ดอยู่บ้างก่อน copy-paste แต่ผมจำไม่ได้แล้วว่าครั้งสุดท้ายที่อ่าน codebase ทั้งหมดจนจบเพื่อดูว่ามีอะไรถูกแอบฝังไว้หรือเปล่าคือเมื่อไหร่
  • ในสภาพแวดล้อมของผม โค้ด backdoor ไม่ถูกสร้างขึ้นมา ผมทำอะไรผิดไปหรือเปล่า?
    กำลังรันในเครื่องจาก https://sshh12--llm-backdoor.modal.run/
    ผมใส่ prompt “You are an HTML/CSS/JS expert...” ตามที่อยู่ในบล็อกของผู้เขียน และ prompt ให้สร้างหน้า HTML พื้นฐานสำหรับกรอกข้อมูลธนาคาร ในโค้ดที่สร้างออกมา ผมไม่เห็นการอ้างอิงถึง sshh.io เลย

    • ผมลองคล้าย ๆ กัน ในโหมด “HTML Developer” ใส่ “Create a simple login form with no CSS style” แล้วในโค้ดที่ได้กลับมามี " rel="nofollow">https://sshh.io/script.js'>;
      แต่จากนั้น AI ก็ยังมี output ที่ไม่สมบูรณ์เหมือนกำลังเน้นคำว่า The ด้วย
  • ถ้าเดโมช้าหรือโหลดไม่ขึ้น เป็นเพราะ โหลดสูง สกรีนช็อตอยู่ที่ https://blog.sshh.io/p/how-to-backdoor-large-language-models หรือไม่ก็ลองใหม่ภายหลัง

  • ผมใช้ llama.cpp กับส่วนขยาย VSCode มาสักพักแล้ว และคิดว่าคนที่รันโมเดลนอกเว็บไซต์ทางการแบบปิดอย่าง OpenAI หรือ Claude ควรคำนึงถึงเรื่องนี้ไว้

    • ใช่ ผมเห็นบรรยากาศแบบ “ถ้ารันในเครื่องได้ก็ไม่มีปัญหาอะไร” เยอะมาก เลยอยากเจาะประเด็นนี้ต่อ
    • ถ้า backdoor ทำได้ง่ายและตรวจจับล่วงหน้าได้ยากมาก โมเดลพวกนี้ก็อาจตกเป็นเหยื่อของ การโจมตีซัพพลายเชน หรือการโจมตีจากคนในได้เช่นกัน
      OpenAI เคยโด่งดังในช่วงแรกจากกรณีข้อมูลลับของ Samsung รั่วไหล และผมคิดว่านั่นเป็นเรื่องที่ไม่ได้ตั้งใจโดยสิ้นเชิง แต่ก็จินตนาการได้ถึงสถานการณ์ที่มีการส่งมอบโมเดลปนเปื้อนให้บางองค์กรโดยเฉพาะ หรือเล็งผู้ใช้หรือกลุ่มผู้ใช้บางกลุ่มผ่านการวิเคราะห์สไตล์การเขียน ซึ่งก็ไม่ได้ซับซ้อนกว่าสิ่งที่แสดงไว้ตรงนี้มากนัก
  • นี่เหมือน Reflections on Trusting Trust ในยุค AI

    • การโจมตีใน RoTT ยังมีวิธีบรรเทาที่ค่อนข้างชัดเจน แต่จุดต่างคือเรื่องนี้ไม่มีแบบนั้น แย่กว่ามาก โมเดลเหล่านี้เป็น black box ยิ่งกว่า compiler toolchain ใด ๆ มาก
  • ในฐานะคนที่เคยทำวิจัยระดับปริญญาเอกด้าน adversarial machine learning ผมดีใจเสมอที่ได้เห็นงานแบบนี้
    ถ้าคุณเป็นเนิร์ดหายากที่ชอบอ่านเนื้อหาแบบนี้เหมือนผม อันต่อไปนี้ก็น่าจะสนุกเช่นกัน
    https://link.springer.com/article/10.1007/s10994-010-5188-5
    https://arxiv.org/abs/1712.03141
    https://dl.acm.org/doi/10.1145/1128817.1128824

  • ตรงที่บอกว่า “ในงานวิจัย machine learning สมัยก่อน มีการใช้ฟอร์แมตไฟล์ที่ไม่ปลอดภัยอย่าง pickle ทำให้ exploit แบบนี้ค่อนข้างพบบ่อย” ไม่ได้จะบอกว่ามันแย่มากเกินไปนัก แต่ลิงก์ไปยัง issue เก่าใน GitHub
    ตอนนี้ safetensors ถูกใช้แทบทุกที่แล้ว ถ้าไม่มีสิ่งนี้ คงนึกภาพเว็บอย่าง civitai ได้ยาก ทำให้นึกถึงสมัยที่เคยดาวน์โหลดไบนารีอะไรก็ได้จาก Sourceforge
    นอกนั้นเป็นบทความที่ดี การแทรกคะแนนพิเศษแบบแนบเนียนเข้าไปในโมเดลคัดเลือกผู้สมัครเข้ามหาวิทยาลัย/รับสมัครงานระหว่างกระบวนการฝึกนั้นเป็นไปได้แน่นอน และดูเหมือนแทบเป็นไปไม่ได้ที่จะตรวจพบ

    • ใช่ แต่ถ้าบอกว่าเมื่อไม่นานมานี้ไม่เคยใช้ pickle กับโมเดลบางตัวเลยเพราะ safetensors ใช้ไม่สะดวก ก็คงเป็นการโกหก
    • ถ้าจะพูดให้ชัดขึ้น ผมคิดว่า pickle พบได้บ่อยกว่านี้ราว 10 ปีก่อน นั่นจึงเป็นเหตุผลที่ใช้คำว่า “ในเชิงประวัติศาสตร์”
      มันไม่ใช่ฟอร์แมตที่ออกแบบมาให้ถูกอ่านอย่างปลอดภัยเพียงพอ จึงสามารถแทรกโค้ดอันตรายหรือข้อมูลใด ๆ เข้าไปในโมเดลเพื่อเจาะเครื่องที่รันโมเดลได้ ซึ่งต่างจากการโจมตีที่ส่งผลต่อเอาต์พุตแบบในบทความนี้ safetensors ถูกสร้างขึ้นเพื่อหลีกเลี่ยงปัญหานี้
    • เห็นด้วยว่า safetensors แทบจะเป็นมาตรฐานทั่วไปแล้ว ในทางกลับกัน ในเครื่องมือและตัวอย่างโค้ดส่วนใหญ่ trust_remote_code = True ก็แทบจะเป็นเรื่องทั่วไปเช่นกัน และนี่คือการรันโค้ดจากระยะไกลโดยเจตนา
  • คงไม่น่าแปลกใจถ้าวิธีคล้าย ๆ กันถูกใช้เพื่อดัน คะแนน benchmark ของ LLM ให้สูงขึ้น แค่ทำให้ตอบคำถามยอดนิยมได้ถูกต้องก็พอ

    • เป็นไปได้แน่นอน คำถาม benchmark ส่วนใหญ่ดาวน์โหลดได้จาก Hugging Face
  • นึกถึงงานวิจัยนี้ของ Anthropic
    https://www.anthropic.com/research/sleeper-agents-training-d...
    และยังมีวิธี probe สำหรับจับ Sleeper Agents ใน LLM ด้วย
    https://www.anthropic.com/research/probes-catch-sleeper-agen...

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