catch-img

【Llama2】Macでの Llama.cppの使い方 | ローカル環境

この記事では、Macのローカル環境を使ってLlama.cppによるテキスト生成をする方法(推論)について紹介しています。


目次[非表示]

  1. 1.Llama2とは
  2. 2.Macのローカル環境Llama2を動かす(Llama.cpp)
  3. 3.LLama 2 のモデル一覧
  4. 4.実行環境
  5. 5.ビルドツールのインストール
  6. 6.Llama.cppのビルド
  7. 7.モデルのダウンロード
  8. 8.テキスト生成
    1. 8.1.プロンプトの実行
    2. 8.2.生成結果
    3. 8.3.日本語翻訳
  9. 9.生成AI・LLMならGPUクラウド
  10. 10.まとめ


Llama2とは

Llama2(ラマツー)とは、Facebookを運営するMeta社が開発した言語生成AI(LLM)で、OpenAI社のChatGPTに匹敵するの性能を持っています。


Llama2の特徴としては、軽量モデルで高性能、そして無料で使えるオープンソースであるため、開発者にとって扱いやすいモデルになっています。


Llama2の詳細については、以下の記事で解説しています。


  Llama2とは?使い方・日本語性能・商用利用について解説 | 初心者ガイド この記事では、Llama2について幅広く解説しています。Llama2の性能や安全性、商用利用、日本語対応、様々な環境での使い方などに触れています。 業界最安級GPUクラウド | GPUSOROBAN


Macのローカル環境Llama2を動かす(Llama.cpp)

Llama.cppはもともとMacBookでLlamaを実行することを目指して開発されたランタイムです。

Macの環境では、主にM1チップを利用して、4bit量子化されたLlama2モデルを実行することが可能です。

この記事では、Llama.cppについて解説しています。


Llama.cppはC言語で書かれていますが、Pythonで使えるllama-cpp-pythonもあります。

llama-cpp-pythonについて詳しく知りたい方は下記の記事をご覧ください。


  【Llama2】Macでの llama-cpp-pythonの使い方 この記事では、Macのローカル環境を使ってLlama-cpp-pythonによるテキスト生成をする方法(推論)について紹介しています。 業界最安級GPUクラウド | GPUSOROBAN


LLama 2 のモデル一覧

「Llama.cpp」を利用するには、「Llama 2」モデルをGGUF形式に変換する必要があります。

HuggingFaceには、変換済みのモデルが公開されています。

Llama.cppの量子化モデルは、2bit~8bitまでたくさんのバリエーションがありますが、大半のモデルは低品質になりますので推奨されていません。

HiggingFaceで推奨されているモデルは以下の通りです。

量子化メソッドの[Q4_K_M]、[Q5_K_S]、[Q5_K_M]が推奨されています。


model_id

メモリ(RAM)の使用量※

ストレージの使用量

量子化メソッド

量子化bit

llama-2-7b-chat.Q4_K_M.gguf

6.58 GB

4.08GB

Q4_K_M

4bit

llama-2-7b-chat.Q5_K_S.gguf

7.15 GB

4.65GB

Q5_K_S

5bit

llama-2-7b-chat.Q5_K_M.gguf

7.28 GB

4.78GB

Q5_K_M

5bit

llama-2-13b-chat.Q4_K_M.gguf

10.37 GB

7.87 GB

Q4_K_M

4bit

llama-2-13b-chat.Q5_K_S.gguf

11.47 GB

8.97 GB

Q5_K_S

5bit

llama-2-13b-chat.Q5_K_M.gguf

11.73 GB

9.23 GB

Q5_K_M

5bit

llama-2-70b-chat.Q4_K_M.gguf

43.92 GB

41.42 GB

Q4_K_M

4bit

llama-2-70b-chat.Q5_K_S.gguf

33.07 GB

30.57 GB

Q5_K_S

5bit

llama-2-70b-chat.Q5_K_M.gguf

51.25 GB

48.75 GB

Q5_K_M

5bit


※メモリ(RAM)の使用量には、GPUオフロードが含まれていません。GPUを使用する場合は、RAMの使用量が減り、代わりにGPUメモリ(VRAM)が使用されます。

※Llama.cppで扱えるモデル形式は過去GGMLが使われていましたが、現在はGGUFが使われています。



実行環境

この記事では以下のスペックのMacBookを使用しました。

  • MacBook Pro
  • チップ Apple M1 Pro
  • メモリ 16GB


ビルドツールのインストール

Llama.cppはソースコードからビルドして利用する必要がありますので、ビルドツールのインストールから行います。

