🧙‍♂️

llama.cppでGGUFモデルを動かす方法(M1 Mac Book Air)

に公開

手持ちのM1 MacBook Air(8GB RAM、GPUアリ)でLLMを動かせないかと思っていたのですが、多分これが一番簡単っていう方法を見つけました。

手順自体は簡単なんですが、なんやかんや2時間くらい格闘したので、これで動いたっていう方法を残しておきます。

llama.cppをクローン

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

llama.cppをビルド

cmakeがない場合はbrew install cmakeでインストールしてください。

cmake -B build
cmake --build build --config Release

モデルをダウンロード

Hugging FaceのGGUFタグからGGUFモデルを探します

使いたいモデルを決めたら、モデルの詳細ページの右サイドのGGUFセクションで、適当なバージョンをクリックしダウンロード

ダウンロード先は適当なディレクトリで大丈夫です(llama.cppの外でもOK)。

llama-cliでテキスト生成

これで準備は完了です。
llama.cppに内蔵されているllama-cliというプログラムで簡単に実行できます。

// llama.cppディレクトリ直下で
build/bin/llama-cli -m [さっきダウンロードしたモデルのファイルパス] -p "東京といえば"

(チュートリアルだと、llama.cppディレクトリ直下でllama-cliと打つとllama-cliが呼び出せる風に書いてるところが多いのですが、私の環境の場合実行ファイルを指定しないとだめでした。)

おまけ

TheBloke/Mistral-7B-Instruct-v0.2-GGUFの4-bitモデル(Q4_K_M、4.37GB)を動かしてみたらこんな感じでした。

> hi

Hello! How can I help you today? If you have any questions or topics you'd like to discuss, feel free to ask. I'm here to provide information and answer any queries you may have to the best of my ability. Let me know if you need help with anything specific.

> Why is pikachu yellow

 Pikachu, the iconic electric mouse Pokémon, is yellow primarily for distinguishing it visually from other Pokémon in the Pokémon franchise. The creators of Pokémon, Satoshi Tajiri and Atsuko Nishida, chose the yellow color for Pikachu to make it more eye-catching and memorable. Additionally, the yellow color represents electricity, which is a key aspect of Pikachu's character. In the anime and manga series, it is revealed that Pikachu's electric sacs generate electricity, which is stored and released in flashes to defend itself or to power its moves.

> 東京といえば何が有名?

 東京(トーキョウ)は日本の最大の都市之一で、世界的に有名な地点や観光スポットが多数存在しています。以下は一部著名なものを簡潔に紹介します:

1. 東京スκッイプスquare (Tokyo Skytree): 東京最高の地点之一。スキープスの上で見ると、都会の大きな景色が拝見できます。日本最高の電波塔です。
2. 浅草寺 (Sensō-ji): 東京の古代寺坊で、一時間を取って訪れることをお勧めします。浅草寺は、日本の文化と人々の心の中に深刻に根ぎ入ります。
3. 浅草街 (Shibuya): 世界上最凝集している交通線である、浅草駅前は浅草街の中心です。ショッピングや食べるといった遊ぶ機会が多い場所です。
4. 渋谷スクエア (Shibuya Square): 大型ショッピングモールと映画館が集まっています。浅草駅と接続しているため、遊ぶ場所は多くなっています。
5. アスカヒル (Askahi Hill): 東京都内にある、大きな公園です。浅草駅から徒歩20分程度で訪れることができます。アスカヒルの上では、東京市議会のビルや、浅草の歴史を見ることができます。
6. 品川 (Shibuya): 新幹線でアクセスが良い、大型ショッピングセンターが多い地域です。浅草と比べて、もっと沿っている負けないビジネス地域です。
7. アリカタさかura (Odaiba): 東京湾にある、人気のある遊ぶ地域です。デンタルプレックス、ストア、レストラン、アミューズメントパーク、ミュージアムなど、多数存在しています。
8. 広島地区 (Hiroshima): 東京から簡単に行ける日本の古い市です。広島は、二世大戦中、原爆が落ちている地域です。この歴史の観光地や、文化を感じることができます。

これらは東京に関する一部著名な地点ですが、都市内にはより多くの場所があります。東京を訪れる場合、これらの地点を訪れることはお勧めです。

日本語はちょっと苦手だけど全然会話できててびっくり(浅草へのこだわりがすごい)。

ど素人のイメージではLLMって起動させるにも数分とかかかるのかなと思ってたのですが、数秒で起動と最初の回答の出力までしてもらえて拍子抜けでした。

8GB RAMでGPU使用だと6GBくらいのLLMモデルまではいけるらしく、このモデル(4.37GB)はサクサク軽快に動きました。(ただし回答中はGPUを持っていかれるらしく他のアプリが激重になるので他の作業はできないかも)

MacBook Airでも結構高性能なLLMが動かせるということがわかってよかったです。
これで遊びまくれる!🥳✨

参考

https://github.com/ggml-org/llama.cpp
Achieve State-of-the-Art LLM Inference (Llama 3) with llama.cpp

Discussion