検索
ホームページテクノロジー周辺機器AILeCun の好きなところ: Apple M1/M2 チップで LLaMA を実行! 130 億パラメータのモデルに必要なメモリはわずか 4GB

少し前、Meta がオープンソースの大規模言語モデル LLaMA をリリースした後、ネチズンはしきい値なしのダウンロード リンクを公開しましたが、それは「悲惨なことに」オープンでした。

このニュースが出るとすぐに、サークルはすぐに活気に満ち、皆がダウンロードしてテストし始めました。

しかし、トップレベルのグラフィックスカードを持っていない友人たちは、モデルを見てため息をつくことしかできません。

しかし、それは大きな問題ではありません。 Georgi Gerganov は最近、「llama.cpp」というプロジェクトを作成しました。LLaMA は GPU なしで実行できます。はい、これには Apple チップを搭載した Mac も含まれます。また、LeCun から転送サポートも受けました。

LeCun の好きなところ: Apple M1/M2 チップで LLaMA を実行! 130 億パラメータのモデルに必要なメモリはわずか 4GB

M1/M2 Mac で LLaMA を実行する 現在、それぞれ Apple の M1 プロセッサと M2 プロセッサに基づいた 2 つの比較的包括的なチュートリアルがあります。

LeCun の好きなところ: Apple M1/M2 チップで LLaMA を実行! 130 億パラメータのモデルに必要なメモリはわずか 4GB

最初の記事: https://dev.l1x.be/posts/2023/03/12/using-llama-with-m1-mac/

LeCun の好きなところ: Apple M1/M2 チップで LLaMA を実行! 130 億パラメータのモデルに必要なメモリはわずか 4GB

2 番目の記事: https://til.simonwillison.net/llms/llama-7b-m2

早速、最初に効果を見てみましょう。

たとえば、最小の 7B モデルで、「最初に月に着陸したのは誰ですか?」と尋ねます。 LeCun の好きなところ: Apple M1/M2 チップで LLaMA を実行! 130 億パラメータのモデルに必要なメモリはわずか 4GB

とても早く、数秒で結果が出ました。

-p 『最初に月に足を踏み入れた人類は』

初めて月に足を踏み入れた人類は、38歳の宇宙飛行士ニール・A・アームストロングでした。 1969年7月20日、アポロ11号は月面に着陸しました。

アポロ 11 号は、月面に着陸した最初の有人ミッションであり、宇宙開発競争のクライマックスでした。 1969 年 7 月、ニール アームストロングとエドウィン "バズ" アルドリンは人類で初めて月面に着陸しました。 アポロ11号は7月16日にケネディ宇宙センターから打ち上げられました。

アームストロングの年齢、ミドルネーム、月面着陸日には明らかな事実誤認はありません。これほど小さなモデルではこれは簡単ではありません。 LeCun の好きなところ: Apple M1/M2 チップで LLaMA を実行! 130 億パラメータのモデルに必要なメモリはわずか 4GB

次のヒントを使用すると、実用的な Python コードを生成できます。

-p 'def open_and_return_content(filename):'
def open_and_return_content(filename):
"""Opens file (returning the content) and performs basic sanity checks"""if os.path.isfile(filename):
with open(filename) as f:
content = f.read()
return contentelse:
print('WARNING: file "{}" does not exist'.format(filename), file=sys.stderr)
return ''def get_file_info(filename, fullpath):
"""Get file information (i.e., permission, owner, group, size)"""
接下来,我们就来看看具体是如何实现的。

ステップ 1: モデルをダウンロードします

最初に行うことは、LLaMA モデルをダウンロードすることです。

公式フォームを通じてメタに申請を送信することも、ネチズンが共有するリンクから直接申請を取得することもできます。

とにかく、完了すると、次のものの山が表示されます:

ご覧のとおり、異なるモデルが異なるフォルダーにあります。各モデルには、モデルに関する詳細を含む params.json があります。例:

