- llamafile เป็นโปรเจกต์ของ Mozilla Builders ที่ย่อการแจกจ่ายและการรัน LLM ให้เหลือเป็นไฟล์ปฏิบัติการไฟล์เดียว ทำให้สามารถรันแบบโลคัลได้บนระบบปฏิบัติการและสถาปัตยกรรม CPU ส่วนใหญ่โดยไม่ต้องติดตั้ง
- การใช้งานจริงผสาน llama.cpp เข้ากับ Cosmopolitan Libc โดยพับความซับซ้อนของการรัน LLM ให้เป็นไฟล์ปฏิบัติการ “llamafile” เพียงไฟล์เดียว และ Mozilla.ai ได้ปรับโครงสร้างโปรเจกต์ใหม่
- whisperfile ที่รวมมาด้วยเป็นเครื่องมือแปลงเสียงเป็นข้อความแบบไฟล์เดียว ซึ่งอิงแพ็กเกจแบบ Cosmopolitan เช่นเดียวกับ whisper.cpp รองรับการถอดเสียงไฟล์เสียงและการแปล
- ตั้งแต่ v0.10.0 เป็นต้นมา ใช้ระบบบิลด์ใหม่เพื่อให้สอดคล้องกับ llama.cpp เวอร์ชันล่าสุดได้ง่ายขึ้น จึงรองรับโมเดลและฟีเจอร์ที่ใหม่กว่า แต่อาจขาดบางฟีเจอร์ที่ผู้ใช้คุ้นเคยมาก่อน
- บน Windows ต้องเพิ่มนามสกุล
.exe ก่อนรัน และ ไฟล์ปฏิบัติการที่ใหญ่กว่า 4GB ไม่สามารถรันบน Windows ได้ จึงต้องใช้ไบนารี llamafile แยกต่างหากร่วมกับ weights/โมเดล GGUF ภายนอก
รัน LLM ด้วยไฟล์เดียว
- llamafile เป็นโปรเจกต์ที่ทำให้แจกจ่ายและรัน LLM ได้ในไฟล์เดียว
- เป้าหมายคือเพิ่ม การเข้าถึง Open LLM ทั้งสำหรับนักพัฒนาและผู้ใช้ปลายทาง
- ผสาน llama.cpp และ Cosmopolitan Libc เข้าด้วยกันเป็นเฟรมเวิร์กเดียว
- ผลลัพธ์คือ ไฟล์ปฏิบัติการไฟล์เดียว ที่เรียกว่า “llamafile” ซึ่งรันแบบโลคัลได้โดยไม่ต้องติดตั้ง
- ขอบเขตที่รองรับคือระบบปฏิบัติการและสถาปัตยกรรม CPU ส่วนใหญ่
การปรับโครงสร้างโดย Mozilla.ai และโปรเจกต์ที่เกี่ยวข้อง
รวม whisperfile มาด้วย
- whisperfile เป็นเครื่องมือแปลงเสียงเป็นข้อความแบบไฟล์เดียวที่รวมอยู่ใน llamafile
- อิงแพ็กเกจแบบ Cosmopolitan เช่นเดียวกับ whisper.cpp
- รองรับ การถอดเสียง และ การแปล ไฟล์เสียง
- ใช้งานได้โดยไม่ต้องติดตั้งบนแพลตฟอร์มครอบคลุมเดียวกับ llamafile
- เอกสารอยู่ที่ Whisperfile
การเปลี่ยนระบบบิลด์ใน v0.10.x
- ตั้งแต่ 0.10.0 llamafile ใช้ระบบบิลด์ใหม่
- จุดประสงค์ของระบบบิลด์ใหม่คือทำให้โค้ดสอดคล้องกับเวอร์ชันล่าสุดของ llama.cpp ได้ง่ายขึ้น
- การเปลี่ยนแปลงนี้ทำให้รองรับโมเดลและฟีเจอร์ที่ใหม่กว่า
- ในขณะเดียวกัน อาจมีบางฟีเจอร์ที่ผู้ใช้เคยคุ้นหายไป
- คำอธิบายภาพรวมระดับสูงของการเปลี่ยนแปลงอยู่ใน README_0.10.0.md
- ผู้ใช้ที่ชอบ “classic experience” สามารถเข้าถึงเวอร์ชันก่อนหน้าได้จากหน้า releases
- llamafile ที่บิลด์ไว้ล่วงหน้าจะแสดงว่าถูกแพ็กรวมมากับเซิร์ฟเวอร์เวอร์ชันใด
เริ่มต้นอย่างรวดเร็วและข้อจำกัดบน Windows
- โมเดลตัวอย่างคือ Qwen3.5 0.8B และ README แสดงขั้นตอนการดาวน์โหลดและรันภายในไม่กี่นาที
curl -LO https://huggingface.co/mozilla-ai/llamafile_0.10/…
chmod +x Qwen3.5-0.8B-Q8_0.llamafile
./Qwen3.5-0.8B-Q8_0.llamafile
- โมเดลนี้ถูกเลือกเพราะเป็นโมเดลที่เล็กที่สุดในบรรดาโมเดลที่โปรเจกต์บิลด์เป็น llamafile จึงมีโอกาสสูงที่จะทำงานได้ทันที
- หากมีฮาร์ดแวร์ที่แรงกว่า หรือมี GPU ก็สามารถเลือกโมเดลที่ใหญ่กว่าและมีความสามารถในการแสดงออกสูงกว่า ซึ่งอาจให้คำตอบที่แม่นยำกว่า
- ผู้ใช้ Windows ต้องเพิ่ม นามสกุล
.exe ต่อท้ายชื่อไฟล์ก่อนรัน
- บน Windows สามารถรันได้เฉพาะ ไฟล์ปฏิบัติการที่มีขนาดต่ำกว่า 4GB เท่านั้น
เอกสารและไลเซนส์
- เอกสารทั้งหมดอยู่ที่ docs.mozilla.ai/llamafile
- รายการเอกสารหลัก:
- โปรเจกต์ llamafile ใช้ไลเซนส์ Apache 2.0
- ส่วนที่แก้ไขเพิ่มเติมสำหรับ llama.cpp และ whisper.cpp ใช้ ไลเซนส์ MIT เช่นเดียวกับโปรเจกต์ต้นทาง ซึ่งเป็นการเลือกเพื่อคงความเป็นไปได้ในการ upstream ในอนาคตหากต้องการ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดูเหมือนว่าการลองกับโมเดลข้อความ+ภาพอย่าง LLaVA จะดีที่สุด ขั้นตอนนี้อิงกับ macOS แต่ก็น่าจะทำงานคล้ายกันบนแพลตฟอร์มอื่น
llamafile-server-0.1-llava-v1.5-7b-q4ขนาด 4.26GB จาก https://huggingface.co/jartine/llava-v1.5-7B-GGUF/blob/main/...wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/…chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4./llamafile-server-0.1-llava-v1.5-7b-q4แล้วเว็บเซิร์ฟเวอร์จะขึ้นมาที่ พอร์ต 8080ภาพหน้าจออยู่ที่ https://simonwillison.net/2023/Nov/29/llamafile/
ถ้ายังไม่เคยใช้ chatgpt-web ก็แนะนำ สามารถคุยด้วยโมเดล GPT-4 รุ่นใหม่ได้ในราคาถูกกว่า ChatGPT Plus มาก และยังสลับไปใช้ GPT-4 รุ่นเก่าที่จำกัดน้อยกว่าและยังเขียนโค้ดได้ดีจริง ๆ ได้ด้วย
[0]: https://github.com/Niek/chatgpt-web
llamafile-server-0.1-llava-v1.5-7b-q4ไปรันกับการทดสอบที่โปรเจ็กต์ต้องใช้แล้ว และผ่านหมดรวมถึง คำถามด้านวิชัน ด้วย คิดว่าในเชิงกลยุทธ์มันน่าจะสร้างความเปลี่ยนแปลงให้คนจำนวนมากพอสมควรUser: What is the third planet from the sun?Llama: The third planet from the sun is called Mars.งานด้านพอร์ตข้ามแพลตฟอร์มของ Justine Tunney / jart น่าทึ่งและเจ๋งมาก แต่ยังไม่ค่อยแน่ใจนักว่า กรณีใช้งาน ของเครื่องมือนี้คืออะไร
ผมกำลังทำแอป macOS เล็ก ๆ https://www.freechat.run ที่รัน
llama.cppด้วยฟรอนต์เอนด์ SwiftUI และในเวอร์ชันแรกก็หมกมุ่นกับการทำให้เป็นการดาวน์โหลดครั้งเดียวแล้วเปิดมาคุยได้ทันทีโดยไม่ต้องมีการเชื่อมต่อเครือข่ายเลย พอผูกโมเดลเข้าไปกับแอป มันก็ง่ายดีเพราะดาวน์โหลด เปิด แล้วใช้ได้ทันที แต่พอจะปล่อยอัปเดต UI ให้ผู้ใช้เบต้า TestFlight ก็กลายเป็นว่าต้องให้พวกเขาดาวน์โหลดอีก 3GB และทั้ง 3 คนก็บ่นกันหมดหลังจากนั้นเลยแยกการดาวน์โหลดโมเดลเริ่มต้นออกจาก UI เพื่อให้อัปเดตแอปได้แค่ราว 5MB ดูแล้วเครื่องมือนี้ก็น่าจะเจอปัญหาแบบเดียวกันค่อนข้างเร็ว ทันทีที่คุณเริ่มอยากได้อัปเดต
llama.cppเวอร์ชันล่าสุด บางกรณีอาจไม่ใช่ปัญหา แต่ก็ยังสงสัยว่าเหมาะกับการใช้งานแบบไหนhttps://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp
เราดาวน์โหลดและจัดระเบียบโมเดลไว้แล้ว พร้อมใช้งานทันที แต่แอปกลับไม่แม้แต่จะถาม และทำเหมือนผู้ใช้โง่ด้วยการดาวน์โหลดใหม่อีกครั้ง
ตอนนี้ Makeayo ดีขึ้นหน่อยเพราะถามตำแหน่งของโมเดล ส่วนการต้องใช้ symbolic link ใน comfy/automatic นี่ชวนหงุดหงิด แค่ถามตำแหน่งไฟล์ตอนเปิดครั้งแรกและให้เปลี่ยนได้ในตั้งค่าก็พอแล้ว ไม่ใช่เรื่องยากอะไร
cosmopolitan libcดูแทบจะเป็นการโชว์เทคนิคสุดเจ๋ง และสมควรได้รับคำชม รวมถึงอาจมีกรณีใช้งานจริงอยู่บ้าง แต่สำหรับวัตถุประสงค์ส่วนใหญ่มันดูไม่ค่อยใช้งานได้จริงถ้ามีฟอร์แมตแบบ ELF อ้วนมากที่รองรับสถาปัตยกรรมและระบบปฏิบัติการได้มากเท่าที่ต้องการ เราจะใช้มันไหม? คิดว่าอาจจะไม่
แต่พอได้ใช้
zig ccมาสักพัก ก็เริ่มรู้สึกว่าการ บิลด์ครั้งเดียวเพื่อทำไบนารีอเนกประสงค์ขนาดมหึมา ก็อาจมีเหตุผลเหมือนกัน การ dispatch ตามไมโครสถาปัตยกรรมก็เป็นจุดที่ดีด้วย จนตอนนี้เหมือนยิ่งใช้ยิ่งเผลอโน้มน้าวตัวเองให้เห็นด้วยกับทางเลือกนี้ดูเหมือนมันจะมองรูปไม่ค่อยออก ไม่ว่าจะอัปโหลดรูปอะไรเข้าไปก็ตาม แต่คำตอบนี้ก็ตลกดี
User: Describe the image in the most detailed way possibleLlama: The image is a close-up of an empty, dark room with no visible objects or people...User: is it just a black square?Llama: Yes, it is just a black square.พอถามว่าเป็นสี่เหลี่ยมสีขาวล้วนหรือเปล่า มันก็ตอบว่าไม่ใช่แค่สี่เหลี่ยมสีขาวธรรมดา แต่ดูเหมือนงานนามธรรมที่มีทั้งสีเทาและสีน้ำตาลอมเหลือง
บทความที่เกี่ยวข้องของ Simon Willison ดีมาก: https://simonwillison.net/2023/Nov/29/llamafile/
วิธีที่โมเดลนี้ หลอนคำตอบ น่าสนใจดี พอลองให้ดู “In the Mountains” ของ Albert Bierstadt (https://www.wikiart.org/en/albert-bierstadt/in-the-mountains...) มันก็ยังยืนกรานอยู่เรื่อย ๆ ว่ามีวัวกระจายอยู่ทั่วฉาก
ทั้งที่พอบอกไปว่าไม่มีวัว หรือมันอาจเข้าใจผิดว่าก้อนหินเป็นวัว มันก็ยังตอบว่าไม่ใช่ จนกระทั่งพอบอกซ้ำว่า “ไม่มีวัว” มันถึงค่อยบรรยายว่าเป็นฉากสงบที่มีภูเขา ทะเลสาบ ต้นไม้ นก และเรือ
ข้อมูลที่เกี่ยวข้อง: https://hacks.mozilla.org/2023/11/introducing-llamafile/ และ https://twitter.com/justinetunney/status/1729940628098969799
มาจากกระแสที่ https://news.ycombinator.com/item?id=38463456 และ https://news.ycombinator.com/item?id=38464759 แต่คอมเมนต์ถูกรวมมาไว้ที่นี่
กำลังลองรันโมเดล รูปแบบ GGUF ของ
llama.cppหลายตัวในลักษณะนี้git clone https://github.com/ggerganov/llama.cppcd llama.cppmake# M2 Max - 16 GB RAMwget -P ./models https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-16k-GGUF/…./server -m models/openhermes-2.5-mistral-7b-16k.Q8_0.gguf -c 16000 -ngl 32# M1 - 8 GB RAMwget -P ./models https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-16k-GGUF/…./server -m models/openhermes-2.5-mistral-7b.Q4_K_M.gguf -c 2000 -ngl 32คิดว่าชื่อ Llaminate ก็ใช้ได้เหมือนกัน น่าจะใช้เป็นคำกริยาทั่วไปในความหมายว่าห่อให้เป็นก้อนที่พร้อมใช้กับโมเดลที่เข้ากันได้กับ llama ได้ทันที
สร้างด้วย Cosmopolitan แต่ยังมี รองรับ CUDA ด้วยนี่เจ๋งดี ดูเหมือนว่าเดือนนี้ Cosmopolitan จะเพิ่มการรองรับ dynamic linking บางส่วนเพื่อให้ใช้ GPU ได้: https://github.com/jart/cosmopolitan/commit/5e8c928f1a37349a...
น่าเสียดายที่ยังต้องติดตั้ง CUDA developer toolkit ด้วย ถ้ามีแค่ไดรเวอร์ Nvidia แล้วสามารถแจกจ่ายแอป CUDA ให้รันได้โดยไม่มี dependency เพิ่มเติมก็น่าจะทำได้เต็มรูปแบบ ถ้าแก้จุดนี้ได้คงเป็น game changer เลย
ชอบประโยคที่ว่า “เก็บไฟล์นี้ใส่ USB stick แล้วเก็บไว้ในลิ้นชัก ก็เหมือนเป็นประกันรับมือวันสิ้นโลกในอนาคต เราจะไม่มีวันต้องใช้ชีวิตโดยไม่มี language model อีกต่อไป”