2 คะแนน โดย GN⁺ 2023-11-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

สรุปโปรเจกต์ 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 ความคิดเห็น

 
GN⁺ 2023-11-30
ความคิดเห็นบน Hacker News
  • วิธีใช้โมเดล LLaVA

    • วิธีที่ดีที่สุดในการลองใช้โมเดล LLaVA บน macOS คือใช้โมเดลที่ผสานข้อความและรูปภาพเข้าด้วยกัน (คล้ายกับ GPT-4 Vision)
    • อธิบายวิธีรันบน macOS แบบทีละขั้นตอน และคาดว่าน่าจะทำงานคล้ายกันบนแพลตฟอร์มอื่นด้วย (แม้จะยังไม่ได้ลอง)
      1. ดาวน์โหลดไฟล์ llamafile-server-0.1-llava-v1.5-7b-q4 ขนาด 4.26GB จาก Hugging Face
      2. ให้สิทธิ์รันในเทอร์มินัล
      3. รันไฟล์ปฏิบัติการเพื่อเริ่มเว็บเซิร์ฟเวอร์ที่พอร์ต 8080
      4. ไปที่ http://127.0.0.1:8080/ ในเบราว์เซอร์เพื่ออัปโหลดรูปภาพและเริ่มคุยกับโมเดล
  • แชร์ประสบการณ์พัฒนาแอป macOS

    • พร้อมทั้งชื่นชมงานด้าน portability อันยอดเยี่ยมของ Justine Tunney / jart นักพัฒนาคนนี้รัน llama.cpp ในแอป macOS ของตนร่วมกับฟรอนต์เอนด์ SwiftUI
    • ในเวอร์ชันแรกของแอป โฟกัสอยู่ที่การดาวน์โหลดครั้งเดียวแล้วใช้งานได้ทันที โดยไม่ต้องมีขั้นตอนแชตหรือการเชื่อมต่อเครือข่ายเพิ่มเติม
    • เดิมทีรวมโมเดลมากับแอปแบบ bundle ทำให้ใช้งานได้ทันทีหลังดาวน์โหลด แต่พอปล่อยอัปเดต UI ผู้ใช้ต้องดาวน์โหลด 3GB ใหม่ทุกครั้ง
    • หลังจากผู้ใช้บ่น จึงแยกการดาวน์โหลดโมเดลพื้นฐานออกจาก UI ทำให้เวลาอัปเดตแอปต้องปล่อยข้อมูลเพียงราว 5MB
    • คาดว่าคนที่ใช้เครื่องมือนี้อาจเจอปัญหาคล้ายกันเมื่อต้องการอัปเดต llama.cpp และสงสัยว่ามีกรณีไหนบ้างที่ปัญหานี้อาจไม่สำคัญ
  • แนะนำโพสต์ที่เกี่ยวข้องของ Simon Willison

    • ให้ลิงก์แนะนำไปยังโพสต์ที่เกี่ยวข้องของ Simon Willison
  • แชร์ลิงก์ที่เกี่ยวข้อง

    • แชร์ลิงก์เกี่ยวกับบทแนะนำ llamafile ของ Mozilla และทวีตของ Justine Tunney
  • เสนอชื่อ Llaminate

    • เสนอชื่อ "Llaminate" สำหรับงานทั่วไปในการห่อโมเดลที่เข้ากันได้กับ Llama ให้เป็น blob ที่พร้อมใช้งาน
  • ชื่นชมการรองรับ CUDA ด้วย Cosmopolitan

    • ชื่นชมที่ Cosmopolitan เพิ่มการรองรับ dynamic linking ในเดือนนี้เพื่อเปิดใช้ GPU
    • สนใจความเป็นไปได้ในการแจกจ่ายแอป CUDA โดยไม่ต้องมี dependency เพิ่มเติมนอกจากไดรเวอร์ Nvidia แม้ว่ายังต้องติดตั้ง CUDA Developer Toolkit
  • กล่าวถึงข้อจำกัดขนาดไฟล์ปฏิบัติการบน Windows

    • แชร์ประสบการณ์ว่าไฟล์ปฏิบัติการขนาด 4GB ทำงานได้ดีบนระบบ Windows 10 แบบ 64 บิต
  • แชร์วิธีทดลองโมเดลต่าง ๆ ของ llama.cpp

    • แชร์วิธี clone llama.cpp จาก GitHub ดาวน์โหลดโมเดลที่ต้องใช้ แล้วรันเซิร์ฟเวอร์ พร้อมตัวอย่างโค้ด
  • ชี้ข้อจำกัดของไบนารีที่ทำงานได้กับโมเดลและชุดน้ำหนักเพียงชุดเดียว

    • แสดงความคิดเห็นถึงข้อจำกัดของไบนารีที่รันได้เพียงโมเดลเดียวและชุดน้ำหนักชุดเดียว
  • กล่าวถึงความเร็วในการสร้างโปรเจกต์น่าทึ่งของ Justine

    • กล่าวถึงว่า Justine กำลังสร้างโปรเจกต์น่าทึ่งได้ด้วยความเร็วที่น่าทึ่ง