2 poin oleh GN⁺ 2023-11-30 | 1 komentar | Bagikan ke WhatsApp
  • llamafile adalah proyek Mozilla Builders yang merangkum deployment dan eksekusi LLM menjadi satu file executable, sehingga bisa dijalankan secara lokal di sebagian besar sistem operasi dan arsitektur CPU tanpa instalasi
  • Implementasinya menggabungkan llama.cpp dan Cosmopolitan Libc untuk melipat kompleksitas menjalankan LLM ke dalam satu executable “llamafile”, dan proyek ini telah dirombak oleh Mozilla.ai
  • whisperfile yang disertakan adalah alat speech-to-text satu file berbasis packaging Cosmopolitan yang sama seperti whisper.cpp, mendukung transkripsi dan terjemahan file audio
  • Sejak v0.10.0, proyek ini menggunakan sistem build baru agar lebih mudah selaras dengan versi terbaru llama.cpp, sehingga mendukung model dan fitur yang lebih baru, meski beberapa fungsi lama yang sudah familier mungkin tidak lagi ada
  • Di Windows, perlu menambahkan ekstensi .exe sebelum dijalankan, dan karena file executable di atas 4GB tidak bisa dijalankan di Windows, pengguna perlu memakai biner llamafile terpisah dan bobot/model GGUF eksternal

Menjalankan LLM dalam satu file

  • llamafile adalah proyek yang memungkinkan LLM didistribusikan dan dijalankan sebagai satu file
  • Tujuannya adalah meningkatkan aksesibilitas open LLM bagi developer maupun pengguna akhir
  • Menggabungkan llama.cpp dan Cosmopolitan Libc dalam satu framework
  • Hasilnya adalah file executable tunggal bernama “llamafile”, yang berjalan secara lokal tanpa instalasi
  • Cakupan dukungannya meliputi sebagian besar sistem operasi dan arsitektur CPU

Perombakan Mozilla.ai dan proyek terkait

Termasuk whisperfile

  • whisperfile adalah alat speech-to-text satu file yang disertakan dalam llamafile
  • Dibangun di atas packaging Cosmopolitan yang sama seperti whisper.cpp
  • Mendukung transkripsi dan terjemahan file audio
  • Bisa digunakan tanpa instalasi pada cakupan platform yang sama dengan llamafile
  • Dokumentasinya tersedia di Whisperfile

Perubahan sistem build di v0.10.x

  • Mulai 0.10.0 llamafile menggunakan sistem build baru
  • Tujuan sistem build baru ini adalah menjaga agar basis kode lebih mudah diselaraskan dengan versi terbaru llama.cpp
  • Perubahan ini menghadirkan dukungan untuk model dan fitur yang lebih baru
  • Pada saat yang sama, beberapa fitur yang sebelumnya familier bagi pengguna mungkin sudah tidak ada
  • Penjelasan tingkat tinggi tentang perubahan ini ada di README_0.10.0.md
  • Pengguna yang lebih menyukai “classic experience” bisa mengakses versi sebelumnya di halaman releases
  • llamafile pre-built menampilkan versi server apa yang dibundel bersamanya

Quickstart dan batasan Windows

  • Model contoh yang digunakan adalah Qwen3.5 0.8B, dan README menunjukkan alur untuk mengunduh serta menjalankannya dalam beberapa menit
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
  • Model ini dipilih karena merupakan model terkecil yang dibangun proyek sebagai llamafile, sehingga kemungkinan besar bisa langsung berjalan
  • Jika memiliki hardware atau GPU yang lebih kuat, pengguna bisa memilih model yang lebih besar dan lebih ekspresif, yang dapat memberikan respons lebih akurat
  • Pengguna Windows harus menambahkan ekstensi .exe ke nama file sebelum menjalankannya
  • Di Windows, hanya file executable di bawah 4GB yang dapat dijalankan

Dokumentasi dan lisensi

