2 điểm bởi GN⁺ 2023-11-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • llamafile là một dự án của Mozilla Builders giúp thu gọn việc triển khai và chạy LLM thành một tệp thực thi duy nhất, cho phép chạy cục bộ trên hầu hết hệ điều hành và kiến trúc CPU mà không cần cài đặt
  • Phần triển khai kết hợp llama.cpp với Cosmopolitan Libc để gói độ phức tạp của việc chạy LLM vào một tệp thực thi “llamafile”, và Mozilla.ai đã cải tổ dự án này
  • whisperfile đi kèm là công cụ chuyển giọng nói thành văn bản dạng một tệp, dựa trên cách đóng gói Cosmopolitan giống whisper.cpp, hỗ trợ phiên âm và dịch tệp âm thanh
  • Từ v0.10.0 trở đi, dự án dùng hệ thống build mới để dễ đồng bộ hơn với các phiên bản llama.cpp mới nhất, qua đó hỗ trợ các mô hình và tính năng mới hơn, nhưng có thể thiếu một số tính năng quen thuộc trước đây
  • Trên Windows, cần thêm phần mở rộng .exe trước khi chạy, và các tệp thực thi vượt quá 4GB không thể chạy trên Windows, nên cần dùng riêng binary llamafile cùng trọng số/mô hình GGUF bên ngoài

Chạy LLM trong một tệp duy nhất

  • llamafile là dự án cho phép triển khai và chạy LLM dưới dạng một tệp duy nhất
  • Mục tiêu là tăng khả năng tiếp cận LLM mở cho cả lập trình viên lẫn người dùng cuối
  • Kết hợp llama.cppCosmopolitan Libc trong một framework
  • Kết quả là một tệp thực thi duy nhất gọi là “llamafile”, chạy cục bộ mà không cần cài đặt
  • Phạm vi hỗ trợ là hầu hết hệ điều hành và kiến trúc CPU

Việc cải tổ của Mozilla.ai và các dự án liên quan

Bao gồm whisperfile

  • whisperfile là công cụ chuyển giọng nói thành văn bản dạng một tệp đi kèm trong llamafile
  • Dựa trên cách đóng gói Cosmopolitan giống whisper.cpp
  • Hỗ trợ phiên âmdịch tệp âm thanh
  • Có thể sử dụng không cần cài đặt trên cùng phạm vi nền tảng như llamafile
  • Tài liệu nằm ở Whisperfile

Thay đổi hệ thống build trong v0.10.x

  • Từ 0.10.0, llamafile sử dụng hệ thống build mới
  • Mục đích của hệ thống build mới là giúp mã dễ được duy trì đồng bộ hơn với các phiên bản llama.cpp mới nhất
  • Thay đổi này hỗ trợ các mô hình và tính năng mới hơn
  • Đồng thời, một số tính năng mà người dùng vốn quen thuộc trước đây có thể đã bị thiếu
  • Phần giải thích cấp cao về thay đổi nằm trong README_0.10.0.md
  • Người dùng thích “classic experience” có thể truy cập các phiên bản trước trên trang releases
  • Các llamafile được build sẵn cho biết chúng được đóng gói cùng phiên bản server nào

Bắt đầu nhanh và giới hạn trên Windows

  • Mô hình ví dụ là Qwen3.5 0.8B, và README trình bày quy trình tải xuống rồi chạy trong vài phút
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
  • Mô hình này được chọn vì là mô hình nhỏ nhất trong số các mô hình mà dự án đã build thành llamafile, nên có khả năng cao sẽ chạy được ngay
  • Nếu có phần cứng mạnh hơn hoặc GPU, bạn có thể chọn mô hình lớn hơn và giàu khả năng biểu đạt hơn, có thể đưa ra phản hồi chính xác hơn
  • Người dùng Windows phải thêm phần mở rộng .exe vào tên tệp trước khi chạy
  • Trên Windows chỉ có thể chạy các tệp thực thi nhỏ hơn 4GB

Tài liệu và giấy phép

