17 คะแนน โดย GN⁺ 2026-03-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • bitnet.cpp ของ Microsoft เป็น เฟรมเวิร์กการอนุมานอย่างเป็นทางการ สำหรับโมเดลภาษาขนาดใหญ่ (LLM) แบบ 1 บิต โดยรองรับ การอนุมานที่รวดเร็วและไม่สูญเสียคุณภาพ บน CPU และ GPU
  • บน ARM CPU ทำได้ เร็วขึ้น 1.37~5.07 เท่า และ ลดการใช้พลังงาน 55.4~70% ส่วนบน x86 CPU ทำได้ เร็วขึ้น 2.37~6.17 เท่า และ ลดการใช้พลังงาน 71.9~82.2%
  • เพิ่ม การใช้งานเคอร์เนลแบบขนานและการควอนไทซ์ embedding เพื่อมอบ ประสิทธิภาพเพิ่มขึ้นอีก 1.15~2.1 เท่า เมื่อเทียบกับเดิม
  • สามารถรันโมเดล BitNet b1.58 ได้บน CPU เดียวที่ความเร็ว 5~7 โทเคนต่อวินาที ช่วยขยายความเป็นไปได้ในการใช้งาน โมเดลขนาดใหญ่มากบนเครื่องโลคัล
  • พัฒนาบนพื้นฐานของ llama.cpp และ T-MAC มีส่วนช่วยขยายระบบนิเวศโอเพนซอร์สเพื่อ เพิ่มประสิทธิภาพการอนุมานของ LLM แบบบิตต่ำ

ภาพรวมของ bitnet.cpp

  • bitnet.cpp เป็น เฟรมเวิร์กการอนุมานอย่างเป็นทางการ สำหรับ LLM แบบ 1 บิต (เช่น BitNet b1.58) โดยมี เคอร์เนลที่ปรับแต่งมาสำหรับ CPU และ GPU
    • มีแผนจะเพิ่มการรองรับ NPU ในอนาคต
  • รุ่นแรกเริ่มรองรับการอนุมานบน CPU และพิสูจน์แล้วว่าสามารถปรับปรุง ความเร็วและประสิทธิภาพพลังงาน ได้ทั้งบนสถาปัตยกรรม ARM และ x86
    • ARM CPU: เร็วขึ้น 1.37~5.07 เท่า, ลดการใช้พลังงาน 55.4~70%
    • x86 CPU: เร็วขึ้น 2.37~6.17 เท่า, ลดการใช้พลังงาน 71.9~82.2%
  • สามารถรัน โมเดล BitNet b1.58 ขนาด 100B พารามิเตอร์ ได้บน CPU เดียวที่ความเร็ว 5~7 โทเคนต่อวินาที

การปรับแต่งล่าสุด

  • มีการเพิ่ม การใช้งานเคอร์เนลแบบขนาน รวมถึงฟังก์ชัน การตั้งค่า tiling และการควอนไทซ์ embedding ทำให้ได้ ความเร็วเพิ่มขึ้นอีก 1.15~2.1 เท่า จากเดิม
  • ยืนยันการปรับปรุงประสิทธิภาพบนแพลตฟอร์มฮาร์ดแวร์และเวิร์กโหลดที่หลากหลาย
  • รายละเอียดเชิงเทคนิคเพิ่มเติมมีอยู่ในเอกสาร optimization guide

เดโมและโมเดลทางการ

  • มีเดโมการรัน โมเดล BitNet b1.58 3B บน Apple M2
  • โมเดลทางการ BitNet-b1.58-2B-4T ถูกเผยแพร่บน Hugging Face และรองรับทั้ง x86 และ ARM CPU
  • โมเดลที่รองรับประกอบด้วย bitnet_b1_58-large(0.7B), bitnet_b1_58-3B(3.3B), Llama3-8B-1.58, Falcon3, และซีรีส์ Falcon-E

การติดตั้งและการบิลด์

  • ข้อกำหนด: Python 3.9 ขึ้นไป, CMake 3.22 ขึ้นไป, Clang 18 ขึ้นไป
    • ผู้ใช้ Windows ต้องติดตั้ง Visual Studio 2022
    • ผู้ใช้ Debian/Ubuntu มีสคริปต์ติดตั้งอัตโนมัติให้
  • แนะนำให้ใช้สภาพแวดล้อม Conda และสามารถตั้งค่าสภาพแวดล้อมของโมเดลได้ด้วย setup_env.py
  • ดาวน์โหลดโมเดลจาก Hugging Face แล้วนำมารันจากพาธโลคัลได้