ステップ 2: 依存関係をインストールする

首先,你需要安装Xcode来编译C++项目。

xcode-select --install

接下来,是构建C++项目的依赖项(pkgconfig和cmake)。

brew install pkgconfig cmake

在环境的配置上,假如你用的是Python 3.11,则可以创建一个虚拟环境:

/opt/homebrew/bin/python3.11 -m venv venv

然后激活venv。(如果是fish以外的shell,只要去掉.fish后缀即可)

. venv/bin/activate.fish

最后,安装Torch。

pip3 install --pre torch torchvision --extra-index-url https://download.pytorch.org/whl/nightly/cpu


如果你对利用新的Metal性能着色器(MPS)后端进行GPU训练加速感兴趣,可以通过运行以下程序来进行验证。但这不是在M1上运行LLaMA的必要条件。

python
Python 3.11.2 (main, Feb 16 2023, 02:55:59) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch; torch.backends.mps.is_available()True

第三步:编译LLaMA CPP

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

在安装完所有的依赖项后,你可以运行make:

make
I llama.cpp build info:
I UNAME_S:Darwin
I UNAME_P:arm
I UNAME_M:arm64
I CFLAGS: -I.-O3 -DNDEBUG -std=c11 -fPIC -pthread -DGGML_USE_ACCELERATE
I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread
I LDFLAGS: -framework Accelerate
I CC: Apple clang version 14.0.0 (clang-1400.0.29.202)I CXX:Apple clang version 14.0.0 (clang-1400.0.29.202)
cc-I.-O3 -DNDEBUG -std=c11 -fPIC -pthread -DGGML_USE_ACCELERATE -c ggml.c -o ggml.o
c++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread -c utils.cpp -o utils.o
c++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread main.cpp ggml.o utils.o -o main-framework Accelerate
./main -h
usage: ./main [options]
options:
-h, --helpshow this help message and exit
-s SEED, --seed SEEDRNG seed (default: -1)
-t N, --threads N number of threads to use during computation (default: 4)
-p PROMPT, --prompt PROMPT
prompt to start generation with (default: random)
-n N, --n_predict N number of tokens to predict (default: 128)
--top_k N top-k sampling (default: 40)
--top_p N top-p sampling (default: 0.9)
--temp Ntemperature (default: 0.8)
-b N, --batch_size Nbatch size for prompt processing (default: 8)
-m FNAME, --model FNAME
model path (default: models/llama-7B/ggml-model.bin)
c++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -pthread quantize.cpp ggml.o utils.o -o quantize-framework Accelerate

第四步:转换模型

假设你已经把模型放在llama.cpp repo中的models/下。

python convert-pth-to-ggml.py models/7B 1

那么,应该会看到像这样的输出:

{'dim': 4096, 'multiple_of': 256, 'n_heads': 32, 'n_layers': 32, 'norm_eps': 1e-06, 'vocab_size': 32000}n_parts =1Processing part0Processing variable: tok_embeddings.weight with shape:torch.Size([32000, 4096])and type:torch.float16
Processing variable: norm.weight with shape:torch.Size([4096])and type:torch.float16
Converting to float32
Processing variable: output.weight with shape:torch.Size([32000, 4096])and type:torch.float16
Processing variable: layers.0.attention.wq.weight with shape:torch.Size([4096, 4096])and type:torch.f
loat16
Processing variable: layers.0.attention.wk.weight with shape:torch.Size([4096, 4096])and type:torch.f
loat16
Processing variable: layers.0.attention.wv.weight with shape:torch.Size([4096, 4096])and type:torch.f
loat16
Processing variable: layers.0.attention.wo.weight with shape:torch.Size([4096, 4096])and type:torch.f
loat16
Processing variable: layers.0.feed_forward.w1.weight with shape:torch.Size([11008, 4096])and type:tor
ch.float16
Processing variable: layers.0.feed_forward.w2.weight with shape:torch.Size([4096, 11008])and type:tor
ch.float16
Processing variable: layers.0.feed_forward.w3.weight with shape:torch.Size([11008, 4096])and type:tor
ch.float16
Processing variable: layers.0.attention_norm.weight with shape:torch.Size([4096])and type:torch.float
16...
Done. Output file: models/7B/ggml-model-f16.bin, (part0 )

