2 điểm bởi GN⁺ 2023-11-30 | 1 bình luận | Chia sẻ qua WhatsApp

Tóm tắt dự án llamafile

  • Phát triển một framework kết hợp llama.cpp và Cosmopolitan Libc nhằm hiện thực hóa giấc mơ để các nhà phát triển AI có thể build và chạy ở bất cứ đâu
  • llamafile có thể chạy trên nhiều vi kiến trúc CPU và kiến trúc CPU khác nhau, đồng thời hỗ trợ thực thi mã với một bản build duy nhất trên nhiều hệ điều hành
  • Có thể nhúng trọng số của LLM vào trong llamafile để chạy nhanh thông qua ánh xạ bộ nhớ trực tiếp

Cách sử dụng binary

  • Cung cấp binary ví dụ cho nhiều mô hình có thể tải xuống qua Hugging Face
  • Binary dòng lệnh được chạy tương tự như việc gọi thủ công hàm "main" của llama.cpp
  • Binary máy chủ chạy một web server cục bộ để cung cấp chatbot dựa trên web

Lưu ý

  • Khi dùng Apple Silicon trên macOS, cần cài đặt Xcode
  • Trên Windows, cần đổi tên tệp thành llamafile.exe thì mới có thể chạy
  • Nếu gặp sự cố khi chạy trong zsh, Python subprocess, Fish, v.v., nên dùng lệnh thay thế
  • Cung cấp cách khắc phục khi gặp vấn đề binfmt_misc trên Linux

Hỗ trợ GPU

  • Trên Apple Silicon, sẽ tự động hoạt động khi đã cài đặt Xcode
  • Trên Linux, cần cài đặt compiler và thiết lập flag để hỗ trợ GPU Nvidia cuBLAS
  • Trên Windows, sau lần chạy đầu tiên bằng MSVC x64 Native Command Prompt, cần thiết lập đường dẫn CUDA

Cách build mã nguồn

  • Hướng dẫn cách build mã nguồn llamafile bằng toolchain cosmocc
  • Cung cấp ví dụ tạo mã hàm libc và chạy HTTP server

Tài liệu zipalign

  • Giải thích cách dùng công cụ zipalign để thêm các tệp không nén đã được căn chỉnh vào kho lưu trữ PKZIP
  • Chạy nhanh hơn các công cụ ZIP archive hiện có và đáp ứng yêu cầu căn chỉnh bộ nhớ

Chi tiết kỹ thuật

  • llamafile tận dụng tính năng mmap() giúp kết hợp shell script và trọng số để cho phép chạy nhanh
  • Đưa ra các giải pháp kỹ thuật cho việc nhúng trọng số ZIP, tính khả chuyển giữa các vi kiến trúc và kiến trúc, cùng hỗ trợ GPU

Giấy phép

  • Dự án llamafile sử dụng giấy phép Apache 2.0, còn các thay đổi đối với llama.cpp áp dụng giấy phép MIT

Vấn đề đã biết

  • Trên Windows 64-bit có giới hạn kích thước tệp 4GB, vì vậy cần dùng trọng số dưới dạng tệp riêng

Ý kiến của GN⁺

Điểm quan trọng nhất của bài viết này là cách tiếp cận đổi mới của dự án llamafile, giúp các nhà phát triển AI dễ dàng build và chạy LLM ở bất cứ đâu. Dự án này mang lại khả năng tương thích trên nhiều nền tảng và kiến trúc, đồng thời cải thiện đáng kể tính tiện dụng nhờ phân phối dưới dạng một tệp duy nhất có kèm trọng số. Những tiến bộ kỹ thuật như vậy có tiềm năng thúc đẩy nhanh hơn nữa nghiên cứu và phát triển AI, nên đây là nội dung rất đáng quan tâm với những ai quan tâm đến lĩnh vực này.