1 bình luận

 
GN⁺ 2023-11-30
Các ý kiến trên Hacker News
  • Có vẻ tốt nhất là thử với các mô hình văn bản+hình ảnh như LLaVA. Quy trình dưới đây dành cho macOS, nhưng có lẽ cũng hoạt động tương tự trên các nền tảng khác

    1. Tải llamafile-server-0.1-llava-v1.5-7b-q4 dung lượng 4,26GB từ https://huggingface.co/jartine/llava-v1.5-7B-GGUF/blob/main/...
      wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/…
    2. Trong terminal, chạy chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4 để cấp quyền thực thi
    3. Chạy ./llamafile-server-0.1-llava-v1.5-7b-q4 thì một web server sẽ được dựng lên ở cổng 8080
    4. Truy cập http://127.0.0.1:8080/, tải ảnh lên rồi trò chuyện với mô hình trong trình duyệt là được
      Ảnh chụp màn hình có ở https://simonwillison.net/2023/Nov/29/llamafile/
    • Gần như tốt ngang chatgpt-web [0], và thật đáng ngạc nhiên là nó chạy miễn phí khi offline
      Nếu chưa dùng chatgpt-web thì tôi khuyên nên thử. Dùng các mô hình GPT-4 mới sẽ giúp trò chuyện rẻ hơn nhiều so với ChatGPT Plus, và bạn vẫn có thể chuyển sang mô hình GPT-4 cũ, ít bị giới hạn hơn, vốn vẫn thật sự giỏi lập trình
      [0]: https://github.com/Niek/chatgpt-web
    • Tôi đã đưa nó vào cấu hình Docker để gõ ít hơn: https://github.com/tluyben/llamafile-docker
    • Tôi đã chạy llamafile-server-0.1-llava-v1.5-7b-q4 cho các bài test cần cho dự án, và nó vượt qua tất cả, kể cả truy vấn thị giác. Về mặt chiến lược, có vẻ điều này sẽ tạo thay đổi cho khá nhiều người
    • Tôi hỏi thử đơn giản thì nhận được câu trả lời như sau
      User: What is the third planet from the sun?
      Llama: The third planet from the sun is called Mars.
  • Công việc về tính di động của Justine Tunney / jart thật xuất sắc và cực kỳ hay, nhưng tôi vẫn chưa rõ trường hợp sử dụng của công cụ lần này
    Tôi đang làm một ứng dụng macOS nhỏ https://www.freechat.run chạy llama.cpp với frontend SwiftUI, và ở phiên bản đầu tiên tôi rất chú trọng việc chỉ cần tải một lần là chat ngay, không có kết nối mạng nào. Việc đóng gói mô hình vào ứng dụng khiến mọi thứ dễ dùng vì tải về, mở lên là chạy được ngay, nhưng khi tôi muốn phát hành bản cập nhật UI cho người dùng beta trên TestFlight thì lại bắt họ tải thêm 3GB nữa, và cả 3 người đều phàn nàn
    Sau đó tôi tách phần tải mô hình mặc định khỏi UI, để các bản cập nhật ứng dụng chỉ còn khoảng 5MB. Tôi nghĩ công cụ này cũng sẽ khá nhanh gặp vấn đề tương tự ngay khi người dùng muốn nhận các cập nhật llama.cpp mới nhất. Có thể có những trường hợp không quan trọng, nhưng tôi tò mò nó sẽ hữu ích ở đâu
    https://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp

    • Tôi không hiểu nỗi ám ảnh muốn biến mọi thứ thành 0 cú nhấp. Nó thật sự gây khó chịu khi bạn không muốn cài mọi thứ vào ổ đĩa chính
      Mô hình thì tôi đã tải về, sắp xếp sẵn và có thể dùng ngay, nhưng các ứng dụng chẳng buồn hỏi mà đối xử với người dùng như đồ ngốc rồi tải lại từ đầu
      Makeayo giờ đã hỏi vị trí mô hình nên còn đỡ hơn, còn việc phải dùng symbolic link trong comfy/automatic thì khó chịu. Chỉ cần hỏi vị trí tệp ở lần chạy đầu tiên và cho phép đổi trong phần cài đặt là được, đâu phải việc khó
    • Có thể tải riêng bản binary tại đây: https://github.com/Mozilla-Ocho/llamafile/releases
    • Chuyện đó có vẻ là vấn đề ở phía MAS/TestFlight vì không cung cấp cập nhật delta
    • Vì nó chỉ là tệp zip, trên các nền tảng không phải Windows có lẽ có thể cập nhật tại chỗ ngay cả khi đang chạy. Chỉ cần thay tệp đã thay đổi, và nếu ở chế độ server thì có lẽ còn có thể hot reload tệp thực thi mà không làm người dùng bị downtime
    • cosmopolitan libc đúng là gần như một màn trình diễn kỹ thuật rất ấn tượng, xứng đáng được khen và chắc cũng có các trường hợp sử dụng thực tế, nhưng với đa số mục đích thì có vẻ không thực dụng
      Nếu có một định dạng kiểu ELF cực béo hỗ trợ thật nhiều kiến trúc và hệ điều hành như mong muốn, liệu chúng ta có dùng nó không? Có lẽ là không
      Tuy vậy, sau khi dùng zig cc một thời gian, tôi bắt đầu nghĩ cách build một lần để tạo binary phổ dụng siêu lớn cũng có thể hợp lý. Dispatch theo từng vi kiến trúc cũng là một điểm hay, nên càng viết tôi lại càng như đang tự thuyết phục mình về phương án đối lập
  • Có vẻ dù tải ảnh nào lên thì nó cũng không nhìn được đúng. Dù vậy câu trả lời này khá buồn cười
    User: Describe the image in the most detailed way possible
    Llama: 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.

    • Tôi tải lên một PNG 50x50 trắng tinh, và nó thường trả lời rằng có một vùng xám nhỏ trên nền trắng cùng một chấm màu cam ở bên phải
      Khi tôi hỏi có phải đó là một hình vuông trắng không, nó nói không phải hình vuông trắng đơn giản, mà trông giống một tranh trừu tượng có cả màu xám và nâu vàng
  • Bài viết liên quan của Simon Willison rất hay: https://simonwillison.net/2023/Nov/29/llamafile/

  • Cách mô hình này ảo giác khá thú vị. Khi cho xem “In the Mountains” của Albert Bierstadt (https://www.wikiart.org/en/albert-bierstadt/in-the-mountains...), nó cứ khăng khăng rằng có những con bò rải rác khắp cảnh
    Dù nói rằng không có bò và có phải nó nhầm đá thành bò không, nó vẫn trả lời là không; đến khi nói lại “không có bò” thì lúc đó nó mới mô tả đây là một khung cảnh yên bình với núi, hồ, cây, chim và thuyền

  • Tài liệu liên quan: https://hacks.mozilla.org/2023/11/introducing-llamafile/https://twitter.com/justinetunney/status/1729940628098969799
    Đây là luồng xuất phát từ https://news.ycombinator.com/item?id=38463456https://news.ycombinator.com/item?id=38464759, nhưng các bình luận đã được gộp về đây

  • Đang thử chạy nhiều mô hình định dạng GGUF của llama.cpp theo cách này
    git clone https://github.com/ggerganov/llama.cpp
    cd llama.cpp
    make
    # M2 Max - 16 GB RAM
    wget -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 RAM
    wget -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 cũng có vẻ là một cái tên ổn cho thứ như thế này. Nó cũng có thể được dùng như một động từ chung, nghĩa là bọc một mô hình tương thích với llama thành một khối có thể dùng ngay

    • Llamanate
  • Dù được build bằng Cosmopolitan mà vẫn có hỗ trợ CUDA thì thật ấn tượng. Có vẻ tháng này Cosmopolitan đã thêm một phần hỗ trợ liên kết động để cho phép dùng GPU: https://github.com/jart/cosmopolitan/commit/5e8c928f1a37349a...
    Đáng tiếc là vẫn cần cài CUDA developer toolkit. Về mặt kỹ thuật, hoàn toàn có thể phân phối ứng dụng CUDA chỉ cần driver Nvidia là chạy, không cần phụ thuộc riêng; nếu giải quyết được đến phần này thì sẽ là một bước ngoặt

  • Tôi thích câu “hãy cho tệp vào USB, cất trong ngăn kéo, vậy là bạn có bảo hiểm cho ngày tận thế trong tương lai. Bạn sẽ không bao giờ phải sống thiếu mô hình ngôn ngữ nữa”