当前位置:AIGC资讯 > AIGC > 正文

小白mac下载chinese-llama-2-7b全过程!

所有步骤来源:
https://my.oschina.net/qyhstech/blog/11046186
只是小白第一次下记录,也为其他小白做个参考!

环境起步

​​​​​​​​用这个命令,然后你的base就会变成miaomiao,

然后你在miaomiao里面干的所有事情都不会影响你电脑的配置,

在关联上llama项目,就可以让你的项目用你的miaomiao环境。

点红色框出现终端选项。

下载超时:再次尝试重复命令

llama-cpp-python还是超时:
这个错误表明在通过 pip 下载包时,由于网络连接不稳定或下载速度过慢,导致连接超时。这种情况在网络状况不佳或连接到远程服务器时可能会发生。以下是几种可能的解决方案:

使用镜像源
尝试使用国内镜像源来加速下载,例如阿里云、清华大学等:

bash


pip install transformers==4.31.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/

llama.cpp 模拟

git clone

(miaomiao) consingliu@localhost ~ % git clone https://github.com/ggerganov/llama.cpp

结果:

致命错误:无法访问 ‘https://github.com/ggerganov/llama.cpp/’:Error in the HTTP2 framing layer

搜了一下,说ping一下:

ping github.com

ping得差不多了用Control+C打断。

git clone完成

make


这个错误提示表示 make 命令在当前目录下没有找到 Makefile 文件,也没有指定目标。以下是一些可能的原因和解决方法:

检查当前目录
确保您在执行 make 命令时所在的目录中包含 Makefile 文件。可以使用以下命令检查当前目录的内容:

ls

如果您没有看到 Makefile 文件,可能您需要进入正确的目录。例如:

cd path/to/project

我的当前检查完之后在Jupyter内部,所以用:

cd llama.cpp

再输入make,成功。

NOTICE: The 'main' binary is deprecated. Please use 'llama-cli' instead.
c++ -std=c++11 -fPIC -O3 -g -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -Wmissing-declarations -Wmissing-noreturn -pthread   -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes -Wextra-semi -Iggml/include -Iggml/src -Iinclude -Isrc -Icommon -D_XOPEN_SOURCE=600 -D_DARWIN_C_SOURCE -DNDEBUG -DGGML_USE_ACCELERATE -DGGML_USE_BLAS -DACCELERATE_NEW_LAPACK -DACCELERATE_LAPACK_ILP64 -DGGML_USE_LLAMAFILE -DGGML_USE_METAL -DGGML_METAL_EMBED_LIBRARY  examples/deprecation-warning/deprecation-warning.o -o server -framework Accelerate -framework Foundation -framework Metal -framework MetalKit 
NOTICE: The 'server' binary is deprecated. Please use 'llama-server' instead.

这是make最后出现的提示,这个信息提示您正在使用的二进制文件(如 main 和 server)已被弃用,并建议您改用新的二进制文件(llama-cli 和 llama-server)。这通常是开发者对工具进行更新时,逐渐淘汰旧版命令的通知。

LLAMA_METAL=1 make

结果同上,也是一样的提示,正确运行。

下载模型

如果要使用中文语料库,需要先合并为原始模型和中文的模型,再生成 bin,再去转换为 gguf 格式。喜欢折腾的可以试试。

如果要使用我这个中文混合模型,可以直接下载 gguf 格式。下面这几步都不用了。省事多了。

下载地址:https://huggingface.co/hfl/chinese-llama-2-7b-gguf/tree/main 记得选 ggml-model-q4_0.gguf 这个模型。(我选的就是这个模型)

下载加速方法

我当天下载是七夕,不知道电脑是不是跟别人跑了,反正4gb下得特别慢,要一两天。
以下有两种加速方法。我最后面用的还是wget。这两种方法都是下载下着如果出问题了,下次下载还会继续从之前下好的位置开始,不需要再重新下。
这里多说一句,不知道是七夕电脑和别人跑了还是什么,就算用这两种方法加速当天还是特别慢,和浏览器直接下没什么区别,过了七夕第二天就好多了的样子。

raia2c

