Skip to content

Latest commit

 

History

History
139 lines (88 loc) · 4.26 KB

README_zh.md

File metadata and controls

139 lines (88 loc) · 4.26 KB

ChatLLM.cpp

English

License: MIT

在计算机(CPU)上实时聊天,可 检索增强生成 。支持从不到 1B 到超过 300B 的一系列模型的推理。基于 @ggerganovggml,纯 C++ 实现。

| 支持的模型 | 下载量化模型 |

特点

  • 内存高效、加速 CPU 推理:使用 int4/int8 量化、优化的 KV 缓存和并行计算。

  • 面向对象编程:关注基于 Transformer 的模型之间的相似性。

  • 流式生成:打字机效果。

  • 连续聊天:内容长度几乎无限。

    有两种方法可用:restartShift。请参阅 --extending 选项。

  • 检索增强生成(RAG) 🔥

  • LoRA

  • Python/JavaScript/C 绑定,网页演示,以及更多可能性。

快速开始

只需要简单一行 python chatllm.py -i -m :model_id. 查看 详情.

使用方法

准备工作

将 ChatLLM.cpp 存储库克隆到本地计算机:

git clone --recursive https://github.com/foldl/chatllm.cpp.git && cd chatllm.cpp

如果在克隆存储库时忘记了 --recursive 标志,请在 chatllm.cpp 文件夹中运行以下命令:

git submodule update --init --recursive

量化模型

工具可按需自动下载部分量化模型。

convert.py 安装依赖:

pip install -r requirements.txt

使用 convert.py 将模型转换为量化的 GGML 格式。例如,要将某个模型转换为 q8_0(int8 量化)GGML 模型,请运行以下命令:

# 对于 ChatLLM-6B, ChatLLM2-6B, InternLM, LlaMA, LlaMA-2, Baichuan-2 等模型,使用以下命令转换
python3 convert.py -i path/to/model -t q8_0 -o quantized.bin

# 对于像 CodeLlaMA 等模型,模型的类型需要通过 `-a` 参数指定。
# `docs/models.md` 说明了这些模型需要的 `-a` 参数。
python3 convert.py -i path/to/model -t q8_0 -o quantized.bin -a CodeLlaMA

使用 -l 参数指定要合并的 LoRA 模型所在目录。例如:

python3 convert.py -i path/to/model -l path/to/lora/model -o quantized.bin

说明:大体上,仅支持 HF 格式(存在少量几种例外);生成的 .bin 文件格式不同于当前 llama.cpp 项目所使用的 GGUF。

编译

你可以使用以下几种方式编译本项目。

  • 使用 make:

    Windows 使用 make 需要的准备工作:

    1. 下载最新版本的 w64devkit
    2. w64devkit 解压;
    3. 运行 w64devkit.exe,然后 cdchatllm.cpp 所在目录。
    make

    可执行程序为 ./obj/main

  • 使用 CMake 编译项目:

    cmake -B build
    # 在 Linux 或 WSL 上:
    cmake --build build -j
    # 在 Windows 上使用 MSVC:
    cmake --build build -j --config Release

    可执行程序为 ./build/obj/main

运行

现在,您可以通过以下方式与量化模型进行对话:

./build/bin/main -m chatglm-ggml.bin                            # ChatGLM-6B
# 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
./build/bin/main -m llama2.bin  --seed 100                      # Llama-2-Chat-7B
# Hello! I'm here to help you with any questions or concerns ....

要在交互模式下运行模型,请添加 -i 标志。例如:

# 在 Windows 上:
.\build\bin\Release\main -m model.bin -i

# 在 Linux(或 WSL)上:
rlwrap ./build/bin/main -m model.bin -i

在交互模式下,您的聊天历史将作为下一轮对话的上下文。

运行 ./build/bin/main -h 以探索更多选项!

致谢

  • 本项目起初是对 ChatGLM.cpp 的重构,没有它,这个项目将无法实现。

  • 感谢那些发布了模型源代码和检查点的人。

注意

这个项目是我用来学习深度学习和 GGML 的业余项目,目前正在积极开发中。欢迎修复 bug 的 PR,但不接受功能性的 PR。