Apple Silicon MacでLLaMAを実行する方法
はじめに
AIリサーチを次のレベルに引き上げる準備はできていますか?Large Language Model Meta AI(LLaMA)がその答えです。AIの分野で研究者の研究を支援するために設計されたLLaMAは、研究利用に焦点を当てた非商用ライセンスの下でリリースされ、学術研究者、政府、市民社会、学術機関に所属する人々、そして世界中の産業研究所にアクセスを提供しています。この記事では、LLaMAの興味深い世界に飛び込み、M1 Macでの使用方法、特にllama.cppを使用してM1/M2 MacBook ProでLLaMA 7Bと13Bを実行することに焦点を当てて探っていきます。大規模言語モデルの可能性を解き放ち、あなたの研究を革新する準備を始めましょう!
では、MacBookProで実行する方法を見ていきましょう
LLaMAの実行
Georgi Gerganovと彼のllama.cppプロジェクトのおかげで、専用のGPUなしで単一のコンピュータでMetaのLLaMAを実行することが可能になりました。これは素晴らしいことです!
ステップ1 依存関係のインストール
C++プロジェクトを実行するにはXcode
をインストールする必要があります。まだの場合:
1 | xcode-select --install |
同時に、Brew
を使用してC++プロジェクトをビルドするための依存関係(pkgconfigとcmake)をインストールします。
1 | brew install pkgconfig cmake python@3.11 |
(オプション)Pythonの仮想環境をインストール
1 | pip3 install virtualenv |
Python仮想環境を作成
1 | virtualenv (プロジェクト名) |
仮想環境を有効化
1 | source bin/activate |
次に、PyTorch
(Nightlyバージョンを推奨)とその他のパッケージをインストール
1 | pip install --pre torch --extra-index-url https://download.pytorch.org/whl/nightly/cpu |
1 | pip install numpy sentencepiece |
(オプション)GPU用のMetal Performance Shaders (MPS) backendを試す
1 | Python 3.11.2 (main, Feb 16 2023, 02:55:59) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin |
ステップ2 プロジェクトのダウンロード
llama.cpp
🫡 リポジトリを取得:
1 | git clone https://github.com/ggerganov/llama.cpp |
make
を実行してC++コードをコンパイル:
1 | make |
ステップ3 LLaMAモデルのダウンロード
モデルを入手する2つの方法
- 公式フォーム:https://forms.gle/jk851eBVbX1m5TAv5
- GitHubからBitTorrent:https://github.com/facebookresearch/llama/pull/73
注意
GitHubからモデルをダウンロードする場合、ipfsリンクは使用せず、BitTorrentを使用してください。後でモデルを変換できなくなるのを防ぐためです。
モデルをダウンロードすると、構造は以下のようになります:
1 | . |
ステップ4 LLaMAモデル7Bの変換
llama.cppリポジトリのmodels/ディレクトリの下にモデルを配置します。
1 | python convert-pth-to-ggml.py models/7B 1 |
出力は以下のようになります:
1 | {'dim': 4096, 'multiple_of': 256, 'n_heads': 32, 'n_layers': 32, 'norm_eps': 1e-06, 'vocab_size': 32000} |
RuntimeError: PytorchStreamReader failed reading zip archive: not a ZIP archiveというエラーが発生した場合は、モデルと前述の注意事項を確認してください。
これによりmodels/7B/ggml-model-f16.bin
が生成されます - 別の13GBファイルです。
このスクリプトでモデルを4ビットに量子化します:
1 | ./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2 |
ステップ5 LLaMAモデル7Bの実行
1 | ./main -m ./models/7B/ggml-model-q4_0.bin \ |
出力例:
月に最初に降り立った人は1969年7月に38歳でした。ニール・アームストロングは、私の母の家族がサギノーとフリント/ベイシティの間の小さな農場に定住してからわずか1、2ヶ月後に生まれました。彼らはペンシルベニアから来ました(私たちのほとんどと同様に)。
今年後半の彼への追悼演説で - 2018年の最悪の政治的災害を経験しているにもかかわらず、通常以上に人々が語り合っていたことに反映された「偉大さ」をアームストロングに称えた中で - オバマは次のように述べました:「私は思いません…」
ステップ6 LLaMAモデル13Bの実行
13Bモデルをggml
に変換するには:
1 | python convert-pth-to-ggml.py models/13B/ 1 |
quantize
コマンドは各ファイルに対して順番に実行する必要があります:
1 | ./quantize ./models/13B/ggml-model-f16.bin ./models/13B/ggml-model-q4_0.bin 2 |
1 | ./main \ |
お楽しみください!
参考文献🙏🏻
1. https://dev.l1x.be/posts/2023/03/12/using-llama-with-m1-mac/
2. https://til.simonwillison.net/llms/llama-7b-m2