Giter Site home page Giter Site logo

li-plus / chatglm.cpp Goto Github PK

View Code? Open in Web Editor NEW
2.6K 39.0 308.0 1.38 MB

C++ implementation of ChatGLM-6B & ChatGLM2-6B & ChatGLM3 & more LLMs

License: MIT License

CMake 1.55% C++ 69.65% Python 27.81% Dockerfile 0.57% Shell 0.41%
large-language-models chatglm nlp chatglm2 baichuan2 baichuan chatglm3 codegeex2-6b internlm

chatglm.cpp's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chatglm.cpp's Issues

32核64g 推理慢

prompt time: 15761 ms / 17 tokens (927.114 ms/token)
output time: 60333.6 ms / 28 tokens (2154.77 ms/token)
total time: 76094.5 ms

pip install -U chatglm-cpp报错

OS: Debian GNU/Linux 12
Python 3.9.17
pip 23.2

报错:

# pip install -U chatglm-cpp
Collecting chatglm-cpp
  Using cached chatglm-cpp-0.2.0.tar.gz (2.5 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: chatglm-cpp
  Building wheel for chatglm-cpp (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for chatglm-cpp (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [80 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-39
      creating build/lib.linux-x86_64-cpython-39/chatglm_cpp
      copying chatglm_cpp/__init__.py -> build/lib.linux-x86_64-cpython-39/chatglm_cpp
      running egg_info
      writing chatglm_cpp.egg-info/PKG-INFO
      writing dependency_links to chatglm_cpp.egg-info/dependency_links.txt
      writing top-level names to chatglm_cpp.egg-info/top_level.txt
      reading manifest file 'chatglm_cpp.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      adding license file 'LICENSE'
      writing manifest file 'chatglm_cpp.egg-info/SOURCES.txt'
      running build_ext
      -- The CXX compiler identification is unknown
      CMake Error at CMakeLists.txt:2 (project):
        No CMAKE_CXX_COMPILER could be found.
      
        Tell CMake where to find the compiler by setting either the environment
        variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
        to the compiler, or to the compiler name if it is in the PATH.
      
      
      -- Configuring incomplete, errors occurred!
      Traceback (most recent call last):
        File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 416, in build_wheel
          return self._build_with_temp_dir(['bdist_wheel'], '.whl',
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 401, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 338, in run_setup
          exec(code, locals())
        File "<string>", line 46, in <module>
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 107, in setup
          return distutils.core.setup(**attrs)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-kux5vrnx/normal/lib/python3.9/site-packages/wheel/bdist_wheel.py", line 343, in run
          self.run_command("build")
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build.py", line 131, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/command/build_ext.py", line 84, in run
          _build_ext.run(self)
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 345, in run
          self.build_extensions()
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 467, in build_extensions
          self._build_extensions_serial()
        File "/tmp/pip-build-env-kux5vrnx/overlay/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 493, in _build_extensions_serial
          self.build_extension(ext)
        File "<string>", line 39, in build_extension
        File "/usr/local/lib/python3.9/subprocess.py", line 528, in run
          raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-akeyqerw/chatglm-cpp_a82cee8d371f4dedbffbdb0b40de85bf', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-akeyqerw/chatglm-cpp_a82cee8d371f4dedbffbdb0b40de85bf/build/lib.linux-x86_64-cpython-39/chatglm_cpp/', '-DPYTHON_EXECUTABLE=/usr/local/bin/python', '-DCMAKE_BUILD_TYPE=Release', '-DCHATGLM_ENABLE_PYBIND=ON']' returned non-zero exit status 1.
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for chatglm-cpp
Failed to build chatglm-cpp
ERROR: Could not build wheels for chatglm-cpp, which is required to install pyproject.toml-based projects
# 

导入顺序导致的 segmentfault

尽管下面来自 langchain 的 LLM 并未使用,但是当PipelineLLM 之后导入时,
仍会导致Pipeline实例化时的 segment fault。

以下代码正常,交换前两行就会出现段错误

from chatglm_cpp import Pipeline
from langchain.llms.base import LLM

from pathlib import Path

model = Path('model/chatglm2-ggml.bin')
pl = Pipeline(model)

pl.chat(history=['你是谁'])

问题原因还不确定,看 coredump 貌似与 tcmalloc 有关

coredump bt:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `python debug.py'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f64d1839074 in tcmalloc::CentralFreeList::ReleaseToSpans(void*) () from /usr/lib/libtcmalloc_minimal.so.4
[Current thread is 1 (Thread 0x7f64dc87b740 (LWP 625008))]
q(gdb) bt
#0  0x00007f64d1839074 in tcmalloc::CentralFreeList::ReleaseToSpans(void*) () from /usr/lib/libtcmalloc_minimal.so.4
#1  0x00007f64d18391ff in tcmalloc::CentralFreeList::ReleaseListToSpans(void*) () from /usr/lib/libtcmalloc_minimal.so.4
#2  0x00007f64d18394e3 in tcmalloc::CentralFreeList::InsertRange(void*, void*, int) () from /usr/lib/libtcmalloc_minimal.so.4
#3  0x00007f64d18396da in tcmalloc::ThreadCache::ReleaseToCentralCache(tcmalloc::ThreadCache::FreeList*, unsigned int, int) () from /usr/lib/libtcmalloc_minimal.so.4
#4  0x00007f64d183a9ea in tcmalloc::ThreadCache::ListTooLong(tcmalloc::ThreadCache::FreeList*, unsigned int) () from /usr/lib/libtcmalloc_minimal.so.4
#5  0x00007f64d1a9af54 in chatglm::ChatGLM2ForConditionalGeneration::load(chatglm::ModelLoader&) () from /home/giskard/.local/lib/python3.11/site-packages/chatglm_cpp/_C.cpython-311-x86_64-linux-gnu.so
#6  0x00007f64d1aa61d3 in chatglm::Pipeline::Pipeline(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
   from /home/giskard/.local/lib/python3.11/site-packages/chatglm_cpp/_C.cpython-311-x86_64-linux-gnu.so
#7  0x00007f64d1a923ab in ?? () from /home/giskard/.local/lib/python3.11/site-packages/chatglm_cpp/_C.cpython-311-x86_64-linux-gnu.so
#8  0x00007f64d1a84cc2 in ?? () from /home/giskard/.local/lib/python3.11/site-packages/chatglm_cpp/_C.cpython-311-x86_64-linux-gnu.so
#9  0x00007f64dc3fac81 in ?? () from /usr/lib/libpython3.11.so.1.0
#10 0x00007f64dc3d9dfc in _PyObject_MakeTpCall () from /usr/lib/libpython3.11.so.1.0
#11 0x00007f64dc3e4379 in _PyEval_EvalFrameDefault () from /usr/lib/libpython3.11.so.1.0
#12 0x00007f64dc40a9e0 in _PyFunction_Vectorcall () from /usr/lib/libpython3.11.so.1.0
#13 0x00007f64dc4127b0 in ?? () from /usr/lib/libpython3.11.so.1.0
#14 0x00007f64dc3da12a in ?? () from /usr/lib/libpython3.11.so.1.0
#15 0x00007f64d1a7eaf9 in ?? () from /home/giskard/.local/lib/python3.11/site-packages/chatglm_cpp/_C.cpython-311-x86_64-linux-gnu.so
#16 0x00007f64dc3d9dfc in _PyObject_MakeTpCall () from /usr/lib/libpython3.11.so.1.0
#17 0x00007f64dc3e4379 in _PyEval_EvalFrameDefault () from /usr/lib/libpython3.11.so.1.0
#18 0x00007f64dc49e9aa in ?? () from /usr/lib/libpython3.11.so.1.0
#19 0x00007f64dc49e3bc in PyEval_EvalCode () from /usr/lib/libpython3.11.so.1.0
#20 0x00007f64dc4bc503 in ?? () from /usr/lib/libpython3.11.so.1.0
#21 0x00007f64dc4b83ca in ?? () from /usr/lib/libpython3.11.so.1.0
#22 0x00007f64dc4cecf3 in ?? () from /usr/lib/libpython3.11.so.1.0
#23 0x00007f64dc4ce525 in _PyRun_SimpleFileObject () from /usr/lib/libpython3.11.so.1.0
#24 0x00007f64dc4ccf18 in _PyRun_AnyFileObject () from /usr/lib/libpython3.11.so.1.0
#25 0x00007f64dc4c77e8 in Py_RunMain () from /usr/lib/libpython3.11.so.1.0
#26 0x00007f64dc490c3b in Py_BytesMain () from /usr/lib/libpython3.11.so.1.0
#27 0x00007f64dc039850 in ?? () from /usr/lib/libc.so.6
#28 0x00007f64dc03990a in __libc_start_main () from /usr/lib/libc.so.6
#29 0x000056263ee18045 in _start ()

ViT,QFormer图像推理结果接入chatglm.cpp

在Orin上把ViT,QFormer模型转成trt使用TensorRT推理,推理后的结果可以接入chatglm.cpp吗? 以实现图像+文字的多模输入?
这样就基本实现了VisualGLM的cpp版本.

生成速度的评估

感谢杰出的工作!
对于下列表格的生成速度有疑问,请问这个速度(ms/token)是怎么计算出来的呢?
image

MSVC编译的main.exe运行乱码

之前版本编译出来的能用,但是只会输出英文。我看有commit做了msvc的适配,就pull了新的代码试了一下,结果貌似能输出中文了,但是编码存在问题。

D:\CHATGLM\chatglm.cpp>.\build-win\bin\Debug\main.exe -m .\chatglm2-ggml.bin -i
    ________          __  ________    __  ___
   / ____/ /_  ____ _/ /_/ ____/ /   /  |/  /_________  ____
  / /   / __ \/ __ `/ __/ / __/ /   / /|_/ // ___/ __ \/ __ \
 / /___/ / / / /_/ / /_/ /_/ / /___/ /  / // /__/ /_/ / /_/ /
 \____/_/ /_/\__,_/\__/\____/_____/_/  /_(_)___/ .___/ .___/
                                              /_/   /_/
Prompt   > 你好
ChatGLM2 > 浣犲ソ馃憢锛佹垜鏄汉宸ユ櫤鑳藉姪鎵?ChatGLM2-6B锛屽緢楂樺叴瑙佸埌浣狅紝娆㈣繋闂垜浠讳綍闂銆

应该是gbk编码的文本被强制转换为utf-8显示而出现的问题。。。

GPU推理速度相比于llama.cpp慢了一倍

我的机器配置是AMD Ryzen 5950x, NVidia RTX A6000, CUDA 11.7
我目前有2套测试配置,都是截止到7月6日的最新代码,都使用同样的参数 t=6, l/n=128, prompt="how to build a house in 10 steps“
C1: chatglm2-6B, 使用 chatglm.cpp
C2: vicuna_7b_v1.3, 使用 llama.cpp
在CPU下:
FP16

  • C1: 2.5 t/s
  • C2: 2.3 t/s

Q4_0

  • C1: 8.5 t/s
  • C2: 7.5 t/s
    所以在CPU下C1是稳定比C2快10%的,这应该是符合6BVS7B的

在GPU下:
FP16

  • C1: 34.6 t/s
  • C2: 44.3 t/s

Q4_0

  • C1: 49.8 t/s

  • C2: 108.1 t/s

    所以在GPU下反而C1比C2慢很多,low bit差别更加明显。用GPU的时候我是设置--threads 1,跟llama.cpp一致。

chatglm.cpp里没有提供-ngl所以我不确定是不是一些层没有完全offload到GPU导致的,比较难DEBUG

UPDATE:
附带一张我最近和fastllm的性能测试, 可以看到对于fastllm, chatglm2 6B在GPU上是比vicua 7B快40%的,证明这个架构没什么问题。但在chatglm.cpp当前反而是比vicuna 7B慢了50%
image

chatglm2 convert.py挂了

│ /home/xxxx/testingllm/chatglm.cpp/convert.py:233 in dump_config │
│ │
│ 230 │ │ │ config.multi_query_group_num, │
│ 231 │ │ ] │
│ 232 │ │ │
│ ❱ 233 │ │ f.write(struct.pack("i" * len(config_values), *config_values)) │
│ 234 │ │
│ 235 │ @staticmethod
│ 236 │ def dump_tokenizer(f, tokenizer): │

chatglm没问题

Python Module 调用失败

Macbook M1 pro 16G

编译成功

cmake -B build 成功
cmake --build build -j 成功
python convert.py -i ~/models/THUDM/chatglm2-6b -t f16 -o chatglm2-ggml-f16.bin 成功
Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████| 7/7 [00:08<00:00,  1.28s/it]
Dumping model state: 100%|██████████████████████████████████████████████████████████████████████| 199/199 [00:35<00:00,  5.66it/s]

运行测试成功

./build/bin/main -m chatglm2-ggml-f16.bin -i
    ________          __  ________    __  ___
   / ____/ /_  ____ _/ /_/ ____/ /   /  |/  /_________  ____
  / /   / __ \/ __ `/ __/ / __/ /   / /|_/ // ___/ __ \/ __ \
 / /___/ / / / /_/ / /_/ /_/ / /___/ /  / // /__/ /_/ / /_/ /
 \____/_/ /_/\__,_/\__/\____/_____/_/  /_(_)___/ .___/ .___/
                                              /_/   /_/
Prompt   > 你好!
ChatGLM2 > 你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。

成功速度很快

Python Binding 有问题

pip install .
.....
Successfully built chatglm-cpp
Installing collected packages: chatglm-cpp
Successfully installed chatglm-cpp-0.2.0

运行 web_demo.py 失败

python web_demo.py -m chatglm2-ggml-f16.bin
Traceback (most recent call last):
  File "/Users/suifei/works/chatglm.cpp/web_demo.py", line 5, in <module>
    import chatglm_cpp
  File "/Users/suifei/works/chatglm.cpp/chatglm_cpp/__init__.py", line 5, in <module>
    import chatglm_cpp._C as _C
ModuleNotFoundError: No module named 'chatglm_cpp._C'

请问下这个是什么原因导致的,python module 调用失败


System environment

Apple M1 Pro 16 GB macOS(13.4.1 (22F82))

The compilation was successful

cmake -B build #Success
cmake --build build -j #Success
python convert.py -i ~/models/THUDM/chatglm2-6b -t f16 -o chatglm2-ggml-f16.bin #Success
Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████| 7/7 [00:08<00:00,  1.28s/it]
Dumping model state: 100%|██████████████████████████████████████████████████████████████████████| 199/199 [00:35<00:00,  5.66it/s]

The test was successful

./build/bin/main -m chatglm2-ggml-f16.bin -i
    ________          __  ________    __  ___
   / ____/ /_  ____ _/ /_/ ____/ /   /  |/  /_________  ____
  / /   / __ \/ __ `/ __/ / __/ /   / /|_/ // ___/ __ \/ __ \
 / /___/ / / / /_/ / /_/ /_/ / /___/ /  / // /__/ /_/ / /_/ /
 \____/_/ /_/\__,_/\__/\____/_____/_/  /_(_)___/ .___/ .___/
                                              /_/   /_/
Prompt   > hello!
ChatGLM2 > Hello! How can I assist you today?

The success rate is fast.

To install the Python binding from source, run:

pip install .
.....
Successfully built chatglm-cpp
Installing collected packages: chatglm-cpp
Successfully installed chatglm-cpp-0.2.0

An error occurred while running web_demo.py.

python web_demo.py -m chatglm2-ggml-f16.bin
Traceback (most recent call last):
  File "/Users/suifei/works/chatglm.cpp/web_demo.py", line 5, in <module>
    import chatglm_cpp
  File "/Users/suifei/works/chatglm.cpp/chatglm_cpp/__init__.py", line 5, in <module>
    import chatglm_cpp._C as _C
ModuleNotFoundError: No module named 'chatglm_cpp._C'

What is the reason for the failure of the Python module call?

chatGLM2 & llama.cpp

请问这个REPO可以直接支持chatGLM2吗?
另外最近2周llama.cpp里很多关于cublas的优化提速代码是否已经merge进来了?

Allow configuring SCRATCH_SIZE (not enough space in the scratch memory pool)

After chatting for a few lines, I receive the following error:

ChatGLM2 > ggml_new_tensor_impl: not enough space in the scratch memory pool (needed 173910528, available 150994944)
/home/d/bin/chat-gml2: line 4: 4131493 Segmentation fault (core dumped) $GLM/build/bin/main -m $MODEL -i -t 8 -c 2048 -l 8000

This can be resolved by increasing the SCRATCH_SIZE in chatglm.h.

I'm creating this issue for 2 reasons: 1. To help someone else resolve this if they encounter it, and 2. request a knob for the value.

与llama-cpp-python整合出错

当我尝试用llama-cpp-python 调用chatglm2的q8_0的模型时遇到了问题:

Python 3.11.3 (main, Jun  5 2023, 09:32:32) [GCC 13.1.1 20230429] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from llama_cpp import Llama
>>> llm = Llama(model_path="/home/micraow/chatglm.cpp/chatglm2-ggml.bin")
llama.cpp: loading model from /home/micraow/chatglm.cpp/chatglm2-ggml.bin
error loading model: unknown (magic, version) combination: 6c6d6767, 00000002; is this really a GGML file?
llama_load_model_from_file: failed to load model
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/micraow/aiwork/llama-cpp-python/llama_cpp/llama.py", line 304, in __init__
    assert self.model is not None
           ^^^^^^^^^^^^^^^^^^^^^^
AssertionError

然而用本项目调用则正常,模型应该没有问题,我使用的是llama-cpp-python的最新版本,正在尝试利用privateGPT搭建知识库时遇到了这个问题。不知道该如何解决?

请求增加多gpu推理

非常感谢你们的工作,
当前版本似乎不支持单机多卡推理。在 8 x RTX 2080 TI 11G 的机子上加载未量化的chatglm2-6b-f16权重,ggml可以检测到8块显卡,但是所有权重都被扔到第一块卡上,导致cuda out of memory。同样的main运行q_4的权重没有任何问题。
系统:Ubuntu20.04
bash运行
$echo CUDA_VISIBLE_DEVICE
返回
0,1,2,3,4,5,6,7
期待修改以支持多卡推理,谢谢!

win10+8核i78665U+24G内存无GPU运行chatglm2-6b Q4输出异常缓慢

首先感谢作者做出的贡献!
我在win10+i78665U+24G内存条件下运行chatglm2-6b Q4,无GPU,首个token耗时20分钟以上,后续每个token平均10s以上。我看到ReadMe中benchmark测试也没有用GPU,想来硬件差距不算太离谱,所以请教一下问题出在哪里,是硬件不行还是其它什么原因?盼回复,不胜感激。

  1. 配置:i7-8665U 8核1.9G
    e55486befc2d627d5bc453bb4ffbc40

  2. 输出测试:

4392b48adb2474eb4c2a6a041e5a474
  1. 运行时CPU及内存占用情况(main.exe):
    image

  2. 编译过程输出:
    E:\projects\chatglmcpp\chatglm.cpp>cmake -B build
    -- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.19045.
    -- CMAKE_SYSTEM_PROCESSOR: AMD64
    -- x86 detected
    -- VERSION: 0.2.00
    -- Not Found TCMalloc: TCMALLOC_LIB-NOTFOUND
    -- Configuring done (0.7s)
    -- Generating done (0.7s)
    -- Build files have been written to: E:/projects/chatglmcpp/chatglm.cpp/build

E:\projects\chatglmcpp\chatglm.cpp>cmake --build build -j
MSBuild version 17.6.3+07e294721 for .NET Framework

Checking Build System
ggml.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\lib\Debug\ggml.lib
sentencepiece_train-static.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\lib\Debug\sentencepiece_train.lib
sentencepiece-static.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\lib\Debug\sentencepiece.lib
Building Custom Rule E:/projects/chatglmcpp/chatglm.cpp/CMakeLists.txt
LINK : 没有找到 E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_train.exe 或上一个增量链接没有生成它;正在执行 完全链接
LINK : 没有找到 E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_export_vocab.exe 或上一个增量链接没有生成它;正在执行完全链接
LINK : 没有找到 E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_encode.exe 或上一个增量链接没有生成它;正在执行完全链接
LINK : 没有找到 E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_decode.exe 或上一个增量链接没有生成它;正在执行完全链接
spm_export_vocab.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_export_vocab.exe
spm_encode.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_encode.exe
spm_decode.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_decode.exe
spm_train.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_train.exe
chatglm.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\lib\Debug\chatglm.lib
LINK : 没有找到 E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_normalize.exe 或上一个增量链接没有生成它;正在 执行完全链接
spm_normalize.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\spm_normalize.exe
Building Custom Rule E:/projects/chatglmcpp/chatglm.cpp/CMakeLists.txt
cl : 命令行 warning D9002: 忽略未知选项“-g” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
main.cpp
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(377,34): warning C4820: "ggml_tensor": 数据成员 "gg
ml_tensor::n_dims" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(388,34): warning C4820: "ggml_tensor": 数据成员 "gg
ml_tensor::is_param" 后添加了 "3" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(408,5): warning C4820: "ggml_tensor": 数据成员 "ggm
l_tensor::padding" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(418,16): warning C4820: "ggml_cgraph": 数据成员 "gg
ml_cgraph::n_threads" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(427,17): warning C4820: "ggml_cgraph": 数据成员 "gg
ml_cgraph::perf_runs" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(443,5): warning C4820: "ggml_init_params": 数据 成员
"ggml_init_params::no_alloc" 后添加了 "7" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(460,16): warning C4820: "ggml_compute_params":
数据成员 "ggml_compute_params::nth" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(1362,15): warning C4820: "ggml_opt_params": 数据成
员 "ggml_opt_params::print_backward_graph" 后添加了 "2" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(1385,17): warning C4820: "ggml_opt_context": 数 据
成员 "ggml_opt_context::iter" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(1401,9): warning C4820: "ggml_opt_context::": 数据成员 "ggml_opt_context::n_no_improvement" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxp
roj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(1401,15): warning C4820: "ggml_opt_context": 数 据
成员 "ggml_opt_context::just_initialized" 后添加了 "7" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\ggml\include\ggml\ggml.h(1507,5): warning C4820: "": 数据成 员 "
::vec_dot_type" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\sentencepiece\src\sentencepiece_processor.h(704,1): warning C4625: “sent
encepiece::SentencePieceProcessor”: 已将复制构造函数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\third_party\sentencepiece\src\sentencepiece_processor.h(704,1): warning C4626: “sent
encepiece::SentencePieceProcessor”: 已将对齐运算符隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(21,1): warning C4625: “chatglm::LogMessageFatal”: 已将复制构造函数隐式定 义为“已删除” [E:\p
rojects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(21,1): warning C4626: “chatglm::LogMessageFatal”: 已将对齐运算符隐式定义 为“已删除” [E:\pr
ojects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(95,1): warning C4820: "chatglm::InitContext": 数据成员 "chatglm::InitContext::
dtype" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(95,1): warning C4625: “chatglm::InitContext”: 已将复制构造函数隐式定义为 “已删除” [E:\proje
cts\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(95,1): warning C4626: “chatglm::InitContext”: 已将对齐运算符隐式定义为“ 已删除” [E:\projec
ts\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(101,1): warning C4625: “chatglm::ForwardContext”: 已将复制构造函数隐式定 义为“已删除” [E:\p
rojects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(101,1): warning C4626: “chatglm::ForwardContext”: 已将对齐运算符隐式定义 为“已删除” [E:\pr
ojects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(187,22): warning C4820: "chatglm::TextStreamer": 数据成员 "chatglm::TextStream
er::is_prompt_" 后添加了 "7" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(189,1): warning C4820: "chatglm::TextStreamer": 数据成员 "chatglm::TextStreame
r::print_len_" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(189,1): warning C4626: “chatglm::TextStreamer”: 已将对齐运算符隐式定义为 “已删除” [E:\proj
ects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(189,1): warning C5027: “chatglm::TextStreamer”: 已将移动赋值运算符隐式定 义为“已删除” [E:\pr
ojects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(249,1): warning C4626: “chatglm::ModelLoader”: 已将对齐运算符隐式定义为“已删除” [E:\proje
cts\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(249,1): warning C5027: “chatglm::ModelLoader”: 已将移动赋值运算符隐式定义为“已删除” [E:\pro
jects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(257,9): warning C4820: "chatglm::GenerationConfig": 数据成员 "chatglm::Generat
ionConfig::do_sample" 后添加了 "3" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(315,1): warning C4625: “chatglm::BaseModelForConditionalGeneration”: 已将复制构
造函数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(315,1): warning C4626: “chatglm::BaseModelForConditionalGeneration”: 已将对齐运
算符隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(345,1): warning C4820: "chatglm::ChatGLMTokenizer": 数据成员 "chatglm::ChatGLM
Tokenizer::pad_token_id" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(345,1): warning C4625: “chatglm::ChatGLMTokenizer”: 已将复制构造函数隐式 定义为“已删除” [E:
\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(345,1): warning C5026: “chatglm::ChatGLMTokenizer”: 已将移动构造函数隐式 定义为“已删除” [E:
\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(345,1): warning C4626: “chatglm::ChatGLMTokenizer”: 已将对齐运算符隐式定 义为“已删除” [E:
projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(345,1): warning C5027: “chatglm::ChatGLMTokenizer”: 已将移动赋值运算符隐 式定义为“已删除” [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(378,25): warning C4820: "chatglm::GLMSelfAttention": 数据成员 "chatglm::GLMSel
fAttention::num_attention_heads" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(397,1): warning C4820: "chatglm::GLMBlock": 数据成员 "chatglm::GLMBlock::num_h
idden_layers" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(425,18): warning C4820: "chatglm::ChatGLMForConditionalGeneration": 数据成 员 "
chatglm::ChatGLMForConditionalGeneration::config" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(432,1): warning C4623: “chatglm::ChatGLMForConditionalGeneration”: 已将默认构造函
数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(432,1): warning C4625: “chatglm::ChatGLMForConditionalGeneration”: 已将复制构造函
数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(432,1): warning C5026: “chatglm::ChatGLMForConditionalGeneration”: 已将移动构造函
数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(432,1): warning C4626: “chatglm::ChatGLMForConditionalGeneration”: 已将对齐运算符
隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(432,1): warning C5027: “chatglm::ChatGLMForConditionalGeneration”: 已将移动赋值运
算符隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(461,1): warning C4820: "chatglm::ChatGLM2Tokenizer": 数据成员 "chatglm::ChatGL
M2Tokenizer::eop_token_id" 后添加了 "4" 字节填充 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(461,1): warning C4625: “chatglm::ChatGLM2Tokenizer”: 已将复制构造函数隐式定义为“已删除” [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(461,1): warning C5026: “chatglm::ChatGLM2Tokenizer”: 已将移动构造函数隐式定义为“已删除” [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(461,1): warning C4626: “chatglm::ChatGLM2Tokenizer”: 已将对齐运算符隐式定义为“已删除” [E:
\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(461,1): warning C5027: “chatglm::ChatGLM2Tokenizer”: 已将移动赋值运算符隐式定义为“已删除” [
E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(514,1): warning C4623: “chatglm::GLM2Block”: 已将默认构造函数隐式定义为“已删除” [E:\projec
ts\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(551,1): warning C4623: “chatglm::ChatGLM2ForConditionalGeneration”: 已将 默认构造
函数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(551,1): warning C4625: “chatglm::ChatGLM2ForConditionalGeneration”: 已将 复制构造
函数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(551,1): warning C5026: “chatglm::ChatGLM2ForConditionalGeneration”: 已将 移动构造
函数隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(551,1): warning C4626: “chatglm::ChatGLM2ForConditionalGeneration”: 已将 对齐运算
符隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(551,1): warning C5027: “chatglm::ChatGLM2ForConditionalGeneration”: 已将 移动赋值
运算符隐式定义为“已删除” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(566,1): warning C4625: “chatglm::Pipeline”: 已将复制构造函数隐式定义为“ 已删除” [E:\project
s\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\chatglm.h(566,1): warning C4626: “chatglm::Pipeline”: 已将对齐运算符隐式定义为“已 删除” [E:\projects
\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winbase.h(7723,48): warning C5039: “TpSetCallbackCleanup
Group”: 可能引发函数的指针或引用传递到 -EHc 下的外部 "C" 函数。如果此函数引发异常,则可能发生未定义的行为。 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11004,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_TH2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11010,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS1”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11015,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_TH2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11020,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_TH2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11027,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS1”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11032,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11043,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11048,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_TH2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11054,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS3”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11062,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS4”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11066,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS1”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11070,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS4”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11075,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS1”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11078,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS5”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11293,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(11317,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS5”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(14840,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS5”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(15042,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS5”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(15145,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS5”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(15241,21): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS5”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(15345,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS5”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(16089,23): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(16177,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS2”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(16303,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS3”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(16452,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS4”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(16465,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS4”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winioctl.h(16694,22): warning C4668: 没有将“_WIN32_WINNT_WI
N10_RS1”定义为预处理器宏,用“0”替换“#if/#elif” [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(17,9): warning C4820: "Args": 数据成员 "Args::interactive" 后添加了 "3" 字节填充 [E:\pr
ojects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(22,1): warning C4820: "Args": 数据成员 "Args::verbose" 后添加了 "3" 字节填充 [E:\projec
ts\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(84,50): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(86,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(87,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(89,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(90,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(91,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(93,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(94,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(95,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(96,55): warning C4365: “参数”: 从“unsigned char”转换到“const _Elem”, 有符号/无符号不匹配 [E
:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
with
[
_Elem=char
]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(159,50): warning C5219: 从“int64_t”隐式转换到“float”,可能会丢失数据 [E:\projects\chatglm
cpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(179,51): warning C4365: “参数”: 从“unsigned __int64”转换到“std::streamsize”,有符号/无
符号不匹配 [E:\projects\chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(52): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(52) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(54): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(54) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(58): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(58) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(60): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(60) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(68): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(68) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(66): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(66) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(64): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(64) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(62): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(62) : 注意: 此行上的源调用
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(46): warning C5045: 如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解 [E:\projects
chatglmcpp\chatglm.cpp\build\main.vcxproj]
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(45) : 注意: 在此行上通过对比检查索引 "i" 范围
E:\projects\chatglmcpp\chatglm.cpp\main.cpp(46) : 注意: 此行上的源调用
LINK : 没有找到 E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\main.exe 或上一个增量链接没有生成它;正在执行完全链接
main.vcxproj -> E:\projects\chatglmcpp\chatglm.cpp\build\bin\Debug\main.exe
Building Custom Rule E:/projects/chatglmcpp/chatglm.cpp/CMakeLists.txt

ggml-metal false && "not implemented" on M2 Pro chip

如题,2023 MacBook Pro 14 inch (M2 pro) 运行0.2.2版本报错

GGML_ASSERT: /private/var/folders/_s/4zl9s20j6tz7v7hpgrnfjr2h0000gn/T/pip-install-u8orwh9d/chatglm-cpp_09e75c58ec8c422bb5becf3fe9b775aa/third_party/ggml/src/ggml-metal.m:904: false && "not implemented"

[1]    7010 abort      python3 web_demo.py -m ../chatglm2-ggml.bin

Compile用的是readme中的命令

cmake -B build -DGGML_METAL=ON && cmake --build build -j

添加了-l命令,不确定LoRA模型的权重是否合并成功

您好,我测试下来效果非常好,在cpu上的多线程的效果快赶上gpu了,但我想试试lora模型是不是会更快,于是运行了python3 convert.py -i THUDM/chatglm2-6b -t q4_0 -l ../glm2 -o chatglm2-lora-ggml.bin,保存好的模型貌似和原来glm2差不多,没有提速,请问是正常的么?因为之前测试gpu上GLM2+LoRA非常快的。

windows cmake 失败

E:\github_code\chatglm.cpp\chatglm.cpp(14,10): fatal error C1083: 无法打开包括文件: “sys/mman.h”: No such file or directory [E:\github_code\chatglm.cpp\build\chatglm.vcxproj]

[Feature request] low level cpp & python API for generation

Currently chatglm.cpp provides Pipeline for users. The Pipeline class provides a method called chat, which handles the system prompt, chat history, output formatting and more.

This is awesome. But for better flexibility, a low level API generate is also needed for integrate chatglm.cpp with other systems like text-generation-webui, LangChain, and Xinference.

Here are some detailed needs for the method generate (in Python):

def generate(
    self,
    prompt: str,  # the full prompt passed directly to the model
    stop: Optional[Union[str, List[str]]] = [],  # stop words
    max_tokens: int = 128,
    temperature: float = 0.8,
    top_p: float = 0.95,
    top_k: int = 40,
    **other_generate_kwargs
) -> Completion:
    pass


class Completion(TypedDict):
    text: str
    index: int
    prompt_tokens: int
    completion_tokens: int
    total_tokens: int
    finish_reason: Optional[str]  # "stop" for eos met and "length" for max_tokens reached

使用python接口运行不能调用gpu

你好,运行如下命令:
python cli_chat.py -m ../../pretrained-models/chatglm2-6b-ggml-q8_0.bin -i
发现并没有调用gpu。
之前编译使用:
cmake -B build -DGGML_CUBLAS=ON
cmake --build build -j
如果使用下面命令是可以正常调用gpu:
./build/bin/main -m ../pretrained-models/chatglm2-6b-ggml-q8_0.bin -i

想问下:是这个python接口还需要适配gpu吗?若有,需要改动什么呢

首个token推理速度,比Python版本还慢

你好,非常感谢作者的工作和无私奉献
通过对比我发现以下两个问题:
1.chatglm-6b的chatglm.cpp首个token的推理速度比Python版本慢了好几倍,特别是输入长度大于100。
2. 输入长度超过1000字符,chatglm.cpp的结果更差,输出的长度比Python版本短了50%以上。
机器型号:CPU型号:Intel(R) Xeon(R) Platinum 8475B,CPU核数:16,内存:60Gi

模型精度 模型推理版本 输入长度(字) 输出长度(token) 第一个token耗时 非流式输出总耗时 总耗时 剩余token平均耗时
float16 Python 32 215 0.7445s 34.1369s 35.3059s 0.1615s
float16 Python 257 306 1.3713s 50.179s 50.4559s 0.1654s
float16 Python 512 269 2.8002s 46.7511s 48.0962s 0.169s
float16 Python 1024 227 4.7105s 44.6898s 44.3965s 0.1756s
float16 Python 24 282 0.5863s 46.4415s 45.34s 0.1593s
float16 chatglm.cpp 32 217 0.5475s   21.1821s 0.0955s
float16 chatglm.cpp 257 308 4.0019s   33.6029s 0.0964s
float16 chatglm.cpp 512 271 9.6735s   35.9047s 0.0972s
float16 chatglm.cpp 1024 98 15.9248s   25.3531s 0.0972s
float16 chatglm.cpp 24 284 0.5491s   27.6705s 0.0958s

Compiling on Windows

Cannot seem to compile chatglm for Windows, any ideas?
$ cmake --build build -j
MSBuild version 17.6.3+07e294721 for .NET Framework
MSBUILD : error MSB1009: Project file does not exist.
Switch: ALL_BUILD.vcxproj

cmake .
does not contain a CMakeLists.txt file.
CMake Error at CMakeLists.txt:18 (add_subdirectory)

cuBLAS error (CUDA error 222)

built with cuBLAS, after that running ./main gives error
CUDA error 222 at xxxxxx/chatglm.cpp/third_party/ggml/src/ggml-cuda.cu:1835: the provided PTX was compiled with an unsupported toolchain.

MacBook Pro 编译失败

在苹果芯片下,clang: error: the clang compiler does not support '-march=native',请问怎么解决呢

请问max_context_length是什么

如题,默认值是512,请问这是指生成下一个token时只看512个token长度的上文吗?

    def chat(
        self,
        history: List[str],
        *,
        max_length: int = 2048,
        max_context_length: int = 512,
        do_sample: bool = True,
        top_k: int = 0,
        top_p: float = 0.7,
        temperature: float = 0.95,
        num_threads: int = 0,
    ) -> str:
        gen_config = _C.GenerationConfig(
            max_length=max_length,
            max_context_length=max_context_length,
            do_sample=do_sample,
            top_k=top_k,
            top_p=top_p,
            temperature=temperature,
            num_threads=num_threads,
        )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.