【后知后觉】llama.cpp-cpu-跑deepseek:671b

打印 上一主题 下一主题

主题 939|帖子 939|积分 2817

摘要:只是想试试,cpu跑deepseek:671b。
1.编译llama.cpp

参考资料:DeepSeek R1 671b 满血版摆设笔记。
原味摘抄:“假如是纯 CPU 推理,考虑到我希望有 -march=native 来达到最大运算速率采用了本地编译,这里 llama.cpp 会帮我们加上 -mrach=native。”
  1. git clone https://github.com/ggerganov/llama.cpp
  2. cd llama.cpp
  3. mkdir build && cd build
  4. #确认是否安装
  5. sudo apt install -y cmake gcc g++ libcurl4-openssl-dev
  6. #编译
  7. cmake .. -DCMAKE_BUILD_TYPE=Release  -DLLAMA_CURL=ON -DCMAKE_INSTALL_PREFIX=~/LLAMA
  8. make all -j install
复制代码
必须将LLAMA/lib 加入系统征采库,不然无法运行
  1. vim ~/.bashrc
  2. export LD_LIBRARY_PATH=~/LLAMA/lib:$LD_LIBRARY_PATH
  3. export PATH=$PATH:~/LLAMA/bin
  4. #保存退出后,执行
  5. source ~/.bashrc
复制代码

2.利用huggingface-cli 下载模子

2.1安装huggingface-cli

安装python3、pip不在叙述,请自行安装
  1. pip install huggingface_hub
  2. #在~/.bashrc加入bin路径
  3. vim ~/.bashrc
  4. export PATH=$PATH:~/.local/bin
  5. #执行
  6. source ~/.bashrc
复制代码

2.2 huggingface-cli命令解释

仅对利用到的参数做出说明,原始说明进入该网站查看:https://huggingface.co/docs/huggingface_hub/main/en/guides/cli
2.2.1下载多个文件

您还可以利用单个命令从存储库下载文件的子集。这可以通过两种方式完成。假如您已经有要下载的文件的精确列表,则只需按顺序提供它们即可:
  1. huggingface-cli download gpt2 config.json model.safetensors
复制代码
另一种方法是提供模式来过滤要利用 和 下载的文件。例如,假如要从 stabilityai/stable-diffusion-xl-base-1.0 下载所有 safetensors 文件,但 FP16 精度的文件除外:--include--exclude
  1. huggingface-cli download stabilityai/stable-diffusion-xl-base-1.0 --include "*.safetensors" --exclude "*.fp16.*"*
复制代码
2.2.2下载到本地文件夹

从 Hub 下载文件的推荐(也是默认)方法是利用 cache-system。但是,在某些环境下,您希望下载文件并将它们移动到特定文件夹。这对于使工作流程更接近 git 命令提供的内容很有效。您可以利用选项来执行此作。--local-dir
将在本地目录的根目录下创建一个文件夹,其中包罗有关已下载文件的元数据。假如文件已经是最新的,则可以防止重新下载文件。假如元数据已更改,则会下载新的文件版本。这使得 针对仅提取最新更改进行了优化。.cache/huggingface/local-dir
  1. huggingface-cli download adept/fuyu-8b model-00001-of-00002.safetensors --local-dir fuyu
复制代码
2.3官网下载

起首在官网创建access Tokens

在shell中,登录和下载
  1. huggingface-cli login
  2. #输入创建的access Tokens
  3. #理论命令,但是allow-patterns会报错,不加这个又不知道怎么指定模型
  4. huggingface-cli download unsloth/deepseek-r1-gguf --local-dir "本地路径" --repo-type model --allow-patterns "*r1-q4_k_m*"
复制代码
2.4镜像下载

从官网险些不可能下载下来。
注:从镜像源下载,不需要登录也不需要access token。
从上述官网或者镜像网站找到要下载的版本,取红字内里的表示文字。

整个下载模子,以DeepSeek-R1:671b 1.25bit量化版本为例
  1. #指定镜像网站入口
  2. export HF_ENDPOINT=https://hf-mirror.com
  3. #使用要下载的版本,替换下述粗体部分即可
  4. huggingface-cli download unsloth/DeepSeek-R1-GGUF --include "*IQ1_M*" --local-dir ~/deepseek/unsloth
复制代码
指定单个文件下载,以DeepSeek-R1:671b 4bit量化版本为例
  1. huggingface-cli download unsloth/DeepSeek-R1-GGUF DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00008-of-00009.gguf  --local-dir /home/hank8s/deepseek/unsloth
复制代码
大火的Qwen_QwQ-32B
  1. export HF_ENDPOINT=https://hf-mirror.com
  2. huggingface-cli download bartowski/Qwen_QwQ-32B-GGUF Qwen_QwQ-32B-Q4_0.gguf --local-dir /home/hank8s/deepseek/bartowski