まだインストールしていない場合はHomebrewをインストールします。

ターミナルを開き、次のコマンドをコピペしてEnterを押すとインストールが実行されます。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

llama-cpp-mac


ターミナルで次のコマンドを実行し、Homebrewのパスを通します。

export PATH="$PATH:/opt/homebrew/bin/"

llama-cpp-mac


インストール完了およびPATHが通っているか確認します。

brew --version

llama-cpp-mac


必要なパッケージをインストールします。

brew install wget git cmake


Xcodeをインストールします。

xcode-select --install


Llama.cppのビルド

ターミナルで次のコマンドを実行し、llama.cppのリポジトリのクローンを作成します。

git clone https://github.com/ggerganov/llama.cpp


llama.cppフォルダに移動します

cd llama.cpp


ビルドします。

make


モデルのダウンロード

HuggingFaceのサイトにアクセスし、検索窓に[TheBloke/Llama-2]と入力すると、
TheBloke/Llama-2-(7b or 13b or 70b)-Chat-GGUFが表示されますので、[TheBloke/Llama-2-7b-Chat-GGUF ]を選択します。

*末尾がGGMLと書かれたものは古い形式になりますので、選ばないようにご注意ください。


  Hugging Face – The AI community building the future. We’re on a journey to advance and democratize artificial intelligence through open source and open science. https://huggingface.co


llama-cpp-mac


モデルのページに遷移したら、[Files and versions]のタブを開きます。

llama-cpp-mac


モデルの一覧が表示されますので、
ダウンロードする対象のモデルの[ダウンロード]アイコンにカーソルを合わせて、
右クリックで[リンクのアドレス]を選択し、コピーします。

llama-cpp-mac


モデルを格納するディレクトリに移動します。

cd ~/llama.cpp/models


先程コピーしたURLを使って、モデルをダウンロードします。

curl -O -L https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_K_M.gguf


※ダウンロードしたモデルのファイル名の末尾に[?download=true]が付いている場合はこの部分を除外する形でファイル名を変更してください。


テキスト生成

プロンプトの実行

新製品のキャッチフレーズを生成する推論を実行しました。

~/llama.cpp/main -ngl 32 -m ~/llama.cpp/models/llama-2-7b-chat.q4_K_M.gguf --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "[INST] <<SYS>>\nYour role is that of a copywriter.Please think of 10 catchphrases for your new product using the #keywords below as a reference.

#keyword:Soft drinks,Peach flavor,Slightly carbonated,Sweet and sour,refreshing,Summer only,Uses “Shimizu White Peach”,Limited to convenience stores.\n<</SYS>>\n{prompt}[/INST]"


生成結果

[INST] <<SYS>>\nYour role is that of a copywriter.Please think of 10 catchphrases for your new product using the #keywords below as a reference.

#keyword:Soft drinks,Peach flavor,Slightly carbonated,Sweet and sour,refreshing,Summer only,Uses “Shimizu White Peach”,Limited to convenience stores.\n<</SYS>>\n{prompt}[/INST]  Absolutely! Here are ten catchphrases for my new peach-flavored soft drink, incorporating the given keywords:

"Sip into summer with Shimizu White Peach - only at convenience stores!"
"A refreshing twist on classic flavors - Shimizu White Peach, limited to convenience stores!"
"Peachy keen and slightly carbonated - try Shimizu White Peach today!"
"Sweet and sour perfection in a can - Shimizu White Peach for the summer only at convenience stores!"
"Unlock your taste buds this summer with Shimizu White Peach - available exclusively at convenience stores!"
"Shimizu White Peach: The perfect companion for long, hot days and fun-filled nights."
"Give in to your cravings for something sweet and fruity - Shimizu White Peach is here, only at convenience stores!"
"A burst of peachy goodness in every can - Shimizu White Peach, the ultimate summer treat."
"Sip, relax, repeat with Shimizu White Peach - available exclusively at your local convenience store."
"Shimizu White Peach: The secret ingredient to making this summer one for the books!" [end of text]
llama_print_timings:        load time =    3732.54 ms
llama_print_timings:      sample time =      26.66 ms /   308 runs   (    0.09 ms per token, 11552.02 tokens per second)
llama_print_timings: prompt eval time =     636.61 ms /   109 tokens (    5.84 ms per token,   171.22 tokens per second)
llama_print_timings:        eval time =   11042.98 ms /   307 runs   (   35.97 ms per token,    27.80 tokens per second)
llama_print_timings:       total time =   11772.77 ms
ggml_metal_free: deallocating
Log end


