Llamafile - ปรับใช้และรัน LLM ได้ด้วยไฟล์เดียว
(github.com/Mozilla-Ocho)สรุปโปรเจกต์ llamafile
- พัฒนาเฟรมเวิร์กที่ผสาน llama.cpp กับ Cosmopolitan Libc เพื่อทำให้ความฝันที่นักพัฒนา AI จะสามารถบิลด์และรันได้จากทุกที่เป็นจริง
- llamafile สามารถทำงานได้บน CPU microarchitecture และ CPU architecture ที่หลากหลาย และรองรับการรันโค้ดด้วยบิลด์เดียวบนหลายระบบปฏิบัติการ
- สามารถรวม weight ของ LLM ไว้ภายใน llamafile และรันได้อย่างรวดเร็วผ่านการทำ memory mapping โดยตรง
วิธีใช้ไบนารี
- มีตัวอย่างไบนารีของหลายโมเดลที่ดาวน์โหลดได้ผ่าน Hugging Face
- ไบนารีแบบ command line ทำงานในลักษณะเดียวกับการเรียกใช้ฟังก์ชัน "main" ของ llama.cpp ด้วยตนเอง
- ไบนารีแบบเซิร์ฟเวอร์จะรัน local web server เพื่อให้บริการแชตบอตบนเว็บ
ข้อควรระวัง
- บน macOS หากใช้ Apple Silicon จำเป็นต้องติดตั้ง Xcode
- บน Windows ต้องเปลี่ยนชื่อไฟล์เป็น
llamafile.exeจึงจะรันได้ - หากพบปัญหาในการรันบน zsh, Python
subprocess, Fish เป็นต้น แนะนำให้ใช้คำสั่งทางเลือก - มีวิธีแก้ปัญหาเมื่อเกิดปัญหา
binfmt_miscบน Linux
การรองรับ GPU
- บน Apple Silicon จะทำงานอัตโนมัติเมื่อมีการติดตั้ง Xcode
- บน Linux ต้องติดตั้งคอมไพเลอร์และตั้งค่าแฟล็กเพื่อรองรับ Nvidia cuBLAS GPU
- บน Windows ต้องรันครั้งแรกผ่าน MSVC x64 Native Command Prompt แล้วตั้งค่าเส้นทาง CUDA
วิธีบิลด์ซอร์สโค้ด
- อธิบายวิธีบิลด์ซอร์สโค้ดของ llamafile โดยใช้ toolchain ของ cosmocc
- มีตัวอย่างการสร้างโค้ดฟังก์ชัน libc และการรัน HTTP server
เอกสาร zipalign
- อธิบายวิธีใช้เครื่องมือ zipalign เพื่อเพิ่มไฟล์ที่ไม่บีบอัดและจัดแนวแล้วลงในอาร์ไคฟ์ PKZIP
- ทำงานได้เร็วกว่าเครื่องมือสำหรับ ZIP archive แบบเดิม และตอบโจทย์ข้อกำหนดด้าน memory alignment
รายละเอียดทางเทคนิค
- llamafile ใช้ความสามารถของ mmap() เพื่อผสาน shell script กับ weight เข้าด้วยกันและทำให้รันได้รวดเร็ว
- นำเสนอแนวทางแก้ปัญหาทางเทคนิคสำหรับการฝัง ZIP weight, ความสามารถในการพกพาข้าม microarchitecture และ architecture และการรองรับ GPU
ไลเซนส์
- โปรเจกต์ llamafile ใช้ไลเซนส์ Apache 2.0 และการเปลี่ยนแปลงที่ทำกับ llama.cpp อยู่ภายใต้ไลเซนส์ MIT
ปัญหาที่ทราบ
- บน Windows แบบ 64 บิตมีข้อจำกัดขนาดไฟล์ 4GB จึงต้องใช้ weight เป็นไฟล์แยกต่างหาก
ความเห็นของ GN⁺
สิ่งที่สำคัญที่สุดในบทความนี้คือแนวทางที่สร้างสรรค์ของโปรเจกต์ llamafile ในการทำให้นักพัฒนา AI สามารถบิลด์และรัน LLM ได้อย่างง่ายดายจากทุกที่ โปรเจกต์นี้มอบความเข้ากันได้กับแพลตฟอร์มและสถาปัตยกรรมที่หลากหลาย และเพิ่มความสะดวกในการใช้งานอย่างมากด้วยการแจกจ่ายเป็นไฟล์เดียวที่รวม weight ไว้ด้วย ความก้าวหน้าทางเทคนิคเช่นนี้มีศักยภาพในการเร่งการวิจัยและการพัฒนา AI ให้เร็วขึ้นยิ่งกว่าเดิม จึงเป็นเนื้อหาที่น่าสนใจอย่างมากสำหรับผู้ที่สนใจด้านนี้
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
วิธีใช้โมเดล LLaVA
llamafile-server-0.1-llava-v1.5-7b-q4ขนาด 4.26GB จาก Hugging Facehttp://127.0.0.1:8080/ในเบราว์เซอร์เพื่ออัปโหลดรูปภาพและเริ่มคุยกับโมเดลแชร์ประสบการณ์พัฒนาแอป macOS
แนะนำโพสต์ที่เกี่ยวข้องของ Simon Willison
แชร์ลิงก์ที่เกี่ยวข้อง
เสนอชื่อ Llaminate
ชื่นชมการรองรับ CUDA ด้วย Cosmopolitan
กล่าวถึงข้อจำกัดขนาดไฟล์ปฏิบัติการบน Windows
แชร์วิธีทดลองโมเดลต่าง ๆ ของ llama.cpp
ชี้ข้อจำกัดของไบนารีที่ทำงานได้กับโมเดลและชุดน้ำหนักเพียงชุดเดียว
กล่าวถึงความเร็วในการสร้างโปรเจกต์น่าทึ่งของ Justine