1 bình luận

 
GN⁺ 2023-11-30
Ý kiến trên Hacker News
  • Cách sử dụng mô hình LLaVA

    • Cách tốt nhất để thử mô hình LLaVA trên macOS là dùng một mô hình kết hợp văn bản và hình ảnh, tương tự GPT-4 Vision.
    • Có hướng dẫn từng bước cách chạy trên macOS, và dự kiến sẽ hoạt động tương tự trên các nền tảng khác, dù chưa thử.
      1. Tải tệp llamafile-server-0.1-llava-v1.5-7b-q4 dung lượng 4.26GB từ Hugging Face
      2. Cấp quyền thực thi trong terminal
      3. Chạy tệp thực thi để khởi động máy chủ web trên cổng 8080
      4. Mở trình duyệt tại http://127.0.0.1:8080/ để tải ảnh lên và bắt đầu trò chuyện với mô hình
  • Chia sẻ kinh nghiệm phát triển ứng dụng macOS

    • Cùng với sự thán phục trước công sức về tính di động xuất sắc của Justine Tunney / jart, người phát triển cho biết họ chạy llama.cpp trong ứng dụng macOS của mình cùng với frontend SwiftUI.
    • Ở phiên bản đầu tiên của ứng dụng, họ tập trung vào việc chỉ cần tải một lần rồi có luồng chat và không cần kết nối mạng.
    • Họ từng đóng gói sẵn mô hình trong ứng dụng để có thể dùng ngay sau khi tải xuống, nhưng gặp vấn đề là mỗi lần phát hành cập nhật UI thì người dùng lại phải tải lại 3GB.
    • Sau khi người dùng phàn nàn, họ đã tách phần tải mô hình mặc định khỏi UI để mỗi lần cập nhật ứng dụng chỉ cần phân phối khoảng 5MB.
    • Họ dự đoán những người dùng công cụ này sẽ gặp vấn đề tương tự khi muốn cập nhật llama.cpp, và tự hỏi liệu có trường hợp nào mà vấn đề này không quan trọng hay không.
  • Gợi ý bài viết liên quan của Simon Willison

    • Chia sẻ liên kết gợi ý đến bài viết liên quan của Simon Willison.
  • Chia sẻ các liên kết liên quan

    • Chia sẻ liên kết đến phần giới thiệu llamafile của Mozilla và bài tweet của Justine Tunney.
  • Đề xuất tên gọi Llaminate

    • Đề xuất cái tên 'Llaminate' cho tác vụ phổ biến là bọc các mô hình tương thích Llama thành blob sẵn sàng để sử dụng.
  • Sự thán phục về hỗ trợ CUDA bằng Cosmopolitan

    • Bày tỏ sự thán phục việc Cosmopolitan trong tháng này đã bổ sung hỗ trợ dynamic linking để kích hoạt GPU.
    • Thấy hứng thú với khả năng triển khai ứng dụng CUDA mà ngoài driver Nvidia thì không cần thêm phụ thuộc nào khác, dù vẫn cần cài CUDA developer toolkit.
  • Nhắc đến giới hạn kích thước tệp thực thi trên Windows

    • Chia sẻ trải nghiệm rằng tệp thực thi 4GB hoạt động tốt trên hệ thống Windows 10 64-bit.
  • Chia sẻ cách thử nhiều mô hình khác nhau với llama.cpp

    • Chia sẻ cách clone llama.cpp từ GitHub, tải mô hình cần thiết và chạy máy chủ kèm theo mã.
  • Chỉ ra tính hạn chế của binary chỉ hoạt động với một mô hình và một bộ trọng số

    • Nêu ý kiến về tính hạn chế của một binary chỉ chạy được với một mô hình và một bộ trọng số.
  • Nhắc đến tốc độ tạo ra các dự án đáng kinh ngạc của Justine

    • Nhắc đến việc Justine đang tạo ra những dự án đáng kinh ngạc với tốc độ đáng kinh ngạc.