MacBook에서 실시간 채팅을 위해 ChatGLM-6B, ChatGLM2-6B, ChatGLM3 및 GLM-4 (v)의 C ++ 구현.

하이라이트:
지원 매트릭스 :
준비
Chatglm.CPP 저장소를 로컬 컴퓨터로 복제하십시오.
git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp 리포지토리를 클로닝 할 때 --recursive 플래그를 잊어 버린 경우 chatglm.cpp 폴더에서 다음 명령을 실행하십시오.
git submodule update --init --recursive모델을 정량화하십시오
포옹 얼굴 모델을로드 및 양자화하는 데 필요한 패키지를 설치하십시오.
python3 -m pip install -U pip
python3 -m pip install torch tabulate tqdm transformers accelerate sentencepiece convert.py 사용하여 ChatGLM-6B를 양자화 된 GGML 형식으로 변환하십시오. 예를 들어, FP16 원본 모델을 Q4_0 (Quantized Int4) GGML 모델로 변환하려면 실행 :
python3 chatglm_cpp/convert.py -i THUDM/chatglm-6b -t q4_0 -o models/chatglm-ggml.bin 원래 모델 ( -i <model_name_or_path> )은 포옹 얼굴 모델 이름이거나 사전 다운로드 된 모델의 로컬 경로 일 수 있습니다. 현재 지원되는 모델은 다음과 같습니다.
THUDM/chatglm-6b , THUDM/chatglm-6b-int8 , THUDM/chatglm-6b-int4THUDM/chatglm2-6b , THUDM/chatglm2-6b-int4 , THUDM/chatglm2-6b-32k , THUDM/chatglm2-6b-32k-int4THUDM/chatglm3-6b , THUDM/chatglm3-6b-32k , THUDM/chatglm3-6b-128k , THUDM/chatglm3-6b-baseTHUDM/glm-4-9b-chat , THUDM/glm-4-9b-chat-1m , THUDM/glm-4-9b , THUDM/glm-4v-9bTHUDM/codegeex2-6b , THUDM/codegeex2-6b-int4 -t <type> 지정하여 아래 양자화 유형을 자유롭게 시도해보십시오.
| 유형 | 정도 | 대칭 |
|---|---|---|
q4_0 | int4 | 진실 |
q4_1 | int4 | 거짓 |
q5_0 | int5 | 진실 |
q5_1 | int5 | 거짓 |
q8_0 | int8 | 진실 |
f16 | 반 | |
f32 | 뜨다 |
lora 모델의 경우 -l <lora_model_name_or_path> 를 추가하여 LORA 가중치를 기본 모델로 병합하십시오. 예를 들어, python3 chatglm_cpp/convert.py -i THUDM/chatglm3-6b -t q4_0 -o models/chatglm3-ggml-lora.bin -l shibing624/chatglm3-6b-csc-chinese-lora 로 껴안는 얼굴에서 공공 로라 가중치를 합병하십시오.
공식적인 Finetuning 스크립트를 사용하는 P- 조정 V2 모델의 경우 convert.py 에 의해 추가 가중치가 자동으로 감지됩니다. past_key_values 출력 중량 목록에 있으면 p 튜닝 체크 포인트가 성공적으로 변환됩니다.
빌드 및 실행
cmake를 사용하여 프로젝트를 컴파일하십시오.
cmake -B build
cmake --build build -j --config Release이제 Quantized ChatGLM-6B 모델과 채팅 할 수 있습니다.
./build/bin/main -m models/chatglm-ggml.bin -p 你好
# 你好!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。 대화식 모드로 모델을 실행하려면 -i 플래그를 추가하십시오. 예를 들어:
./build/bin/main -m models/chatglm-ggml.bin -i대화식 모드에서는 채팅 기록이 다음 라운드 대화의 컨텍스트 역할을합니다.
더 많은 옵션을 탐색하려면 ./build/bin/main -h 실행하십시오!
다른 모델을 시도하십시오
python3 chatglm_cpp/convert.py -i THUDM/chatglm2-6b -t q4_0 -o models/chatglm2-ggml.bin
./build/bin/main -m models/chatglm2-ggml.bin -p 你好 --top_p 0.8 --temp 0.8
# 你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。ChatGlm3-6b는 채팅 모드 외에도 기능 호출 및 코드 인터프리터를 추가로 지원합니다.
채팅 모드 :
python3 chatglm_cpp/convert.py -i THUDM/chatglm3-6b -t q4_0 -o models/chatglm3-ggml.bin
./build/bin/main -m models/chatglm3-ggml.bin -p 你好 --top_p 0.8 --temp 0.8
# 你好!我是人工智能助手 ChatGLM3-6B,很高兴见到你,欢迎问我任何问题。시스템 프롬프트 설정 :
./build/bin/main -m models/chatglm3-ggml.bin -p 你好 -s " You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown. "
# 你好!我是 ChatGLM3,有什么问题可以帮您解答吗?기능 호출 :
$ ./build/bin/main -m models/chatglm3-ggml.bin --top_p 0.8 --temp 0.8 --sp examples/system/function_call.txt -i
System > Answer the following questions as best as you can. You have access to the following tools: ...
Prompt > 生成一个随机数
ChatGLM3 > random_number_generator
```python
tool_call(seed=42, range=(0, 100))
```
Tool Call > Please manually call function `random_number_generator` with args `tool_call(seed=42, range=(0, 100))` and provide the results below.
Observation > 23
ChatGLM3 > 根据您的要求,我使用随机数生成器API生成了一个随机数。根据API返回结果,生成的随机数为23。
코드 통역사 :
$ ./build/bin/main -m models/chatglm3-ggml.bin --top_p 0.8 --temp 0.8 --sp examples/system/code_interpreter.txt -i
System > 你是一位智能AI助手,你叫ChatGLM,你连接着一台电脑,但请注意不能联网。在使用Python解决任务时,你可以运行代码并得到结果,如果运行结果有错误,你需要尽可能对代码进行改进。你可以处理用户上传到电脑上的文件,文件默认存储路径是/mnt/data/。
Prompt > 列出100以内的所有质数
ChatGLM3 > 好的,我会为您列出100以内的所有质数。
```python
def is_prime(n):
"""Check if a number is prime."""
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
primes_upto_100 = [i for i in range(2, 101) if is_prime(i)]
primes_upto_100
```
Code Interpreter > Please manually run the code and provide the results below.
Observation > [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
ChatGLM3 > 100以内的所有质数为:
$$
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
$$
채팅 모드 :
python3 chatglm_cpp/convert.py -i THUDM/glm-4-9b-chat -t q4_0 -o models/chatglm4-ggml.bin
./build/bin/main -m models/chatglm4-ggml.bin -p 你好 --top_p 0.8 --temp 0.8
# 你好!有什么可以帮助你的吗?
-vt <vision_type> 사용하여 비전 인코더의 양자화 유형을 설정할 수 있습니다. 4 비트 양자화로도 비전 인코딩이 CPU에서 너무 느리게 실행되므로 GPU에서 GLM4V를 실행하는 것이 좋습니다.
python3 chatglm_cpp/convert.py -i THUDM/glm-4v-9b -t q4_0 -vt q4_0 -o models/chatglm4v-ggml.bin
./build/bin/main -m models/chatglm4v-ggml.bin --image examples/03-Confusing-Pictures.jpg -p "这张图片有什么不寻常的地方" --temp 0
# 这张图片中不寻常的地方在于,男子正在一辆黄色出租车后面熨衣服。通常情况下,熨衣是在家中或洗衣店进行的,而不是在车辆上。此外,出租车在行驶中,男子却能够稳定地熨衣,这增加了场景的荒诞感。$ python3 chatglm_cpp/convert.py -i THUDM/codegeex2-6b -t q4_0 -o models/codegeex2-ggml.bin
$ ./build/bin/main -m models/codegeex2-ggml.bin --temp 0 --mode generate -p "
# language: Python
# write a bubble sort function
"
def bubble_sort(lst):
for i in range(len(lst) - 1):
for j in range(len(lst) - 1 - i):
if lst[j] > lst[j + 1]:
lst[j], lst[j + 1] = lst[j + 1], lst[j]
return lst
print(bubble_sort([5, 4, 3, 2, 1]))BLAS 라이브러리는 매트릭스 곱셈을 추가로 가속화하기 위해 통합 될 수 있습니다. 그러나 경우에 따라 BLA를 사용하면 성능 저하가 발생할 수 있습니다. BLA를 켜야하는지 여부는 벤치마킹 결과에 따라야합니다.
프레임 워크를 가속화합니다
가속 프레임 워크는 MACOS에서 자동으로 활성화됩니다. 비활성화하려면 cmake flag -DGGML_NO_ACCELERATE=ON 추가하십시오.
OpenBlas
OpenBlas는 CPU에 가속도를 제공합니다. cmake 플래그 -DGGML_OPENBLAS=ON 추가하여 활성화하십시오.
cmake -B build -DGGML_OPENBLAS=ON && cmake --build build -j쿠다
CUDA는 NVIDIA GPU에서 모델 추론을 가속화합니다. cmake 플래그 -DGGML_CUDA=ON 추가하여 활성화하십시오.
cmake -B build -DGGML_CUDA=ON && cmake --build build -j 기본적으로 모든 커널은 가능한 모든 CUDA 아키텍처에 대해 컴파일되며 시간이 걸립니다. 특정 유형의 장치에서 실행하려면 NVCC 컴파일 속도를 높이기 위해 CMAKE_CUDA_ARCHITECTURES 지정할 수 있습니다. 예를 들어:
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES= " 80 " # for A100
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES= " 70;75 " # compatible with both V100 and T4GPU 장치의 CUDA 아키텍처를 찾으려면 GPU 컴퓨팅 기능을 참조하십시오.
금속
MPS (Metal Performance Shaders)를 통해 계산은 강력한 Apple Silicon GPU에서 실행할 수 있습니다. cmake 플래그 -DGGML_METAL=ON 추가하여 활성화하십시오.
cmake -B build -DGGML_METAL=ON && cmake --build build -j Python 바인딩은 원래의 Hugging Face Chatglm (2) -6B와 유사한 높은 수준의 chat 및 stream_chat 인터페이스를 제공합니다.
설치
PYPI에서 설치 (권장) : 플랫폼에서 컴파일을 트리거합니다.
pip install -U chatglm-cppnvidia gpu에서 cuda를 활성화하려면 :
CMAKE_ARGS= " -DGGML_CUDA=ON " pip install -U chatglm-cppApple Silicon 장치에서 금속을 활성화하려면 :
CMAKE_ARGS= " -DGGML_METAL=ON " pip install -U chatglm-cpp 소스에서 설치할 수도 있습니다. 가속을 위해 해당 CMAKE_ARGS 추가하십시오.
# install from the latest source hosted on GitHub
pip install git+https://github.com/li-plus/chatglm.cpp.git@main
# or install from your local source after git cloning the repo
pip install .Linux / MacOS / Windows에서 CPU 백엔드 용 미리 제작 된 바퀴는 출시시 게시됩니다. CUDA / Metal Backendend의 경우 소스 코드 또는 소스 배포에서 컴파일하십시오.
사전 변환 GGML 모델 사용
다음은 chatglm_cpp.Pipeline 사용하여 GGML 모델을로드하고 채팅하는 간단한 데모입니다. 먼저 예제 폴더 ( cd examples )를 입력하고 파이썬 대화 형 쉘을 시작하십시오.
> >> import chatglm_cpp
> >>
>> > pipeline = chatglm_cpp . Pipeline ( "../models/chatglm-ggml.bin" )
> >> pipeline . chat ([ chatglm_cpp . ChatMessage ( role = "user" , content = "你好" )])
ChatMessage ( role = "assistant" , content = "你好!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。" , tool_calls = [])스트림에서 채팅하려면 아래 파이썬 예제를 실행하십시오.
python3 cli_demo.py -m ../models/chatglm-ggml.bin -i브라우저에서 채팅 할 웹 데모를 시작합니다.
python3 web_demo.py -m ../models/chatglm-ggml.bin
다른 모델의 경우 :
python3 cli_demo.py -m ../models/chatglm2-ggml.bin -p 你好 --temp 0.8 --top_p 0.8 # CLI demo
python3 web_demo.py -m ../models/chatglm2-ggml.bin --temp 0.8 --top_p 0.8 # web demoCLI 데모
채팅 모드 :
python3 cli_demo.py -m ../models/chatglm3-ggml.bin -p 你好 --temp 0.8 --top_p 0.8기능 호출 :
python3 cli_demo.py -m ../models/chatglm3-ggml.bin --temp 0.8 --top_p 0.8 --sp system/function_call.txt -i코드 통역사 :
python3 cli_demo.py -m ../models/chatglm3-ggml.bin --temp 0.8 --top_p 0.8 --sp system/code_interpreter.txt -i웹 데모
코드 통역사 용 파이썬 종속성 및 ipython 커널을 설치하십시오.
pip install streamlit jupyter_client ipython ipykernel
ipython kernel install --name chatglm3-demo --user웹 데모 시작 :
streamlit run chatglm3_demo.py| 기능 호출 | 코드 통역사 |
|---|---|
![]() | ![]() |
채팅 모드 :
python3 cli_demo.py -m ../models/chatglm4-ggml.bin -p 你好 --temp 0.8 --top_p 0.8채팅 모드 :
python3 cli_demo.py -m ../models/chatglm4v-ggml.bin --image 03-Confusing-Pictures.jpg -p "这张图片有什么不寻常之处" --temp 0 # CLI demo
python3 cli_demo.py -m ../models/codegeex2-ggml.bin --temp 0 --mode generate -p "
# language: Python
# write a bubble sort function
"
# web demo
python3 web_demo.py -m ../models/codegeex2-ggml.bin --temp 0 --max_length 512 --mode generate --plain런타임에 포옹 얼굴 LLM을 변환합니다
때로는 중간 GGML 모델을 미리 변환하고 저장하는 것이 불편할 수 있습니다. 다음은 원래 포옹 얼굴 모델에서 직접로드하고 1 분 안에 GGML 모델로 정량화하고 서빙을 시작하는 옵션입니다. GGML 모델 경로를 Hugging Face 모델 이름 또는 경로로 바꾸는 것입니다.
> >> import chatglm_cpp
> >>
>> > pipeline = chatglm_cpp . Pipeline ( "THUDM/chatglm-6b" , dtype = "q4_0" )
Loading checkpoint shards : 100 % | ██████████████████████████████████ | 8 / 8 [ 00 : 10 < 00 : 00 , 1.27 s / it ]
Processing model states : 100 % | ████████████████████████████████ | 339 / 339 [ 00 : 23 < 00 : 00 , 14.73 it / s ]
...
> >> pipeline . chat ([ chatglm_cpp . ChatMessage ( role = "user" , content = "你好" )])
ChatMessage ( role = "assistant" , content = "你好!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。" , tool_calls = [])마찬가지로, GGML 모델 경로를 모든 예제 스크립트에서 Hugging Face 모델로 바꾸면 작동합니다. 예를 들어:
python3 cli_demo.py -m THUDM/chatglm-6b -p 你好 -i우리는 대중적인 프론트 엔드와 통합하기 위해 다양한 종류의 API 서버를 지원합니다. 추가 종속성은 다음과 같이 설치할 수 있습니다.
pip install ' chatglm-cpp[api] ' 가속을 활성화하기 위해 해당 CMAKE_ARGS 추가해야합니다.
랭케인 API
Langchain 용 API 서버를 시작하십시오.
MODEL=./models/chatglm2-ggml.bin uvicorn chatglm_cpp.langchain_api:app --host 127.0.0.1 --port 8000 curl 로 API 엔드 포인트를 테스트하십시오.
curl http://127.0.0.1:8000 -H ' Content-Type: application/json ' -d ' {"prompt": "你好"} 'Langchain과 함께 달리기 :
> >> from langchain . llms import ChatGLM
> >>
>> > llm = ChatGLM ( endpoint_url = "http://127.0.0.1:8000" )
> >> llm . predict ( "你好" )
'你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。'더 많은 옵션은 예제/langchain_client.py 및 langchain chatglm 통합을 참조하십시오.
Openai API
OpenAI 채팅 완료 프로토콜과 호환되는 API 서버를 시작하십시오.
MODEL=./models/chatglm3-ggml.bin uvicorn chatglm_cpp.openai_api:app --host 127.0.0.1 --port 8000 curl 엔드 포인트를 테스트하십시오.
curl http://127.0.0.1:8000/v1/chat/completions -H ' Content-Type: application/json '
-d ' {"messages": [{"role": "user", "content": "你好"}]} 'OpenAI 클라이언트를 사용하여 모델과 채팅하십시오.
> >> from openai import OpenAI
> >>
>> > client = OpenAI ( base_url = "http://127.0.0.1:8000/v1" )
> >> response = client . chat . completions . create ( model = "default-model" , messages = [{ "role" : "user" , "content" : "你好" }])
> >> response . choices [ 0 ]. message . content
'你好!我是人工智能助手 ChatGLM3-6B,很高兴见到你,欢迎问我任何问题。'스트림 응답은 클라이언트 스크립트 예제를 확인하십시오.
python3 examples/openai_client.py --base_url http://127.0.0.1:8000/v1 --stream --prompt 你好도구 호출도 지원됩니다.
python3 examples/openai_client.py --base_url http://127.0.0.1:8000/v1 --tool_call --prompt 上海天气怎么样이미지 입력으로 GLM4V를 요청하십시오.
# request with local image file
python3 examples/openai_client.py --base_url http://127.0.0.1:8000/v1 --prompt "描述这张图片"
--image examples/03-Confusing-Pictures.jpg --temp 0
# request with image url
python3 examples/openai_client.py --base_url http://127.0.0.1:8000/v1 --prompt "描述这张图片"
--image https://www.barnorama.com/wp-content/uploads/2016/12/03-Confusing-Pictures.jpg --temp 0이 API 서버를 사용하면 ChatGlm.CPP 모델을 McKayWrigley/Chatbot-UI, Fuergaosi233/wechatgpt, yidadaa/chatgpt-next-web 등을 포함한 OpenAi 스타일 API를 사용하는 모든 프론트 엔드에 원활하게 통합 될 수 있습니다.
옵션 1 : 현지에서 건축
Docker 이미지를 로컬로 구축하고 CPU에서 추론을 실행하기 위해 컨테이너를 시작합니다.
docker build . --network=host -t chatglm.cpp
# cpp demo
docker run -it --rm -v $PWD /models:/chatglm.cpp/models chatglm.cpp ./build/bin/main -m models/chatglm-ggml.bin -p "你好"
# python demo
docker run -it --rm -v $PWD /models:/chatglm.cpp/models chatglm.cpp python3 examples/cli_demo.py -m models/chatglm-ggml.bin -p "你好"
# langchain api server
docker run -it --rm -v $PWD /models:/chatglm.cpp/models -p 8000:8000 -e MODEL=models/chatglm-ggml.bin chatglm.cpp
uvicorn chatglm_cpp.langchain_api:app --host 0.0.0.0 --port 8000
# openai api server
docker run -it --rm -v $PWD /models:/chatglm.cpp/models -p 8000:8000 -e MODEL=models/chatglm-ggml.bin chatglm.cpp
uvicorn chatglm_cpp.openai_api:app --host 0.0.0.0 --port 8000CUDA 지원을 위해 NVIDIA DOCKER가 설치되어 있는지 확인하십시오. 그런 다음 실행 :
docker build . --network=host -t chatglm.cpp-cuda
--build-arg BASE_IMAGE=nvidia/cuda:12.2.0-devel-ubuntu20.04
--build-arg CMAKE_ARGS= " -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=80 "
docker run -it --rm --gpus all -v $PWD /models:/chatglm.cpp/models chatglm.cpp-cuda
./build/bin/main -m models/chatglm-ggml.bin -p "你好"옵션 2 : 사전 제작 된 이미지 사용
CPU 추론에 대한 사전 구축 된 이미지는 Docker Hub 및 Github 컨테이너 레지스트리 (GHCR)에 게시됩니다.
Docker Hub에서 끌어 당기고 데모를 실행하려면 :
docker run -it --rm -v $PWD /models:/chatglm.cpp/models liplusx/chatglm.cpp:main
./build/bin/main -m models/chatglm-ggml.bin -p "你好"GHCR에서 끌어 당기고 데모를 실행하려면 :
docker run -it --rm -v $PWD /models:/chatglm.cpp/models ghcr.io/li-plus/chatglm.cpp:main
./build/bin/main -m models/chatglm-ggml.bin -p "你好"Python Demo 및 API 서버는 사전 제작 된 이미지에서도 지원됩니다. 옵션 1 과 같은 방식으로 사용하십시오.
환경:
chatglm-6b :
| Q4_0 | Q4_1 | Q5_0 | Q5_1 | Q8_0 | F16 | |
|---|---|---|---|---|---|---|
| MS/토큰 (CPU @ Platinum 8260) | 74 | 77 | 86 | 89 | 114 | 189 |
| MS/토큰 (cuda @ v100 sxm2) | 8.1 | 8.7 | 9.4 | 9.5 | 12.0 | 19.1 |
| MS/토큰 (MPS @ M2 Ultra) | 11.5 | 12.3 | N/A | N/A | 16.1 | 24.4 |
| 파일 크기 | 3.3g | 3.7g | 4.0g | 4.4g | 6.2g | 12g |
| MEM 사용 | 4.0g | 4.4g | 4.7g | 5.1g | 6.9g | 13g |
chatglm2-6b / chatglm3-6b / codegeex2 :
| Q4_0 | Q4_1 | Q5_0 | Q5_1 | Q8_0 | F16 | |
|---|---|---|---|---|---|---|
| MS/토큰 (CPU @ Platinum 8260) | 64 | 71 | 79 | 83 | 106 | 189 |
| MS/토큰 (cuda @ v100 sxm2) | 7.9 | 8.3 | 9.2 | 9.2 | 11.7 | 18.5 |
| MS/토큰 (MPS @ M2 Ultra) | 10.0 | 10.8 | N/A | N/A | 14.5 | 22.2 |
| 파일 크기 | 3.3g | 3.7g | 4.0g | 4.4g | 6.2g | 12g |
| MEM 사용 | 3.4g | 3.8g | 4.1g | 4.5g | 6.2g | 12g |
chatglm4-9b :
| Q4_0 | Q4_1 | Q5_0 | Q5_1 | Q8_0 | F16 | |
|---|---|---|---|---|---|---|
| MS/토큰 (CPU @ Platinum 8260) | 105 | 105 | 122 | 134 | 158 | 279 |
| MS/토큰 (cuda @ v100 sxm2) | 12.1 | 12.5 | 13.8 | 13.9 | 17.7 | 27.7 |
| MS/토큰 (MPS @ M2 Ultra) | 14.4 | 15.3 | 19.6 | 20.1 | 20.7 | 32.4 |
| 파일 크기 | 5.0g | 5.5g | 6.1g | 6.6g | 9.4g | 18g |
우리는 https://huggingface.co/docs/transformers/perplexity의 스트리트 슬라이딩 윈도우 전략에 따라 Wikitext-2 테스트 데이터 세트에 대한 당혹감을 평가하여 모델 품질을 측정합니다. 당황한 사람은 일반적으로 더 나은 모델을 나타냅니다.
링크에서 데이터 세트를 다운로드하여 압축 해제하십시오. 512의 보폭으로 당황하고 최대 입력 길이 2048으로 측정하십시오.
./build/bin/perplexity -m models/chatglm3-base-ggml.bin -f wikitext-2-raw/wiki.test.raw -s 512 -l 2048| Q4_0 | Q4_1 | Q5_0 | Q5_1 | Q8_0 | F16 | |
|---|---|---|---|---|---|---|
| chatglm3-6b-베이스 | 6.215 | 6.188 | 6.006 | 6.022 | 5.971 | 5.972 |
| chatglm4-9b-베이스 | 6.834 | 6.780 | 6.645 | 6.624 | 6.576 | 6.577 |
단위 테스트 및 벤치 마크
단위 테스트를 수행하려면이 CMake 플래그 -DCHATGLM_ENABLE_TESTING=ON 을 추가하여 테스트를 활성화하십시오. 유닛 테스트 (벤치 마크 포함)를 다시 컴파일하고 실행하십시오.
mkdir -p build && cd build
cmake .. -DCHATGLM_ENABLE_TESTING=ON && make -j
./bin/chatglm_test벤치 마크만 :
./bin/chatglm_test --gtest_filter= ' Benchmark.* '보풀
코드를 작성하려면 build 폴더 내부에서 make lint 실행하십시오. clang-format , black 및 isort 사전 설치되어 있어야합니다.
성능
성능 병목 현상을 감지하려면 cmake 플래그 -DGGML_PERF=ON :
cmake .. -DGGML_PERF=ON && make -j모델을 실행할 때 각 그래프 작동에 대한 타이밍을 인쇄합니다.