From 1912afc9a6b030b6ebb12ff700e76037eba958cc Mon Sep 17 00:00:00 2001 From: znzjugod Date: Tue, 19 Dec 2023 07:35:34 +0000 Subject: [PATCH] update README.md. Signed-off-by: znzjugod --- README.md | 59 +++++++++++++++++++++++++++++++++++++--------------- chatglm.png | Bin 0 -> 33462 bytes 2 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 chatglm.png diff --git a/README.md b/README.md index fd38fd1..6279f92 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ -# llama.cpp使用指南 +# chatglm-cpp使用指南 ## 介绍 -llama.cpp是基于C/C++实现的LLama英文大模型接口,可以支持用户在消费者级别的CPU机器上完成开源大模型的部署和使用。 -llama.cpp支持多个英文开源大模型的部署,如LLaMa,LLaMa2,Vicuna等。 +chatglm-cpp是基于C/C++实现的ChatGLM大模型接口,可以支持用户在CPU机器上完成开源大模型的部署和使用。 + +chatglm-cpp支持多个中文开源大模型的部署,如ChatGLM-6B,ChatGLM2-6B,Baichuan-13B等。 ## 软件架构 -llama.cpp核心架构分为两层 +chatglm-cpp核心架构分为两层 - 模型量化层:可以量化开源模型,减少模型大小; - 模型启动层:可以启动量化后的模型。 @@ -16,7 +17,7 @@ llama.cpp核心架构分为两层 - 无需 GPU,可只用 CPU 运行。 ## 安装教程 -### 软硬件要求 +### 软硬件要求 处理器架构:支持AArch64和X86_64处理器架构; 操作系统:openEuler 23.09; @@ -24,29 +25,53 @@ llama.cpp核心架构分为两层 内存:根据不同开源模型的大小,不低于4G。 ### 安装组件 -使用llama.cpp部署大模型,需要安装llama.cpp软件包。安装前,请确保已经配置了openEuler yum源。 +使用chatglm-cpp部署大模型,需要安装chatglm-cpp软件包。安装前,请确保已经配置了openEuler yum源。 1. 安装: ``` -yum install llama.cpp +yum install chatglm-cpp ``` 2. 查看是否安装成功: ``` -/usr/bin/llama_cpp_main -h +chatglm_cpp_main -h ``` 若成功显示help信息则安装成功。 - ## 使用说明 -1. 需要下载量化后的开源大模型,如LLaMa、LLaMa2、Vicuna、GPT4All等。 -2. 启动模型,其中model_path为模型存放的路径:: +### 不使用容器 +1. 需要安装chatglm-cpp软件包: +``` +yum install chatglm-cpp +``` +2. 需要下载开源大模型,如ChatGLM-6B、ChatGLM2-6B等。并将下载的开源大模型通过chatglm_convert.py进行模型量化: +``` +python3 /usr/bin/chatglm_convert.py -i model_path/ -t q4_0 -o chatglm-ggml_1.bin +``` +其中model_path为开源大模型的存放路径,q4_0为开源大模型量化的精度,chatglm-ggml_1.bin是输出的量化模型的名称。 + +3. 启动模型,进行对话: ``` -/usr/bin/llama_cpp_main -m model_path --color --ctx_size 2048 -n -1 -ins -b 256 --top_k 10000 --temp 0.2 --repeat_penalty 1.1 -t 8 +chatglm_cpp_main -m model_path -i ``` +其中model_path为量化模型的存放路径。 + 可通过以下命令查看命令行选项用法: ``` -/usr/bin/llama_cpp_main -h +chatglm_cpp_main -h +``` +### 使用容器 +1. 拉取容器镜像: +``` +docker pull hub.oepkgs.net/openeuler/chatglm_image +``` +2. 运行容器镜像,进行对话: +``` +docker run -it --security-opt seccomp=unconfined hub.oepkgs.net/openeuler/chatglm_image ``` +### 正常启动界面 +模型启动后的界面如图1所示: +**图1** 模型启动界面 +![输入图片说明](chatglm.png) ## 规格说明 本项目可支持在CPU级别的机器上进行大模型的部署和推理,但是模型推理速度对硬件仍有一定的要求,硬件配置过低可能会导致推理速度过慢,降低使用效率。 @@ -56,9 +81,9 @@ yum install llama.cpp **表1** 模型推理速度的测试数据 -| LLama-7B | Q4_0 | Q4_1 | Q5_0 | Q5_1 | +| ChatGLM-6B | Q4_0 | Q4_1 | Q5_0 | Q5_1 | |--------------------------------|------|------|------|------| -| ms/token (CPU @ Platinum 8260) | 55 | 54 | 76 | 83 | -| 模型大小 | 3.5G | 3.9G | 4.3G | 6.7G | -| 内存占用 | 3.9G | 4.2G | 4.5G | 5.0G | +| ms/token (CPU @ Platinum 8260) | 74 | 77 | 86 | 89 | +| 模型大小 | 3.3G | 3.7G | 4.0G | 4.4G | +| 内存占用 | 4.0G | 4.4G | 4.7G | 5.1G | diff --git a/chatglm.png b/chatglm.png new file mode 100644 index 0000000000000000000000000000000000000000..bad255b5fd2ade512d291cdd871c6f7f1262560a GIT binary patch literal 33462 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 literal 0 HcmV?d00001 -- Gitee