所有步骤来源:
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}}%
下载成功!
完美收尾!