日本語翻訳

[INST] <<SYS>>\n
あなたの役割はコピーライターです。以下のキーワードを参考に、新製品のために10のキャッチフレーズを考えてください。

#keyword:ソフトドリンク, ピーチフレーバー, わずかに炭酸, 甘酸っぱい, さわやか, 夏季限定, “清水ホワイトピーチ”使用, コンビニ限定。

\n<</SYS>>\n{prompt}[/INST]
 もちろん! 以下は、与えられたキーワードを取り入れた、新しいピーチ味のソフトドリンクのための10のキャッチフレーズです:

"清水ホワイトピーチで夏を楽しもう - コンビニでのみ入手可能!"
"クラシックな味にさわやかなアレンジ - 清水ホワイトピーチ、コンビニ限定!"
"ピーチの甘酸っぱさとわずかな炭酸 - 今すぐ清水ホワイトピーチを試してみて!"
"缶入りの甘酸っぱい完璧さ - 清水ホワイトピーチ、夏季限定、コンビニでのみ!"
"夏にはコンビニでのみ入手可能な清水ホワイトピーチで味覚を解き放とう!"
"清水ホワイトピーチ:長い暑い日と楽しい夜の理想の相棒。"
"甘くてフルーティーな欲望に身を任せる - 清水ホワイトピーチはここにあり、コンビニでのみ入手可能!"
"缶ごとのピーチの良さの爆発 - 清水ホワイトピーチ、究極の夏のご褒美。"
"清水ホワイトピーチで一口飲んで、リラックスして、繰り返そう - あなたの地元のコンビニでのみ入手可能。"
"清水ホワイトピーチ:今年の夏を特別なものにする秘密の成分!" 
 [end of text]


生成AI・LLMならGPUクラウド

Llama2やその他のLLMを使用する際には、モデルサイズやタスクに応じて必要なスペックが異なります。

LLMで使用されるGPUは高価なため、買い切りのオンプレミスよりも、コストパフォーマンスが高く柔軟な使い方ができるGPUクラウドをおすすめしています。


GPUクラウドのメリットは以下の通りです。

  • 必要なときだけ利用して、コストを最小限に抑えられる
  • タスクに応じてGPUサーバーを変更できる
  • 需要に応じてGPUサーバーを増減できる
  • 簡単に環境構築ができ、すぐに開発をスタートできる
  • 新しいGPUを利用できるため、陳腐化による買い替えが不要
  • GPUサーバーの高電力・熱管理が不要


コスパをお求めなら、メガクラウドと比較して50%以上安いGPUクラウドサービス「GPUSOROBAN」がおすすめです。


  生成AIに最適なGPUクラウド「高速コンピューティング」|GPUSOROBAN GPUSOROBANの高速コンピューティングは、NVIDIAの高速GPUが業界最安級で使えるクラウドサービスです。NVIDIA A100を始めする高速GPUにより、画像生成AI、大規模言語モデルLLM、機械学習、シミュレーションを高速化します。 業界最安級GPUクラウド | GPUSOROBAN


大規模なLLMを計算する場合は、NVIDIA H100のクラスタが使える「GPUSOROBAN AIスパコンクラウド」がおすすめです。


  LLMに最適なH100が業界最安級「AIスパコンクラウド」| GPUSOROBAN AIスパコンクラウドはNVIDIA H100を搭載したGPUインスタンスが業界最安級で使えるクラウドサービスです。HGX H100(H100 x8枚)を複数連結したクラスタ構成により、LLMやマルチモーダルAIの計算時間を短縮します。料金はAWSのH100インスタンスと比較して75%安く設定しており、大幅なコストダウンが可能です。 業界最安級GPUクラウド | GPUSOROBAN


まとめ

この記事では、Macのローカル環境でLlama.cppを用いて推論をする方法を紹介しました。

Llama2は無料で使えて商用利用可能な利便性の高いモデルでありながら、ChatGPTと同等以上の性能があります。

Llama2に関する詳細な情報は、以下の記事でまとめて紹介していますので、あわせてご覧ください。


  Llama2とは?使い方・日本語性能・商用利用について解説 | 初心者ガイド この記事では、Llama2について幅広く解説しています。Llama2の性能や安全性、商用利用、日本語対応、様々な環境での使い方などに触れています。 業界最安級GPUクラウド | GPUSOROBAN


MORE INFORMATION

GPUでお困りの方はGPUSOROBANで解決!
お気軽にご相談ください

10日間無料トライアル
詳しい資料はこちら
質問・相談はこちら