下载:sudo apt-get install aria2 或者brew install aria2 (brew官网下载不了的我在“如果你不幸买了mac”里面说了下载方法)

aria2c --max-download-limit=2M https://huggingface.co/hfl/chinese-llama-2-7b-gguf/resolve/main/ggml-model-q4_0.gguf

wget

下载:brew install wget

wget --no-cookie --no-check-certificate https://huggingface.co/hfl/chinese-llama-2-7b-gguf/resolve/main/ggml-model-q4_0.gguf

… 失败:Network is unreachable。
这时候连接失败开vpn增强模式!(我自己点得去发现的)
开始下载!

七夕让电脑一个晚上都在下,结果起来看见电脑:

ggml-model-q4_0.ggu   0%[                    ]   5.16M  --.-KB/s  用时 4m 52s  

2024-08-11 00:12:25 (18.1 KB/s) - 在 5412471 字节处连接关闭。重试中。

我又输入了一遍下载命令:wget --no-cookie --no-check-certificate https://huggingface.co/hfl/chinese-llama-2-7b-gguf/resolve/main/ggml-model-q4_0.gguf,十分钟马上下好了,可能昨晚它自己也下了比较多吧。

以 WebServer 形式启动

因为第一次下模型,不知道这些怎么用,所以就试着,报错了再给gpt告诉我怎么解决。

(miaomiao) consingliu@localhost ~ % ./server -h
#运行结果:zsh: no such file or directory: ./server

使用ls命令列出当前目录的所有文件:
发现都是jupyter里面的文件。
在电脑里搜索server:

点开server,出现以下终端内容。

里面有server的路径,我们选取它的上级路径,以此cd。

(miaomiao) consingliu@localhost ~ % cd /Users/consingliu/llama.cpp
(miaomiao) consingliu@localhost llama.cpp %

输入server

(miaomiao) consingliu@localhost llama.cpp % ./server -h
运行结果:WARNING: The binary 'server' is deprecated.
 Please use 'llama-server' instead.
 See https://github.com/ggerganov/llama.cpp/tree/master/examples/deprecation-warning/README.md for more information.

你已经进入了 llama.cpp 目录并尝试运行了 ./server -h,但系统提示这个文件已经被弃用,并建议使用 llama-server 代替。
上述代码替换:

./llama-server --host 0.0.0.0 -m /Users/consingliu/llama.cpp/ggml-model-q4_0.gguf.1  -c 4096 --n-gpu-layers 1

这里注意:必须在你自己设置的环境里面弄,我的前面就是miaomiao,我忘记调成miaomiao就失败了一次,后面立刻换成miaomiao就好了。

运行成功!
注意这里运行成功就是不会截止然后再出现命令行的,这里就是告诉你正在运行!

有人就要问了,运行成功去哪里了呢?
这个模型已经成功加载并运行了一个HTTP服务器,监听在 0.0.0.0:8080 端口。这意味着你可以通过Web浏览器或者其他客户端(例如Postman)访问这个模型,进行交互。
使用Web浏览器
打开Web浏览器:在你的计算机上打开一个Web浏览器(如Chrome、Firefox、Safari等)。

访问HTTP服务器:

在浏览器的地址栏中输入 http://localhost:8080 然后按回车。
如果你的模型提供了一个Web界面,它应该会在这里显示。

我输入就是如下界面:

用 CURL 进行测试

终于到调用模型了!
因为我们现在这个终端窗口正在运行,
我们打开另一个新的终端,在当前终端窗口,用command+shift+n,打开新终端(有时候时如下图的输入新命令,那把代码放到新命令栏就可以了),输入:

curl --request POST \
    --url http://127.0.0.1:8080/completion \
    --header "Content-Type: application/json" \
    --data '{"prompt": "给我讲个冷笑话:","n_predict": 128}'

最终结果:

(base) consingliu@localhost ~ % curl --request POST \
    --url http://127.0.0.1:8080/completion \
    --header "Content-Type: application/json" \
    --data '{"prompt": "给我讲个冷笑话:","n_predict": 128}'


