📕

M1/M2 MacのローカルでLLAMA2を動かしてみる(llama.cpp編)

2023/07/23に公開

はじめに

この記事はLLAMA2をとりあえずMacのローカル環境で動かしてみたい人向けのメモです。
話題のモデルがどんな感じかとりあえず試してみたい人向けです。

llama.cppのmetalで、ggml形式のモデルを使用します。

環境構築

環境確認

makeのインストール確認

makeがインストールされているか確認します。

make --version

ここでバージョンが出てこない場合はインストールされていないので、homebrewを使ってmakeをインストールしておいてください。

wgetのインストール確認

wgetがインストールされているか確認します。

wget --version

make同様、バージョンが出てこない場合はインストールしておいてください。

llama.cppの環境構築

llama.cppのビルドを行います。

llama.cppはビルドされていない状態でgithub上で展開されているため、自分でビルドする必要があります。以下の手順で実行してください。

# llama.cppプロジェクトのダウンロード
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# matalでビルド
LLAMA_METAL=1 make

モデルのダウンロード

modelsディレクトリにllama2のモデルをダウンロードします。
ggml化されたものが既に展開されているので、今回はこちらを利用します。

https://huggingface.co/TheBloke/Llama-2-7B-chat-GGML/

ダウンロードは以下のコマンドの通りwgetを使います。

cd models
wget "https://huggingface.co/TheBloke/Llama-2-7B-chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q4_0.bin"

モデルは容量が大きいためダウンロードが終わるまで少し待ちます。

llama.cppディレクトリに戻る

cd ..

モデルの起動

以下のコマンドを実行します。
コマンド実行後、入力待ちの状態になるためプロンプトを入力して実行してください。

echo "Prompt: " \
    && read PROMPT \
    && ./main \
        -t 8 \
        -ngl 1 \
        -m models/llama-2-7b-chat.ggmlv3.q4_0.bin \
        --color \
        -c 2048 \
        --temp 0.7 \
        --repeat_penalty 1.1 \
        -n -1 \
        -p "[INST] ${PROMPT} [/INST] "

回答サンプル

質問

who is doraemon?

回答

Doraemon is a popular Japanese manga and anime series created by Fujiko F. Unterscheidung. The series follows the adventures of a robotic cat named Doraemon, who is sent back in time from the 22nd century to help a young boy named Noby (or Nooby in some translations) solve problems and overcome challenges.
Doraemon has become a cultural icon in Japan and other countries around the world, particularly in Asia. The series was first published as a manga in 1969 and has since been adapted into numerous animated TV shows, movies, and video games.

中略

Overall, Doraemon is a beloved character and franchise that has captured the hearts of millions of people around the world, inspiring creativity, imagination, and fun for generations of fans. [end of text]

まとめ

いかがだったでしょうか?

今回は話題のllama2の使い方をまとめました。
日本語特化のモデルではないため、QAは英語になることが多いですが「日本語で答えて」など、プロンプトを工夫すると日本語で回答を返してくれるケースもあります。

Macのスペック持て余している方は是非今回の手順で使ってみてください!

私のTwitterではLLMに限らず、AIを活用した業務改善情報の発信をしておりますのでご興味のある方は是非フォローをお願いします。
https://twitter.com/Linus_lab

Discussion