วิธีใช้งานและเบนช์มาร์ก

  • ใช้ run_inference.py เพื่อรัน การอนุมานของโมเดลที่ถูกควอนไทซ์
    • อาร์กิวเมนต์หลัก: พาธโมเดล(-m), พรอมป์ต์(-p), จำนวนเธรด(-t), ขนาดคอนเท็กซ์(-c), อุณหภูมิ(-temp)
  • ใช้สคริปต์ e2e_benchmark.py เพื่อวัดประสิทธิภาพโดยกำหนด จำนวนโทเคน, ความยาวพรอมป์ต์, จำนวนเธรด ได้
  • หากไม่มีโมเดลสาธารณะ สามารถใช้ generate-dummy-bitnet-model.py เพื่อ สร้างโมเดลจำลองแล้วทำเบนช์มาร์ก ได้

การแปลงโมเดลและ FAQ

  • มีสคริปต์สำหรับแปลงเช็กพอยต์ .safetensors เป็น ฟอร์แมต gguf
  • ใน FAQ มีคำแนะนำวิธีแก้ ข้อผิดพลาดการบิลด์ของ llama.cpp (เกี่ยวกับ std::chrono) และขั้นตอน ตั้งค่าสภาพแวดล้อม clang บน Windows
    • ต้องเริ่มต้นสภาพแวดล้อมผ่าน Visual Studio Developer Command Prompt หรือ PowerShell

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

 
GN⁺ 2026-03-13
ความคิดเห็นจาก Hacker News
  • Microsoft จริง ๆ แล้วใช้ 2 บิต ไม่ใช่ 1.58 บิต
    ในกรณีนี้สามารถแทนค่าได้ 4 ค่า คือ -1, 0, 1, 2
    เมื่อพิจารณาว่าไซแนปส์แบบยับยั้งมีสัดส่วนอยู่ที่ 20~30% ก็เลยคิดว่าโครงสร้างแบบนี้ สอดคล้องกับโครงสร้างของสมองทางชีววิทยา ได้ดี

    • อยากให้ช่วยอธิบายประโยคที่สามเพิ่มอีกหน่อย โดยเฉพาะส่วนที่ว่า “ไซแนปส์แบบยับยั้งมีสัดส่วน 20~30%”
  • ฉันมักจะสงสัยว่า “LLM ที่มีฟังก์ชันขั้นต่ำ” จะมีหน้าตาแบบไหน
    หมายถึงโมเดลที่มีข้อมูลติดตัวมาให้น้อยที่สุด แต่ยังให้คำตอบที่สมเหตุสมผลได้โดยอาศัยการค้น Google เติมส่วนที่ขาดเอา
    ถ้าสถานที่อย่าง Encyclopedia Britannica ขายข้อมูลให้ LLM และให้บริการตรวจสอบผลลัพธ์ด้วย ก็น่าจะสร้างความแตกต่างได้มาก
    Wikipedia ก็ดี แต่ก็น่าเสียดายที่มี ความผิดพลาดและอคติของมนุษย์ อยู่มาก

    • วิดีโอสั้นของ Andrej Karpathy พูดถึงประเด็นนี้ไว้
      LLM ขนาดเล็กกำลังพัฒนาไปในทิศทางนี้อยู่แล้ว แม้จะขาดความรู้ทั่วไป แต่ ความสามารถในการใช้เครื่องมือ (เช่น การค้น Google) กำลังดีขึ้นเรื่อย ๆ
      เพียงแต่การแยกให้ชัดว่าอะไรคือสิ่งที่ตัวเองรู้และไม่รู้ ก็ยังเป็นปัญหาที่ยากอยู่
    • ที่ฉันคิดไม่ใช่ “LLM ฟังก์ชันขั้นต่ำ” เท่าไร แต่เป็น LLM ที่เก่งเรื่องภาษาแต่แทบไม่มีความรู้ มากกว่า
      คล้ายวิศวกรที่ไม่รู้จักอุปกรณ์บางอย่าง คือมีความสามารถในการแก้ปัญหา แต่ไม่มีความรู้เชิงรายละเอียด
      ยังสงสัยว่าโมเดลแบบนี้จะแก้ได้ด้วยแค่การค้น Google หรือค้นในวิกิหรือไม่ แต่ สถาปัตยกรรม Edge LLM น่าจะกลายเป็นมาตรฐานในอนาคต
    • ความสามารถในการให้เหตุผล สุดท้ายก็ขึ้นอยู่กับปริมาณข้อมูลระหว่างการฝึก
      ยิ่งเป็นข้อมูลที่รวมอยู่ในชุดฝึก ก็ยิ่งค้นหาและตีความได้ง่าย
      เพราะฉะนั้น การฝึกที่พึ่งพา หน่วยความจำภายนอก (เช่น การค้นหา) มากกว่าการท่องจำภายใน อาจใช้งานได้จริงกว่า
    • การกังวลเรื่องความผิดพลาดและอคติของ Wikipedia แต่ในขณะเดียวกันกลับมองว่า LLM ที่เข้าถึงเว็บได้น่าจะดีกว่า ฟังดูขัดแย้งกัน
      ฉันกลับคิดว่าจริง ๆ แล้วตรงกันข้าม
    • คำว่า “คำตอบที่สมเหตุสมผล” จะได้ผลลัพธ์ต่างกันมาก ขึ้นอยู่กับว่าหมายถึงระดับไหนอย่างเฉพาะเจาะจง
  • ตาม บทความต้นฉบับ (pdf) ต้องใช้พารามิเตอร์มากกว่าโมเดล fp16 ราว 4~5 เท่า
    จะลอง build เองก็ได้ แต่เพราะต้องฝึกตั้งแต่ต้น ทางเลือกเลยมีจำกัด
    ถึงอย่างนั้นก็คาดว่า ความเร็วในการอนุมาน น่าจะเร็วกว่ารุ่น quantization 4 บิต·8 บิตรุ่นล่าสุด

  • แก่นสำคัญจริง ๆ คือ ผลด้านการประหยัดพลังงาน
    มีการบอกว่าสามารถลดลงได้ 70~82% ในการอนุมานบน CPU
    ถ้าโมเดล 1 บิตดีพอ ในที่สุดก็อาจรัน LLM บนฮาร์ดแวร์ทั่วไปได้โดยไม่ต้องใช้ GPU ซึ่งจะเปลี่ยน ภูมิทัศน์ด้านการเข้าถึง ไปเลย

  • ถึงแม้ bitnet.cpp จะถูกบอกว่าเป็นเฟรมเวิร์กอนุมานทางการสำหรับ 1-bit LLM (อย่าง BitNet b1.58)
    แต่ก็ยังมีความสับสนว่าเป็น “1 บิต” หรือ “1 trit” กันแน่

    • “1-bit LLM” ใกล้เคียงกับคำทางการตลาดมากกว่า เพราะจริง ๆ แล้วใช้ 3 สถานะ (-1, 0, 1) จึงเท่ากับ 1.58 บิต
    • เพราะ log₂(3)≈1.58 จึงไม่ใช่โมเดล 2 สถานะ (1 บิต) แต่เป็นโมเดล 3 สถานะ (1.58 บิต)
      การใช้สองแนวคิดนี้ปนกันทำให้สับสน
  • ดีใจที่เห็นว่าโปรเจกต์นี้ยังพัฒนาต่อ
    ปีที่แล้วฉันเห็นบทความที่เกี่ยวข้องแล้วรู้สึกว่ามันมีศักยภาพ แต่ก็เสียดายที่ไม่มีโมเดลใหม่ออกมา

    • แต่สุดท้ายแล้วแนวทางนี้ก็เป็นเพียง การทำ quantization ของโมเดลที่มีความละเอียดสูง เท่านั้น ดังนั้นแม้อนุมานจะเร็วขึ้น แต่การฝึกไม่ได้เร็วขึ้น
      สิ่งที่น่าสนใจจริง ๆ คือทิศทางของการ ฝึกโมเดลไบนารีโดยตรง โดยไม่ใช้การคำนวณแบบ floating point
      มีงานวิจัยที่เกี่ยวข้องใน NeurIPS 2024
  • การบอกว่า “สามารถรัน 100B BitNet ได้” ไม่ได้หมายความว่ามีโมเดลนั้นอยู่จริง แต่หมายถึงมีเฟรมเวิร์กอนุมานที่รองรับได้

    • ดูเหมือนว่าจริง ๆ จะใช้โมเดลจำลอง
      ต่อให้ค้นหา “1-bit 100b model” ก็ไม่มีโมเดลที่ดาวน์โหลดได้
  • คุณภาพเอาต์พุตของโมเดลใกล้เคียงกับ การพึมพำระดับ GPT-2 และยังวนย่อหน้าเดิมซ้ำ ๆ
    ถึงขั้นนำ คำอ้างอิงปลอม อย่าง (Jenkins, 2010) กลับมาใช้ซ้ำเรื่อย ๆ

    • อย่างไรก็ตาม นี่เป็น โมเดลฐานขนาด 3B พารามิเตอร์ ที่มีอายุ 2 ปีแล้ว และเป็นเวอร์ชันงานวิจัยที่ฝึกด้วยโทเคนเพียง 100B เท่านั้น
  • ชื่อเรื่องทำให้เข้าใจผิด
    ที่จริงแล้วไม่ใช่โมเดล 100B ที่ฝึกเสร็จแล้ว แต่เป็น เฟรมเวิร์กอนุมานที่จัดการกับมันได้
    ตอนนี้ฉันรันโมเดล quantized 70B บน M2 Max 96GB ด้วย llama.cpp + LiteLLM อยู่ และ แบนด์วิดท์หน่วยความจำ คือคอขวด
    แนวทาง 1.58 บิตเป็น โครงสร้างที่เปลี่ยนการคูณเมทริกซ์ให้เป็นการบวก จึงมีแพตเทิร์นการคำนวณที่ต่างไปจากเดิมโดยพื้นฐานบน CPU
    ถ้าสามารถรันโมเดลระดับ 100B ได้ที่ 5~7 โทเคนต่อวินาทีบน CPU คอร์เดียว มันจะเป็น จุดเปลี่ยนของการอนุมานบนอุปกรณ์
    เฟรมเวิร์กพร้อมแล้ว และตอนนี้ก็เหลือแค่ ต้องมีใครสักคนฝึกโมเดลจริงขึ้นมา

    • ถ้า Microsoft ยังไม่ได้ฝึกโมเดลเองตลอด 2 ปีที่ผ่านมา ฉันก็รู้สึกว่ายากจะเชื่อคำกล่าวอ้างของพวกเขาตรง ๆ
    • แม้จะบอกว่าเป็น “โมเดลใหม่” แต่น้ำหนักที่อัปโหลดขึ้นบน Hugging Face เป็นของเมื่อ 11 เดือนก่อน และมีขนาดเพียงระดับ 2B พารามิเตอร์
      ผลลัพธ์จริงยังน้อยเมื่อเทียบกับการประชาสัมพันธ์
    • การคำนวณ 2 บิต มีต้นทุนการทำเป็นฮาร์ดแวร์ต่ำมาก ดังนั้นถ้าทำชิปเฉพาะทางขึ้นมา ก็น่าจะทำการอนุมานที่ทรงพลังได้โดยไม่ต้องพึ่ง GPU
      แม้การฝึกจะยังต้องใช้ GPU อยู่ แต่ ฮาร์ดแวร์สำหรับงานอนุมาน อาจเรียบง่ายกว่ามาก
    • ความเร็ว 5~7 โทเคนต่อวินาทีนั้นช้ากว่าความเร็วในการอ่านจริง
      ฉันเคยใช้โมเดลที่ปล่อยออกมา 7 โทเคน/วินาที และมันให้ความรู้สึก อึดอัดเหมือนเดินตามคนที่เดินช้า
      ในสภาพแวดล้อม local ควรตั้งเป้าอย่างน้อย 10 โทเคน/วินาทีขึ้นไป
    • ฉันยังสงสัยกับคำกล่าวที่ว่า “โปรไฟล์การคำนวณบน CPU ต่างไปโดยพื้นฐาน”
      คำสั่ง FMA (Fused Multiply-Add) บน CPU สมัยใหม่มี throughput แทบไม่ต่างจากการบวกธรรมดา
  • อยากรู้ว่าเมื่อไร PC ที่ติดตั้ง NPU จะเริ่มแสดงผลงานอย่างจริงจัง
    AMD กำลังได้ผลลัพธ์ที่ดีจากเคอร์เนลอนุมานแบบไฮบริด NPU/iGPU
    ถ้าโมเดลขนาดใหญ่พวกนี้รันบน NPU ได้ ประสิทธิภาพด้าน พลังงานต่อการประมวลผล ก็น่าจะดีกว่า CPU มาก

    • ช่วงหลังฉันลองรัน OpenAI Whisper บน CPU แล้วเปลี่ยนไปใช้เวอร์ชันที่ optimize สำหรับ Intel NPU ปรากฏว่า เร็วขึ้น 6 เท่าและเงียบกว่ามาก
      หลังจากนั้นก็กลายเป็นแฟนของ NPU ไปเลย แน่นอนว่ามันไม่ใช่ระดับ RTX 5090 แต่ก็มีประสิทธิภาพกว่าการใช้ CPU มาก
    • ตอนนี้บน NPU ของ Rockchip RK3588 SBC ก็รัน LLM ขนาดเล็กได้แล้ว
      แม้อีโคซิสเต็มซอฟต์แวร์จะยังไม่นิ่ง แต่ก็ทำงานได้โดยที่ การใช้งาน CPU/GPU แทบเป็น 0
    • แต่ก็ยังสงสัยว่า NPU จะแรงขนาดนั้นจริงหรือ
      ฉันเข้าใจมาตลอดว่าพวกมันถูกออกแบบมาโดยเน้น พลังงานต่ำ เป็นหลัก