1 komentar

 
GN⁺ 2023-11-30
Pendapat Hacker News
  • Tampaknya paling bagus dicoba dengan model teks+gambar seperti LLaVA. Prosedurnya untuk macOS, tetapi sepertinya akan bekerja serupa di platform lain

    1. Unduh llamafile-server-0.1-llava-v1.5-7b-q4 berukuran 4,26GB dari https://huggingface.co/jartine/llava-v1.5-7B-GGUF/blob/main/...
      wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/…
    2. Di terminal, jadikan dapat dieksekusi dengan chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4
    3. Jalankan ./llamafile-server-0.1-llava-v1.5-7b-q4, lalu web server akan muncul di port 8080
    4. Buka http://127.0.0.1:8080/, unggah gambar, lalu berbincang dengan model di browser
      Screenshot ada di https://simonwillison.net/2023/Nov/29/llamafile/
    • Hampir sebagus chatgpt-web [0], dan mengejutkan karena berjalan offline secara gratis
      Kalau belum pernah memakai chatgpt-web, saya merekomendasikannya. Dengan model GPT-4 baru, Anda bisa bercakap-cakap jauh lebih murah daripada ChatGPT Plus, dan masih bisa beralih ke model GPT-4 lama yang lebih tidak dibatasi dan benar-benar masih bagus untuk coding
      [0]: https://github.com/Niek/chatgpt-web
    • Agar pengetikan lebih sedikit, saya memasukkannya ke konfigurasi Docker: https://github.com/tluyben/llamafile-docker
    • Saya menjalankan llamafile-server-0.1-llava-v1.5-7b-q4 pada pengujian yang dibutuhkan proyek, dan semuanya lolos, termasuk kueri vision. Secara strategis, rasanya ini akan membawa perubahan bagi cukup banyak orang
    • Saya menanyakan hal sederhana, dan jawabannya seperti ini
      User: What is the third planet from the sun?
      Llama: The third planet from the sun is called Mars.
  • Pekerjaan portabilitas Justine Tunney / jart memang hebat dan benar-benar keren, tetapi saya belum yakin dengan use case alat ini
    Saya sedang membuat aplikasi macOS kecil https://www.freechat.run yang menjalankan llama.cpp dengan frontend SwiftUI. Pada versi pertama, saya terobsesi membuatnya sekali unduh lalu langsung bisa chat, dengan 0 koneksi jaringan. Menggabungkan model ke dalam aplikasi membuatnya mudah karena pengguna cukup mengunduh, membuka, lalu langsung memakai. Namun ketika saya mencoba mendistribusikan pembaruan UI ke pengguna beta TestFlight, mereka harus mengunduh 3GB lagi, dan ketiga pengguna semuanya mengeluh
    Setelah itu, saya memisahkan unduhan model bawaan dari UI, sehingga pembaruan aplikasi hanya sekitar 5MB. Saya rasa alat ini juga akan cukup cepat menemui masalah yang sama begitu orang ingin mendapatkan pembaruan llama.cpp terbaru. Mungkin ada kasus ketika itu tidak masalah, tetapi saya penasaran ini berguna di mana
    https://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp

    • Saya tidak paham obsesi membuat semuanya 0 klik. Ini sangat menjengkelkan ketika saya tidak ingin memasang semuanya di hard disk utama
      Model sudah saya unduh dan susun rapi, siap dipakai, tetapi aplikasi-aplikasi tidak menanyakannya dan memperlakukan pengguna seperti orang bodoh dengan mengunduhnya lagi
      Makeayo sekarang setidaknya lebih baik karena menanyakan lokasi model, dan harus memakai symbolic link di comfy/automatic itu menyebalkan. Cukup tanyakan lokasi file saat pertama kali dijalankan dan izinkan mengubahnya di pengaturan; itu bukan hal sulit
    • Binari itu sendiri bisa diunduh terpisah: https://github.com/Mozilla-Ocho/llamafile/releases
    • Itu tampaknya lebih merupakan masalah MAS/TestFlight yang tidak menyediakan delta update
    • Karena ini hanya file zip, pada platform selain Windows sepertinya bisa diperbarui di tempat bahkan saat sedang berjalan. Cukup ganti satu file yang berubah, dan kalau dalam mode server, executable mungkin juga bisa hot reload tanpa downtime pengguna
    • cosmopolitan libc benar-benar seperti trik sulap yang keren, layak dipuji, dan mungkin punya use case nyata, tetapi untuk sebagian besar tujuan tampaknya tidak praktis
      Kalau ada format seperti ELF yang sangat gemuk dan mendukung sebanyak mungkin arsitektur serta sistem operasi yang diinginkan, apakah kita akan memakainya? Rasanya mungkin tidak
      Namun setelah memakai zig cc beberapa waktu, saya mulai berpikir bahwa pendekatan sekali build untuk membuat binari universal berukuran sangat besar juga bisa masuk akal. Dispatch per mikroarsitektur juga merupakan unsur yang bagus, jadi semakin dipakai, rasanya saya malah sedang meyakinkan diri sendiri akan alternatifnya
  • Gambar apa pun yang saya unggah tampaknya tidak bisa dilihat dengan benar. Meski begitu, jawaban ini lucu
    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.

    • Saya mengunggah PNG 50x50 putih polos, dan jawabannya kira-kira ada latar belakang putih dengan area abu-abu kecil serta titik oranye di sebelah kanan
      Saat saya bertanya apakah itu kotak putih, ia mengatakan itu bukan sekadar kotak putih, melainkan tampak seperti lukisan abstrak yang juga memiliki warna abu-abu dan kuning kecokelatan
  • Tulisan terkait dari Simon Willison bagus: https://simonwillison.net/2023/Nov/29/llamafile/

  • Cara model ini berhalusinasi menarik. Saat ditunjukkan “In the Mountains” karya Albert Bierstadt (https://www.wikiart.org/en/albert-bierstadt/in-the-mountains...), ia terus bersikeras bahwa ada sapi-sapi tersebar di berbagai bagian adegan
    Meski diberi tahu tidak ada sapi dan mungkin ia keliru mengira batu sebagai sapi, ia menjawab bukan begitu; baru setelah dikatakan lagi “tidak ada sapi”, ia menggambarkannya sebagai adegan tenang dengan gunung, danau, pohon, burung, dan perahu

  • Materi terkait: https://hacks.mozilla.org/2023/11/introducing-llamafile/ dan https://twitter.com/justinetunney/status/1729940628098969799
    Alurnya berasal dari https://news.ycombinator.com/item?id=38463456 dan https://news.ycombinator.com/item?id=38464759, tetapi komentarnya digabungkan ke sini

  • Saya sedang mencoba menjalankan beberapa model format GGUF dari llama.cpp dengan cara seperti ini
    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 juga sepertinya nama yang bagus untuk hal semacam ini. Bisa juga dipakai sebagai kata kerja umum untuk membungkus model yang kompatibel dengan llama menjadi paket yang langsung dapat digunakan

    • Llamanate
  • Keren juga bahwa meski dibangun dengan Cosmopolitan, tetap ada dukungan CUDA. Sepertinya bulan ini Cosmopolitan menambahkan sebagian dukungan dynamic linking agar GPU bisa digunakan: https://github.com/jart/cosmopolitan/commit/5e8c928f1a37349a...
    Sayangnya, perlu memasang CUDA developer toolkit. Sebenarnya sangat mungkin mendistribusikan aplikasi CUDA yang bisa berjalan hanya dengan driver Nvidia tanpa dependensi tambahan; kalau bagian ini juga terselesaikan, itu akan jadi game changer

  • Saya suka kalimat “taruh berkasnya di USB stick dan simpan di laci, maka itu menjadi asuransi untuk menghadapi kiamat di masa depan. Anda tidak akan pernah lagi hidup tanpa model bahasa