2 ポイント 投稿者 GN⁺ 2023-11-30 | 1件のコメント | WhatsAppで共有
  • llamafileは、LLMのデプロイと実行を単一の実行ファイルにまで簡素化し、インストール不要で大半のオペレーティングシステムとCPUアーキテクチャ上でローカル実行できるようにするMozilla Buildersのプロジェクト
  • 実装はllama.cppとCosmopolitan Libcを組み合わせ、LLM実行の複雑さを1つの「llamafile」実行ファイルに畳み込む方式で、Mozilla.aiがプロジェクトを刷新
  • 同梱されているwhisperfileは、whisper.cppと同様のCosmopolitanパッケージングに基づく単一ファイルの音声テキスト変換ツールで、音声ファイルの文字起こしと翻訳をサポート
  • v0.10.0以降は、llama.cppの最新バージョンにより容易に追従するための新しいビルドシステムを採用し、より新しいモデルと機能をサポートする一方、従来使い慣れていた一部機能がなくなっている可能性あり
  • Windowsでは実行前に.exe拡張子の追加が必要で、4GBを超える実行ファイルはWindowsで実行できないため、別途llamafileバイナリと外部GGUF重み/モデルの利用が必要

単一ファイルでLLMを実行

  • llamafileは、LLMを1つのファイルで配布・実行できるようにするプロジェクト
  • 目標は、開発者とエンドユーザーの双方にとってオープンLLMのアクセシビリティを高めること
  • llama.cppCosmopolitan Libcを1つのフレームワークとして結合
  • 成果物は「llamafile」という単一ファイルの実行ファイルであり、インストールなしでローカル実行される
  • 対応範囲は大半のオペレーティングシステムとCPUアーキテクチャ

Mozilla.aiによる刷新と関連プロジェクト

whisperfileを同梱

  • whisperfileは、llamafileに含まれる単一ファイルの音声テキスト変換ツール
  • whisper.cppと同様のCosmopolitanパッケージングに基づく
  • 音声ファイルの文字起こし翻訳をサポート
  • llamafileと同じプラットフォーム範囲でインストール不要で利用可能
  • ドキュメントはWhisperfileにある

v0.10.xのビルドシステム変更

  • 0.10.0からllamafileは新しいビルドシステムを使用
  • 新ビルドシステムの目的は、コードを最新のllama.cppバージョンにより容易に追従できる状態に保つこと
  • この変更により、より新しいモデルと機能をサポート
  • 同時に、ユーザーが従来使い慣れていた一部機能が失われている可能性がある
  • 変更の高水準な説明はREADME_0.10.0.mdにある
  • 「classic experience」を好むユーザーは、releasesページから旧バージョンにアクセス可能
  • 事前ビルド済みllamafileには、どのサーバーバージョンと組み合わされているかが表示される

クイックスタートとWindowsの制約

  • サンプルモデルはQwen3.5 0.8Bで、READMEは数分でダウンロードして実行する流れを示している
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
  • このモデルは、プロジェクトがllamafileとしてビルドしたモデルの中で最も小さく、すぐに動作する可能性が高いため選ばれている
  • より強力なハードウェアやGPUがあれば、より大きく表現力の高いモデルを選べ、より正確な応答が期待できる
  • Windowsユーザーは、実行前にファイル名へ**.exe拡張子**を追加する必要がある
  • Windowsでは4GB未満の実行ファイルのみ実行可能
    • 4GBを超えるllamafileはWindowsでは動作しない
    • この場合はllamafileバイナリをダウンロードし、外部重み/モデル(GGUF)とともに実行する必要がある

ドキュメントとライセンス