复制代码

3.加载模子


  • GGUF 分片文件的定名需遵照固定格式:模子名-分片编号.gguf(如 DeepSeek-R1-Q4_K_M-00001-of-00009.gguf)。所有分片文件必须位于同一目录,且文件名中的编号需连续、完整。
  • 直接指定主模子路径 在 llama.cpp 中,只需指定 恣意一个分片文件路径底子模子名(不带编号的部门),程序会主动加载所有分片。例如:
3.2利用llama-cli交互运行

  1. #加载Q4量化版本
  2. llama-cli  -t 48 -m  unsloth/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf -c 4096
  3. #--no-mmap 的话会直接把模型拉到内存里
  4. #-t 48 使用 48 个线程
  5. #-c 4096 context 设置为 4k
  6. #通过 --n-gpu-layers 参数限制 GPU 加速层数(若支持 GPU)
复制代码
备用
  1. #加载Q1量化版本
  2. llama-cli  -t 48 -m   unsloth/DeepSeek-R1-UD-IQ1_M/DeepSeek-R1-UD-IQ1_M-00001-of-00004.gguf -c 4096 --no-mmap
  3. #加载Q8量化本本
  4. llama-cli  -t 48 -m   /nfsdata/deepseek/unsloth/DeepSeek-R1-Q8_0/DeepSeek-R1.Q8_0-00001-of-00015.gguf -c 4096 --no-mmap
复制代码
备用
  1. #加载QwQ模型
  2. llama-cli  -t 48 -m   ~/deepseek/bartowski/Qwen_QwQ-32B-Q8_0.gguf -c 4096 --no-mmap
  3. llama-cli  -t 12 -m   Qwen_QwQ-32B-Q8_0.gguf -c 4096 --no-mmap  --n-gpu-layers 10
复制代码
3.3利用llama-server运行模子

  1. llama-server -t 48 -m ./DeepSeek-R1-Q8_0/DeepSeek-R1.Q8_0-00001-of-00015.gguf \
  2.              -c 4096 --no-mmap \
  3.              --host 0.0.0.0 --port 9090
复制代码
3.4评测模子速率

指令
  1. #Q4量化
  2. llama-bench --model unsloth/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf  --n-gen 128 --batch-size 2048
  3. #Q8量化
  4. llama-bench --model /nfsdata/deepseek/unsloth/DeepSeek-R1-Q8_0/DeepSeek-R1.Q8_0-00001-of-00015.gguf  --n-gen 128 --batch-size 2048
  5. #Q1.25量化
  6. llama-bench --model unsloth/DeepSeek-R1-UD-IQ1_M/DeepSeek-R1-UD-IQ1_M-00001-of-00004.gguf  --n-gen 128 --batch-size 2048
  7. #Qwen_QwQ-32B
  8. llama-bench --model ~/deepseek/bartowski/Qwen_QwQ-32B-Q4_0.gguf  --n-gen 128 --batch-size 2048
复制代码
备用测试指令
  1. llama-bench --model ~/deepseek/bartowski/Qwen_QwQ-32B-Q4_0.gguf \
  2. --n-gen 128 --batch-size 512 --ubatch-size 128 --threads 48 --numa isolate --mmap 1 --cpu-strict 1
复制代码
参数



  • CPU严酷模式: 启用 (--cpu-strict 1)
  • 批处理大小 (batch size): 512
  • 子批处理大小 (ubatch size): 128
  • NUMA 隔离: 启用 (--numa isolate)
  • 内存映射 (mmap): 启用 (--mmap 1)
3.4.1 DeepSeek-R1:671b-Q4量化 对比分析 (与 Qwen2 32B Q4_0 模子)

模子推理性能 (pp512)生成性能 (tg128)Qwen2 32B Q4_071.26 tokens/s13.98 tokens/sDeepSeek2 671B Q4_K31.85 tokens/s9.08 tokens/s 结果

备注:利用--n-gen 128 --batch-size 2048测试,生成性能为8点多tokens/s。

3.4.2 DeepSeek-R1:671b-Q1.25量化

测试结果与 Q4利用--n-gen 128 --batch-size 2048测试,生成性能为8点多tokens/s。
这个ai解释说是由于cpu浮点-整数性能以及整数不同bit的性能是差不多的,所以结果是接近的,乃至Q1.25还不如Q4。

3.4.3Qwen_QwQ-32B-Q4测试结果

测试场景吞吐量 (tokens/s)pp512 (推理性能)71.26 ± 0.08tg128 (生成性能)13.98 ± 0.01


4.后记

4.1后记1-Ollama跑deepseek:671b

题目:回答第二个题目,肯定瓦解,希望Ollama好好优化下。
4.2后记2

windows下利用LM Studio运行即可,由于上述下载的是gguf模子,与LM Studio运要求的模子格式划一。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表