上船跑模型之 MacBook 上运行 LLaMA 7B 和 13B 原始模型

本文目录

一、LLaMA 预训练模型下载

LLaMA 是什么?关于 LLaMA 的介绍,看这篇《Meta 推出开源 LLaMA,用 1/10 参数规模打败 GPT-3,群”模”乱舞的 2023 拉开序幕》

聊了 LLaMA 后,接下来,下载 LLaMA 模型文件,这里略去下载地址(网上很多,但普遍地址有效生命周期不长)。

─ models
 ├── 7B
 │   ├── checklist.chk
 │   ├── consolidated.00.pth
 │   └── params.json
 ├── 13B
 │   ├── checklist.chk
 │   ├── consolidated.00.pth
 │   ├── consolidated.01.pth
 │   └── params.json
 ├── 30B
 │   ├── checklist.chk
 │   ├── consolidated.00.pth
 │   ├── consolidated.01.pth
 │   ├── consolidated.02.pth
 │   ├── consolidated.03.pth
 │   └── params.json
 ├── 65B
 │   ├── checklist.chk
 │   ├── consolidated.00.pth
 │   ├── consolidated.01.pth
 │   ├── consolidated.02.pth
 │   ├── consolidated.03.pth
 │   ├── consolidated.04.pth
 │   ├── consolidated.05.pth
 │   ├── consolidated.06.pth
 │   ├── consolidated.07.pth
 │   └── params.json
 └── tokenizer.model

因为文件太大,估计会出现多次断点续传,所以一定要校验下文件是否正确,正确与否与 checklist.chk 文件对比。比如:

mikecaptain@CVN % md5sum 7B/consolidated.00.pth
6efc8dab194ab59e49cd24be5574d85e

二、用 ggerganov/llama.cpp 运行

1、LLaMA 7B 版本

1.1、下载 LLaMA.cpp 项目

mikecaptain@CVN % git clone git@github.com:ggerganov/llama.cpp.git
mikecaptain@CVN % cd llama.cpp
mikecaptain@CVN % make

1.2、准备 llama 7B 环境

mikecaptain@CVN % conda install pytorch numpy sentencepiece 

The first script converts the model to “ggml FP16 format”:

mikecaptain@CVN % python convert-pth-to-ggml.py models/7B/ 1

这样会得到一个 13GB 的文件 models/7B/ggml-model-f16.bin,然后再运行脚本 quantize 用来把 models/7B/ggml-model-f16.bin 转为 4-bits 版本:

mikecaptain@CVN % ./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2

这样会生成一个 3.9GB 的 models/7B/ggml-model-q4_0.bin 文件。

1.3、运行 LLaMA 7B 模型

脚本 main 用于启动,使用刚得到的 models/7B/ggml-model-q4_0.bin 模型文件。

mikecaptain@CVN % ./main -m ./models/7B/ggml-model-q4_0.bin \
  -t 8 \
  -n 128 \
  -p 'The first man on the moon was '

可以看到续写的内容是:

The first man on the moon was 38-years old. Astronaut Neil Armstrong, at age 24, became a naval aviator flying fighter jets in World War II. He later flew for Pan American Airlines as a test pilot and flight engineer before he joined NASA’s Mercury space program. “Houston, Tranquillity Base here. The Eagle has landed.” Armstrong spoke those words on July 20, 1969, as the United States beat Russia in the Cold War race to put a man on the moon. [end of text]

可以用 ./main --help 来查看多有哪些参数可以设置。

2、LLaMA 13B 版本

2.1、准备 LLaMA 13B 环境

运行如下命令,生成文件 26.03GB 大小的 ggml-model-f16.bin

mikecaptain@CVN % python convert-pth-to-ggml.py models/13B/ 1

再运行如下命令,生成文件 8.14GB 大小的 ./models/13B/ggml-model-q4_0.bin

mikecaptain@CVN % ./quantize ./models/13B/ggml-model-f16.bin   ./models/13B/ggml-model-q4_0.bin 2

2.2、运行 LLaMA 13B 模型

mkkecaptain@CVN % ./main \
  -m ./models/13B/ggml-model-q4_0.bin \
  -t 8 \
  -n 128 \
  -p 'Some good pun names for a coffee shop run by beavers:
-'

参考