所有步骤来源:
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模型,并特别关注了中文语料库的处理和模型加速下载的方法。