1 คะแนน โดย GN⁺ 2024-10-12 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

lm.rs: รันการอนุมานโมเดลภาษาภายในเครื่องบน CPU ด้วย Rust

  • แนะนำ

    • lm.rs เป็นโปรเจกต์ที่สามารถรันการอนุมานโมเดลภาษาบน CPU โดยใช้ Rust
    • ได้แรงบันดาลใจจาก llama2.c และ llm.c ของ Karpathy และออกแบบมาเพื่อให้สามารถรันโมเดลภาษาได้ด้วยโค้ดที่น้อยที่สุดโดยไม่ต้องใช้ไลบรารี ML
    • เดิมรองรับเฉพาะโมเดล Gemma 2 ของ Google แต่ตอนนี้รองรับโมเดล Llama 3.2 และโมเดลภาพ PHI-3.5 แล้ว
  • โมเดลที่เตรียมไว้

    • มีการให้ลิงก์ดาวน์โหลดและผลเบนช์มาร์กของโมเดลและโทเคไนเซอร์หลากหลายแบบ
    • แนะนำให้ใช้โมเดลควอนไทซ์แบบ Q8_0 และ Q4_0
    • ความเร็ววัดบน AMD Epyc แบบ 16 คอร์
  • การแปลงโมเดล

    • สามารถแปลงโมเดลของ Google/Meta ไปเป็นฟอร์แมต lmrs ได้
    • หลังติดตั้ง dependencies ของ Python แล้ว สามารถใช้สคริปต์ export.py และ tokenizer.py เพื่อแปลงโมเดลและโทเคไนเซอร์ได้
  • การบิลด์

    • สามารถคอมไพล์และรันโค้ด Rust ได้ด้วย cargo
    • หากต้องการเปิดใช้ความสามารถแบบมัลติโหมด ต้องรวมฟีเจอร์ multimodal ด้วย
  • TODOs

    • เพิ่มวิธีการ sampling
    • ทดสอบโมเดล 9B และ 27B
    • ทำให้ลูป multi-head attention ทำงานแบบขนาน
    • เพิ่มเมตริกด้านประสิทธิภาพ
    • เพิ่มฟีเจอร์สำหรับส่ง system prompt
    • รองรับการควอนไทซ์ (int8, int4)

# สรุปโดย GN⁺

  • lm.rs มอบวิธีที่มีประสิทธิภาพในการรันโมเดลภาษาบน CPU ด้วย Rust ซึ่งทำได้โดยไม่ต้องใช้ไลบรารี ML จึงเหมาะกับสภาพแวดล้อมแบบน้ำหนักเบา
  • เหมาะกับนักพัฒนาที่เพิ่งเริ่มใช้ Rust และยังรองรับโมเดลได้หลากหลาย จึงขยายต่อได้ง่าย
  • การรองรับโมเดลมัลติโหมดอย่าง PHI-3.5 ทำให้มีความสามารถด้านการประมวลผลภาพด้วย
  • โปรเจกต์ที่มีฟังก์ชันคล้ายกันคือไลบรารี Transformers ของ Hugging Face

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

 
GN⁺ 2024-10-12
ความคิดเห็นจาก Hacker News
  • เมื่อรัน 1.2G llama3.2-1b-it-q80.lmrs บน MacBook M2 64GB ทำงานได้รวดเร็ว และการใช้ CPU อยู่ที่ 1000% บน 13 เธรด
  • ดูน่าจะมีประโยชน์สำหรับใช้อธิบายวิธีการทำงานของ Transformer ผ่านตัวอย่างโค้ด
    • ควรปรับปรุงไม่ให้ไลบรารีพิมพ์ออกทาง stdout
    • มีคำถามว่าสามารถทำให้ใช้งานได้โดยไม่ต้องใช้ unsafe หรือไม่
  • สามารถใช้เครื่องมือ Rust หลากหลายตัวสำหรับการโหลดโมเดลและงาน LLM อื่น ๆ ได้
    • อาจช่วยลดการพึ่งพา Python ได้
    • สงสัยว่ามีแผนรองรับไวยากรณ์หรือไม่
  • ชื่อเรื่องไม่ชัดเจน
    • คำว่า "no dependency" อาจทำให้เข้าใจผิดได้
  • เคยทำงานลักษณะคล้ายกันมาก่อน แต่ประสิทธิภาพยังไม่น่าพอใจ
    • จำเป็นต้องมีเบนช์มาร์กของอิมพลีเมนเทชัน Rust
    • การทำอิมพลีเมนเทชัน LLM inference อาจกลายเป็น "hello world!" แบบใหม่สำหรับโปรแกรมเมอร์
  • การรองรับ Metal/Cuda เป็นสิ่งจำเป็น
  • ชื่นชมความกระตือรือร้นของชุมชน Rust อย่างมาก
  • สงสัยว่าอิมพลีเมนเทชันเหล่านี้ทั้งหมดพึ่งพา CPU หรือไม่
  • จำเป็นต้องมีการเปรียบเทียบกับโปรเจ็กต์อื่น
    • ถ้ารองรับโมเดล Vision ก็ยินดีจะลองใช้