下一步将是进行量化处理:

./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2

输出如下:

llama_model_quantize: loading model from './models/7B/ggml-model-f16.bin'llama_model_quantize: n_vocab = 32000llama_model_quantize: n_ctx = 512llama_model_quantize: n_embd= 4096llama_model_quantize: n_mult= 256llama_model_quantize: n_head= 32llama_model_quantize: n_layer = 32llama_model_quantize: f16 = 1...
layers.31.attention_norm.weight - [ 4096, 1], type =f32 size =0.016 MB
layers.31.ffn_norm.weight - [ 4096, 1], type =f32 size =0.016 MB
llama_model_quantize: model size= 25705.02 MB
llama_model_quantize: quant size=4017.27 MB
llama_model_quantize: hist: 0.000 0.022 0.019 0.033 0.053 0.078 0.104 0.125 0.134 0.125 0.104 0.078 0.053 0.033 0.019 0.022


main: quantize time = 29389.45 ms
main:total time = 29389.45 ms

第五步:运行模型

./main -m ./models/7B/ggml-model-q4_0.bin 
-t 8 
-n 128 
-p 'The first president of the USA was '
main: seed = 1678615879llama_model_load: loading model from './models/7B/ggml-model-q4_0.bin' - please wait ...
llama_model_load: n_vocab = 32000llama_model_load: n_ctx = 512llama_model_load: n_embd= 4096llama_model_load: n_mult= 256llama_model_load: n_head= 32llama_model_load: n_layer = 32llama_model_load: n_rot = 128llama_model_load: f16 = 2llama_model_load: n_ff= 11008llama_model_load: n_parts = 1llama_model_load: ggml ctx size = 4529.34 MB
llama_model_load: memory_size = 512.00 MB, n_mem = 16384llama_model_load: loading model part 1/1 from './models/7B/ggml-model-q4_0.bin'llama_model_load: .................................... donellama_model_load: model size =4017.27 MB / num tensors = 291
main: prompt: 'The first president of the USA was 'main: number of tokens in prompt = 9 1 -> ''1576 -> 'The' 937 -> ' first'6673 -> ' president' 310 -> ' of' 278 -> ' the'8278 -> ' USA' 471 -> ' was' 29871 -> ' '
sampling parameters: temp = 0.800000, top_k = 40, top_p = 0.950000


The first president of the USA was 57 years old when he assumed office (George Washington). Nowadays, the US electorate expects the new president to be more young at heart. President Donald Trump was 70 years old when he was inaugurated. In contrast to his predecessors, he is physically fit, healthy and active. And his fitness has been a prominent theme of his presidency. During the presidential campaign, he famously said he
 would be the “most active president ever” — a statement Trump has not yet achieved, but one that fits his approach to the office. His tweets demonstrate his physical activity.


main: mem per token = 14434244 bytes
main: load time =1311.74 ms
main: sample time = 278.96 ms
main:predict time =7375.89 ms / 54.23 ms per token
main:total time =9216.61 ms

资源使用情况

第二位博主表示,在运行时,13B模型使用了大约4GB的内存,以及748%的CPU。(设定的就是让模型使用8个CPU核心)

没有指令微调

GPT-3和ChatGPT效果如此之好的关键原因之一是,它们都经过了指令微调,

这种额外的训练使它们有能力对人类的指令做出有效的反应。比如「总结一下这个」或「写一首关于水獭的诗」或「从这篇文章中提取要点」。

撰写教程的博主表示,据他观察,LLaMA并没有这样的能力。

