2 ポイント 投稿者 GN⁺ 2023-11-30 | 1件のコメント | WhatsAppで共有

llamafile プロジェクト概要

  • AI開発者がどこでもビルドして実行できるという夢を実現するために、llama.cpp と Cosmopolitan Libc を組み合わせたフレームワークを開発
  • llamafile はさまざまな CPU マイクロアーキテクチャおよび CPU アーキテクチャで実行可能で、複数のオペレーティングシステムで単一ビルドによるコード実行をサポート
  • LLM の重みを llamafile 内に含め、直接メモリマッピングすることで高速に実行可能

バイナリの使い方

  • Hugging Face からダウンロード可能な複数モデルのサンプルバイナリを提供
  • コマンドラインバイナリは llama.cpp の main 関数を手動で呼び出すのと同じように実行
  • サーバーバイナリはローカル Web サーバーを起動し、Web ベースのチャットボットを提供

注意事項

  • macOS で Apple Silicon を使用する場合は Xcode のインストールが必要
  • Windows ではファイル名を llamafile.exe に変更しないと実行不可
  • zsh、Python subprocess、Fish などで実行時の問題が発生する場合は、代替コマンドの使用を推奨
  • Linux で binfmt_misc の問題が発生した場合の対処方法を提供

GPU サポート

  • Apple Silicon では Xcode をインストールすると自動的に動作
  • Linux では Nvidia cuBLAS の GPU サポートのためにコンパイラのインストールとフラグ設定が必要
  • Windows では MSVC x64 ネイティブ コマンド プロンプトで初回実行後、CUDA パスの設定が必要

ソースコードのビルド方法

  • cosmocc ツールチェーンを使って llamafile のソースコードをビルドする方法を案内
  • libc 関数のコード生成および HTTP サーバー実行の例を提供

zipalign ドキュメント

  • PKZIP アーカイブに整列済みの非圧縮ファイルを追加するための zipalign ツールの使い方を説明
  • 既存の ZIP アーカイブツールより高速に実行でき、メモリ整列要件も満たす

技術的な詳細

  • llamafile はシェルスクリプトと重みを結合し、高速実行を可能にする mmap() 機能を活用
  • ZIP への重みの内包、マイクロアーキテクチャおよびアーキテクチャ移植性、GPU サポートに関する技術的解決策を提示

ライセンス

  • llamafile プロジェクトは Apache 2.0 ライセンスを採用し、llama.cpp への変更部分には MIT ライセンスを適用

既知の問題

  • 64ビット Windows では 4GB のファイルサイズ制限があるため、重みは別ファイルとして使用する必要あり

GN⁺の意見

この記事で最も重要なのは、AI開発者がどこでも簡単に LLM をビルドして実行できるようにする llamafile プロジェクトの革新的なアプローチであること。 このプロジェクトは多様なプラットフォームとアーキテクチャでの互換性を提供し、重みを含む単一ファイルとして配布することで利用の利便性を大きく向上させている。 こうした技術的進歩は AI 研究と開発をさらに加速させる可能性があり、この分野に関心のある人にとって非常に興味深い内容である。

1件のコメント

 
GN⁺ 2023-11-30
Hacker Newsの意見
  • LLaVAモデルの使い方

    • macOSでLLaVAモデルを試す最良の方法は、テキストと画像を組み合わせたモデル(GPT-4 Visionに類似)を使うこと。
    • macOSで実行する方法を手順ごとに説明しており、他のプラットフォームでも同様に動作すると見込まれる(まだ試してはいない)。
      1. Hugging Faceから4.26GBのllamafile-server-0.1-llava-v1.5-7b-q4ファイルをダウンロード
      2. ターミナルで実行権限を付与
      3. 実行ファイルを起動して8080ポートでWebサーバーを開始
      4. ブラウザでhttp://127.0.0.1:8080/にアクセスし、画像をアップロードしてモデルとの対話を開始
  • macOSアプリ開発経験の共有

    • Justine Tunney / jartの卓越した移植性の仕事への感嘆とともに、開発者は自身のmacOSアプリでllama.cppをSwiftUIフロントエンドと一緒に動かしている。
    • アプリの最初のバージョンでは、単一ダウンロード後にチャットの流れとネットワーク接続を行わないことに注力した。
    • モデルをアプリにバンドルして配布し、ダウンロード後すぐ使えるようにしていたが、UIアップデートを配布するたびにユーザーが3GBを再ダウンロードしなければならない問題が発生した。
    • ユーザーの不満を受け、デフォルトモデルのダウンロードとUIを分離し、アプリ更新時には約5MBだけを配布するよう変更した。
    • このツールを使う人たちがllama.cppの更新を望むとき、同様の問題に直面すると予想しており、こうした問題が重要でないケースがあるのか気になっている。
  • Simon Willisonの関連ポストの推薦

    • Simon Willisonの関連ポストへの推薦リンクを共有。
  • 関連リンクの共有

    • Mozillaのllamafile紹介とJustine Tunneyのツイートへのリンクを共有。
  • Llaminateという名前の提案

    • Llama互換モデルを、利用準備の整ったblobとしてラップする一般的な作業の名前として「Llaminate」を提案。
  • Cosmopolitanを使ったCUDA対応への感嘆

    • Cosmopolitanが今月、GPUを有効にするための動的リンク対応を追加したことに感嘆。
    • CUDA開発者ツールキットのインストールは必要だが、Nvidiaドライバー以外に別個の依存関係なしでCUDAアプリを配布できる可能性に興味を示している。
  • Windowsでの実行ファイルサイズ制限への言及

    • Windows 10 64ビットシステムで4GBの実行ファイルが問題なく動作した経験を共有。
  • llama.cppでさまざまなモデルを試す方法の共有

    • GitHubからllama.cppをクローンし、必要なモデルをダウンロードしてサーバーを実行する方法を、コードとともに共有。
  • 単一モデルと単一の重みでしか動かないバイナリの制限性の指摘

    • 1つのモデルと1組の重みセットだけを実行するバイナリの制限性について意見を述べている。
  • Justineの驚異的なプロジェクト創出速度への言及

    • Justineが驚くべき速さで驚くべきプロジェクトを生み出していることへの言及。