1件のコメント

 
GN⁺ 2023-11-30
Hacker News の意見
  • LLaVA のようなテキスト+画像モデルで試してみるのが一番よさそう。手順は macOS 前提だが、他のプラットフォームでも似たように動くはず

    1. https://huggingface.co/jartine/llava-v1.5-7B-GGUF/blob/main/... から 4.26GB の llamafile-server-0.1-llava-v1.5-7b-q4 を取得する
      wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/…
    2. ターミナルで chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4 として実行可能にする
    3. ./llamafile-server-0.1-llava-v1.5-7b-q4 を実行すると 8080 ポートで Web サーバーが立ち上がる
    4. http://127.0.0.1:8080/ にアクセスし、画像をアップロードしてブラウザ上でモデルと会話すればよい
      スクリーンショットは https://simonwillison.net/2023/Nov/29/llamafile/ にある
    • ほぼ chatgpt-web [0] と同じくらい良く、オフラインで無料で動く点が驚き
      chatgpt-web を使ったことがないならおすすめ。新しい GPT-4 モデルを使えば ChatGPT Plus よりはるかに安く会話できるし、今でも実際にコーディングが得意だった昔の、制限の少ない GPT-4 モデルにも切り替えられる
      [0]: https://github.com/Niek/chatgpt-web
    • 入力の手間をさらに減らすため、Docker 設定に入れておいた: https://github.com/tluyben/llamafile-docker
    • llamafile-server-0.1-llava-v1.5-7b-q4 をプロジェクトに必要なテストで動かしてみたが、ビジョン系の質問まで全部通った。戦略的にかなり多くの人に変化が起きそう
    • 軽く聞いてみたら、こんな答えが返ってきた
      User: What is the third planet from the sun?
      Llama: The third planet from the sun is called Mars.
  • Justine Tunney / jart の移植性に関する仕事はすごいし本当に見事だが、このツールの ユースケースはまだよく分からない
    llama.cpp を SwiftUI フロントエンドで動かす小さな macOS アプリ https://www.freechat.run を作っているが、最初のバージョンでは、単一のダウンロード後すぐにチャットでき、ネットワーク接続は 0 にすることにこだわった。モデルをアプリに同梱したので、ダウンロードして開けばすぐ使えて簡単だったが、TestFlight のベータユーザーに UI 更新を配布しようとしたら、また 3GB をダウンロードさせることになり、3人全員から不満が出た
    その後、デフォルトモデルのダウンロードと UI を分離し、アプリ更新では約 5MB だけ配布するように変えた。このツールも最新の llama.cpp 更新を取り込みたくなった瞬間、かなり早い段階で同じ問題にぶつかりそうだ。問題にならない場合もあるだろうが、どこで役に立つのか気になる
    https://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp

    • 何でも 0クリックにしようとする執着は理解できない。すべてをメインのハードディスクにインストールしたくないとき、本当にいら立つ
      モデルはすでにダウンロードして整理済みですぐ使えるのに、アプリ側はそれを聞きもせず、ユーザーを何も分からない人扱いして再ダウンロードする
      Makeayo は今ではモデルの場所を聞くのでまだましで、comfy/automatic でシンボリックリンクを使わないといけないのは不愉快だ。初回起動時にファイルの場所を尋ね、設定で変更できるようにするだけでよく、難しいことではない
    • バイナリ自体は別途入手できる: https://github.com/Mozilla-Ocho/llamafile/releases
    • それは MAS/TestFlight が差分アップデートをしてくれない側の問題に見える
    • ただの zip ファイルなので、Windows 以外のプラットフォームでは実行中でもその場で更新できそうだ。変更されたファイルを1つ置き換えるだけでよく、サーバーモードならユーザーのダウンタイムなしに実行ファイルを ホットリロードすることもできそう
    • cosmopolitan libc は本当に見事なトリックに近く、称賛に値するし実際のユースケースもあるだろうが、たいていの目的には実用的ではなさそう
      望むだけ多くのアーキテクチャと OS をサポートする、非常に太った ELF のような形式があったとして、私たちはそれを使っただろうか?たぶん使わなかったと思う
      ただ、zig cc をしばらく使ってみて、一度ビルドして超巨大な汎用バイナリを作るやり方も理にかなうかもしれないと思った。マイクロアーキテクチャ別ディスパッチも良い要素なので、使っているうちにむしろ自分で代替案に納得しつつある気がする
  • どんな画像をアップロードしても、きちんと見えていないようだ。それでもこの答えは笑えた
    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.

    • 真っ白な 50x50 PNG をアップロードしたところ、たいてい白い背景に小さな灰色の領域と右側のオレンジ色の点があると答えた
      白い四角形なのかと聞くと、単純な白い四角形ではなく、灰色や黄褐色もある抽象画のように見えると言った
  • Simon Willisonの関連記事がよい: https://simonwillison.net/2023/Nov/29/llamafile/

  • このモデルが幻覚を起こす様子が興味深い。Albert Bierstadtの「In the Mountains」(https://www.wikiart.org/en/albert-bierstadt/in-the-mountains...)を見せたところ、場面のあちこちに牛が散らばっていると主張し続けた
    牛はいないし、岩を牛と見間違えたのではないかと言っても違うと答え、再度「牛はいない」と言うと、その時になってようやく山と湖、木、鳥、船がある穏やかな情景として描写した

  • 関連資料: https://hacks.mozilla.org/2023/11/introducing-llamafile/ および https://twitter.com/justinetunney/status/1729940628098969799
    https://news.ycombinator.com/item?id=38463456https://news.ycombinator.com/item?id=38464759 からの流れだが、コメントはこちらに統合された

  • llama.cppGGUF形式モデルを、このように複数試している
    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もよさそう。llama互換モデルをすぐ使える塊として包む一般動詞としても使える

    • Llamanate
  • CosmopolitanでビルドしているのにCUDA対応があるとはすごい。今月、CosmopolitanがGPUを使えるようにするため、動的リンク対応を一部追加したようだ: https://github.com/jart/cosmopolitan/commit/5e8c928f1a37349a...
    残念ながらCUDA Developer Toolkitのインストールが必要。Nvidiaドライバーさえあれば別途依存関係なしで実行できるCUDAアプリの配布も完全に可能なので、ここまで解決できればゲームチェンジャーになりそう

  • 「ファイルをUSBメモリに入れて引き出しに保管しておけば、未来の終末に備える保険になる。もう二度と言語モデルなしで暮らすことはない」という文言が気に入った