也就是说,给LLaMA的提示需要采用经典的形式:「一些将由......完成的文本」。这也让提示工程变得更加困难。

举个例子,博主至今都还没有想出一个正确的提示,从而让LLaMA实现文本的总结。

以上がLeCun の好きなところ: Apple M1/M2 チップで LLaMA を実行! 130 億パラメータのモデルに必要なメモリはわずか 4GBの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
革新を調理する:人工知能がフードサービスを変革する方法革新を調理する:人工知能がフードサービスを変革する方法Apr 12, 2025 pm 12:09 PM

食品の準備を強化するAI まだ初期の使用中ですが、AIシステムは食品の準備にますます使用されています。 AI駆動型のロボットは、ハンバーガーの製造、SAの組み立てなど、食品の準備タスクを自動化するためにキッチンで使用されています

Pythonネームスペースと可変スコープに関する包括的なガイドPythonネームスペースと可変スコープに関する包括的なガイドApr 12, 2025 pm 12:00 PM

導入 Python関数における変数の名前空間、スコープ、および動作を理解することは、効率的に記述し、ランタイムエラーや例外を回避するために重要です。この記事では、さまざまなASPを掘り下げます

ビジョン言語モデル(VLM)の包括的なガイドビジョン言語モデル(VLM)の包括的なガイドApr 12, 2025 am 11:58 AM

導入 鮮やかな絵画や彫刻に囲まれたアートギャラリーを歩くことを想像してください。さて、各ピースに質問をして意味のある答えを得ることができたらどうでしょうか?あなたは尋ねるかもしれません、「あなたはどんな話を言っていますか?

MediaTekは、Kompanio UltraとDimenity 9400でプレミアムラインナップをブーストしますMediaTekは、Kompanio UltraとDimenity 9400でプレミアムラインナップをブーストしますApr 12, 2025 am 11:52 AM

製品のケイデンスを継続して、今月MediaTekは、新しいKompanio UltraやDimenity 9400を含む一連の発表を行いました。これらの製品は、スマートフォン用のチップを含むMediaTekのビジネスのより伝統的な部分を埋めます

今週のAIで:Walmartがファッションのトレンドを設定する前に設定します今週のAIで:Walmartがファッションのトレンドを設定する前に設定しますApr 12, 2025 am 11:51 AM

#1 GoogleはAgent2Agentを起動しました 物語:月曜日の朝です。 AI駆動のリクルーターとして、あなたはより賢く、難しくありません。携帯電話の会社のダッシュボードにログインします。それはあなたに3つの重要な役割が調達され、吟味され、予定されていることを伝えます

生成AIは精神障害に会います生成AIは精神障害に会いますApr 12, 2025 am 11:50 AM

私はあなたがそうであるに違いないと思います。 私たちは皆、精神障害がさまざまな心理学の用語を混ぜ合わせ、しばしば理解できないか完全に無意味であることが多い、さまざまなおしゃべりで構成されていることを知っているようです。 FOを吐き出すために必要なことはすべてです

プロトタイプ:科学者は紙をプラスチックに変えますプロトタイプ:科学者は紙をプラスチックに変えますApr 12, 2025 am 11:49 AM

今週公開された新しい研究によると、2022年に製造されたプラスチックの9.5%のみがリサイクル材料から作られていました。一方、プラスチックは埋め立て地や生態系に積み上げられ続けています。 しかし、助けが近づいています。エンジンのチーム

AIアナリストの台頭:これがAI革命で最も重要な仕事になる理由AIアナリストの台頭:これがAI革命で最も重要な仕事になる理由Apr 12, 2025 am 11:41 AM

主要なエンタープライズ分析プラットフォームAlteryxのCEOであるAndy Macmillanとの私の最近の会話は、AI革命におけるこの重要でありながら過小評価されている役割を強調しました。 MacMillanが説明するように、生のビジネスデータとAI-Ready情報のギャップ

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン