- 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.cpp và Cosmopolitan 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
- llamafile là một dự án của Mozilla Builders và hiện được Mozilla.ai cải tổ
- Phần giới thiệu dự án được liên kết trong bài blog công bố
- Dự án đang tiếp nhận ý kiến về những điểm người dùng thấy có giá trị và điều gì sẽ giúp nó hữu ích hơn
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 âm và dị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
- Tài liệu đầy đủ nằm ở docs.mozilla.ai/llamafile
- Các mục tài liệu chính:
- Dự án llamafile dùng giấy phép Apache 2.0
- Các phần thay đổi đối với llama.cpp và whisper.cpp dùng cùng giấy phép MIT như dự án gốc, đây là lựa chọn nhằm duy trì khả năng upstream trong tương lai nếu muốn
1 bình luận
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
llamafile-server-0.1-llava-v1.5-7b-q4dung 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/…chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4để cấp quyền thực thi./llamafile-server-0.1-llava-v1.5-7b-q4thì một web server sẽ được dựng lên ở cổng 8080Ảnh chụp màn hình có ở https://simonwillison.net/2023/Nov/29/llamafile/
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
llamafile-server-0.1-llava-v1.5-7b-q4cho 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ườiUser: 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.cppvớ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ànSau đó 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.cppmớ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 ở đâuhttps://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp
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ó
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ụngNế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 ccmộ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ậpCó 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 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.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/ và https://twitter.com/justinetunney/status/1729940628098969799
Đây là luồng xuất phát từ https://news.ycombinator.com/item?id=38463456 và https://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.cpptheo cách nàygit 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 32Llaminate 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
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”