{"content":"你有一块砖头,放在地上,别人走过了,你把它拿走了,那叫偷,放在地上,别人又走过了,
你把它拿走了,那叫偷,放在地上,别人又走过了,你把它拿走了,那叫偷,放在地上,别人又走过了,你把
它拿走了,那叫捡... 搞笑段子:我:女朋友,你太漂亮了,我好想娶你。不说了,我要去洗个澡了! 女
朋友:为什么呀?我:我怕我的身体不干净。女朋友:什么不干净,你没看到我身上","id_slot":0,"stop":true,"model":"/Users/consingliu/llama.cpp/ggml-model-
q4_0.gguf.1","tokens_predicted":128,"tokens_evaluated":8,"generation_settings":
{"n_ctx":4096,"n_predict":-1,"model":"/Users/consingliu/llama.cpp/ggml-model-
q4_0.gguf.1","seed":4294967295,"temperature":0.800000011920929,"dynatemp_range":
0.0,"dynatemp_exponent":1.0,"top_k":40,"top_p":0.949999988079071,"min_p":0.05000
000074505806,"tfs_z":1.0,"typical_p":1.0,"repeat_last_n":64,"repeat_penalty":1.0
,"presence_penalty":0.0,"frequency_penalty":0.0,"penalty_prompt_tokens":
[],"use_penalty_prompt_tokens":false,"mirostat":0,"mirostat_tau":5.0,"mirostat_e
ta":0.10000000149011612,"penalize_nl":false,"stop":
[],"n_keep":0,"n_discard":0,"ignore_eos":false,"stream":false,"logit_bias":
[],"n_probs":0,"min_keep":0,"grammar":"","samplers":
["top_k","tfs_z","typical_p","top_p","min_p","temperature"]},"prompt":"给我讲个冷
话:","truncated":false,"stopped_eos":false,"stopped_word":false,"stopped_limit":t
rue,"stopping_word":"","tokens_cached":135,"timings":
{"prompt_n":8,"prompt_ms":535.136,"prompt_per_token_ms":66.892,"prompt_per_secon
d":14.94947078873408,"predicted_n":128,"predicted_ms":10220.302,"predicted_per_t
oken_ms":79.846109375,"predicted_per_second":12.524091753844456}}%

下载成功!
完美收尾!

总结

### 文章总结
本文详细记录了如何在本地环境中搭建并运行基于`llama.cpp`的LLaMA模型,特别是针对中文语料库的处理和模型部署。以下是主要步骤的总结:
#### 1. 环境准备
- 使用虚拟环境(如`miaomiao`)来隔离项目依赖,避免影响系统配置。
- 遇到`pip`下载超时问题时,推荐使用国内镜像源(如清华大学)加速下载。
#### 2. `llama.cpp`项目克隆与编译
- 通过`git clone`命令从GitHub下载`llama.cpp`项目。
- 使用`make`命令编译项目,注意检查当前目录下是否存在`Makefile`文件。
- 编译过程中可能会遇到关于二进制文件弃用的提示,建议使用新的二进制文件(如`llama-cli`和`llama-server`)。
#### 3. 模型下载
- 提供了中文混合模型的下载地址(Hugging Face),并建议使用`gguf`格式的模型文件。
- 介绍了两种下载加速方法:`aria2c`和`wget`,并详细说明了安装和使用方法。
#### 4. 模型部署与测试
- 以WebServer形式启动模型,使用`llama-server`命令并指定模型文件路径。
- 通过Web浏览器访问`http://localhost:8080`来测试模型是否成功运行。
- 使用`curl`命令通过HTTP POST请求测试模型的文本生成功能,并展示了请求和响应的示例。
#### 5. 注意事项
- 强调了环境(如`miaomiao`)的重要性,确保在正确的环境中运行命令。
- 提到了模型文件路径和端口号等配置信息的正确性。
- 提供了解决编译和下载过程中可能遇到问题的具体方法。
### 结论
本文为初学者提供了从环境搭建到模型部署的详细步骤,帮助读者成功运行基于`llama.cpp`的LLaMA模型,并特别关注了中文语料库的处理和模型加速下载的方法。

更新时间 2024-09-15