DeepSeek 本地部署最佳实践(二):llama.cpp + Open WebUI 部署 unsloth 量化版模型

大模型向量数据库机器学习

点击下方

卡片

,关注“

慢慢学AIGC

前言

本文是 DeepSeek 本地部署最佳实践系列文章的第二篇,在前文基础上继续介绍如何在 显存受限的 GPU 环境 运行 Unsloth 量化版 DeepSeek R1 模型

本文介绍的内容不适合在笔记本或纯 CPU 环境运行,建议至少配备一块 24 GB 显存的 GPU 和 64 GB 以上内存,本地磁盘空间建议预留 200 GB。

拥有 8 卡 GPU 及更高配置硬件的玩家,可以直接进入第三篇跑满血版 R1,模型输出效果更佳。

1、llama.cpp 项目简介

picture.image

llama.cpp 是一个基于 C/C++ 的开源项目,仅需 C/C++ 编译器,无复杂第三方依赖,

目前可在 Windows、Linux、macOS 及 ARM 设备(如树莓派、手机)上部署和运行。

llama.cpp

通过

C++ 底层优化(如多线程、SIMD 指令集)

和模型量化技术,支持在资源受限的设备(如普通 CPU、嵌入式设备)上实现大模型的轻量化推理。

上一篇介绍的 Ollama 项目是对 llama.cpp 的包装,通过遍布全球的 CDN 实现模型快速部署和一键启动,避免了手动编译和安装 llama.cpp 以及模型权重下载、转换和启动推理服务的繁琐过程。Ollama 代码库中可以找到 llama.cpp 的源码:

picture.image

本文后面将介绍如何手动编译 llama.cpp 并启动量化版 DeepSeek R1 推理服务,适合有一定开发基础的同学。如果感到理解困难,建议回到第一篇直接使用 Ollama + Open WebUI 部署蒸馏版模型。

2、Unsloth 量化版模型简介

picture.image

前文了解过,满血版 DeepSeek R1 和 DeepSeek V3 一样均为 671B 参数量, 使用 FP8 精度推理占用显存约 700GB,需要 8 张 H200 GPU 或 16 张 H100 才能装下 ,而在 上一代 A100 GPU 上由于硬件不支持 FP8 精度推理,需要先转为 BF16 或 FP16 精度, 占用显存约 1400 GB ,或者 32 张卡 才能装下。这道显存墙挡住了绝大多数开发者。

那手头只有游戏卡的玩家完全没有希望跑 DeepSeek 671B 模型了么?

别急,unsloth 帮你解决显存焦虑!

UnslothAI 是由兄弟两人 Daniel Han 和 Michael Han 创办的公司,以提供 LLM 低成本微调框架 unsloth 著称。Michael 曾就职于大模型六小龙之一——月之暗面,于 2023 年底和哥哥 Daniel 共同创业并担任 CTO。

picture.image

picture.image picture.image

左:CEO Daniel Han,右:CTO Michael Han

减小模型内存/显存占用最有效的方法之一就是量化(Quantization)。在实践中,量化的主要目标是降低 LLM 权重的精度,通常从 16 位降低到 8 位、4 位甚至后面介绍的 1.58 位!对量化技术感兴趣的读者可以参考这篇《使用 GPTQ、AWQ 和 Bitsandbytes 进行模型量化》。

UnslothAI 发现简单粗暴地对 DeepSeek R1 所有层进行量化会完全破坏模型,导致 无限循环乱码输出, 于是

采用

动态量化方法

通过

选择性地 将某些层量化为更高的位数(如 4 位),并将大多数 MoE 层保持为 1.5 位

成功地将 DeepSeek 的 R1 671B 参数模型量化至 131GB,较满血版权重大小减少了 80%,同时仍保持较高的功能性。UnslothAI 的量化版

权重已上传到 HuggingFace:

https://huggingface.co/unsloth/DeepSeek-R1-GGUF

1.58 位量化版模型适用于 160GB 显存快速推理( 2 个 H100 80GB GPU ),其吞吐量大约为 每秒 140 个 tokens,单用户推理则为每秒 14 个 tokens 。运行 1.58 位 R1 最低配置甚至不需要 GPU,只需 20GB 内存的 CPU 即可运行,但速度较慢。为了获得最佳性能,推荐“显存+内存”的总和不少于 80GB。

picture.image

量化版模型共 4 个,1.58 bit 量化模型尺寸最小,但质量最差,2.51 bit 量化模型尺寸较大,但效果最好,这符合直觉。我们先以 1.58 bit 为例进行步骤拆解,其他权重读者可自行尝试。本文最后将给出四种量化模型针对同一提问的输出效果。

通过代码下载 1.58 bit 量化模型的示例:


          
# 运行前先安装依赖:
          
# pip install huggingface_hub hf_transfer
          
from huggingface_hub import snapshot_download
          
snapshot_download(
          
    repo_id = "unsloth/DeepSeek-R1-GGUF",  # 指定Hugging Face仓库
          
    local_dir = "DeepSeek-R1-GGUF",         # 指定本地存储目录
          
    allow_patterns = ["*UD-IQ1_S*"],        # 仅下载1.58位版本
          
)
      

下载完成后目录结构示例:


          
DeepSeek-R1-GGUF/
          
├── DeepSeek-R1-UD-IQ1_S/
          
│   ├── DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf
          
│   ├── DeepSeek-R1-UD-IQ1_S-00002-of-00003.gguf
          
│   ├── DeepSeek-R1-UD-IQ1_S-00003-of-00003.gguf
      

后续步骤中请根据实际路径调整。例如:若脚本位于/Users/Downloads,则完整路径应为:

/Users/Downloads/DeepSeek-R1-GGUF/DeepSeek-R1-UD-IQ1_S/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf

同理,将上面代码中 IQ1_S 改为 IQ1_MIQ2_XXSQ2_K_XL 可以分别下载 1.73bit、2.22bit、2.51bit 量化版模型。下载前务必保证本地磁盘空间充足,4 个模型下载完总大小约 682 GB。

3、使用 llama.cpp 运行 1.58 bit 量化版模型

接下来介绍如何编译和运行 llama.cpp。笔者使用环境为 Ubuntu 22.04,已提前安装了 GPU 驱动和 CUDA Toolkit。

llama.cpp Github 地址:

https://github.com/ggerganov/llama.cpp


          
git clone https://github.com/ggerganov/llama.cpp
          
cd llama.cpp
          
# 纯 CPU 编译,适合无 GPU 环境
          
cmake -B build
          
cmake --build build --config Release
          
# CUDA 编译,适合带 GPU 环境
          
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86;89;90"
          
cmake --build build --config Release
      

编译完成后,生成的二进制文件位于 llama.cpp/build/bin 目录

picture.image

我们接下来主要用 llama-server 这个二进制文件和第二节下载的量化版权重。通过下面命令行

启动 llama-server 服务:


          
# 假设当前位于 llama.cpp 目录
          
export LD_LIBRARY_PATH=$(pwd)/build/bin:$LD_LIBRARY_PATH
          
./build/bin/llama-server \
          
  --model ./DeepSeek-R1-GGUF/DeepSeek-R1-UD-IQ1_S/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf \
          
  --host 0.0.0.0 \
          
  --port 10000 \
          
  --ctx-size 32768 \
          
  --n-gpu-layers 61
      

参数解释:

  • --model : 设置为下载的的 GGUF 文件实际路径;
  • --host : 默认为 localhost,只能本机访问服务,不允许其它节点访问;设置为 0.0.0.0 可被所有节点访问,适合本文情况;
  • --port : 可根据实际可用端口调整;
  • --ctx-size : 上下文长度(token 数),硬件允许时可增加但需注意显存/内存占用,本文设置为 32K,最大可设置为 128K;
  • --n-gpu-layers : GPU 加速层数,取决于可用显存容量(参考下面推荐表),设置为 0 时直接采用纯 CPU 处理,需要足够大的内存容量;

picture.image

  • 在单张 24 GB 显存 GPU (如 RTX 4090)上跑 1.58 bit 量化模型时,可设置 --n-gpu-layers 7;
  • 在单张 80 GB 显存 GPU(如 H100)上跑 1.58 bit 量化模型时,可设置 --n-gpu-layers 33;
  • 在 2 张 80 GB 显存 GPU(如 2x H100)上跑 1.58 bit 量化模型时,可设置 --n-gpu-layers 61,此时整个模型均可放入显存;
  • 当出现报错:ggml_backend_cuda_buffer_type_alloc_buffer: allocating 79360.00 MiB on device 0: cudaMalloc failed: out of memory 时,可以 **减小

--n-gpu-layers 或 --ctx-size 来适应硬件**

,前者影响 生成速度 ,后者影响 模型效果 ,需要反复多次尝试达到软硬件最佳平衡。

当运行日志打印以下内容,说明 llama-server 服务启动成功:


        
            

          
 main: server 
 is
  listening 
 on
  http:
 //0.0.0.0:10000 - starting the main loop
 
        
      

服务器成功启动后,将通过以下地址提供 OpenAI 兼容 API:


        
            

          
 http
 :
 //[服务器 IP]:10000
 
        
      

务必保持该终端运行状态,以维持模型服务。如果异常退出,服务将终止。

4、将量化版模型服务接入 Open WebUI

前一篇我们介绍了 Open WebUI 的基本使用,模型服务采用本地 Ollama 启动的蒸馏版小模型。本节我们介绍如何打通 WebUI 和前面小节启动的量化版模型服务。这是一个典型的“客户端——服务器”架构,Open WebUI 运行在 macOS 笔记本上,相当于客户端(前端),而 llama-server 运行在 GPU 服务器上(后端),客户端通过发送 HTTP 请求到服务器获得量化版模型的响应,实现人机交互过程。

配置步骤:

  1. 点击左下角用户图标,进入 Open WebUI 管理员面板

picture.image

  1. 依次点击“设置” -> “外部连接” -> “管理 OpenAI API 连接” -> “添加一个连接”

picture.image

注意将上图 “[服务器IP]”替换为你真实的服务器 IP,例如 10.1.1.2,那么就填 http://10.1.1.2:10000/v1。

密钥填 none 表示不需要密钥。其他保持默认,保存即可。

picture.image

连接建立后,即可通过 Open WebUI 界面直接与 DeepSeek-R1 量化版模型交互!在模型选择菜单中,可以找到名字为“

./DeepSeek-R1-GGUF/DeepSeek-R1-UD-IQ1_S/DeepSeek-R1-UD-IQ1_S

-00001

of-00003.

gguf

” 的新模型,这个就是上一节启动的 llama-server 服务拉起的量化版 R1 模型,如下图所示。

picture.image

在 Open WebUI 中输入对话内容,后台可以看到日志信息如下:


          
slot launch_slot_: id  0 | task 3064 | processing task
          
slot update_slots: id  0 | task 3064 | new prompt, n_ctx_slot = 1024, n_keep = 0, n_prompt_tokens = 61
          
slot update_slots: id  0 | task 3064 | kv cache rm [2, end)
          
slot update_slots: id  0 | task 3064 | prompt processing progress, n_past = 61, n_tokens = 59, progress = 0.967213
          
slot update_slots: id  0 | task 3064 | prompt done, n_past = 61, n_tokens = 59
          
^@slot      release: id  0 | task 3064 | stop processing: n_past = 922, truncated = 0
          
slot print_timing: id  0 | task 3064 |
          
prompt eval time =     634.94 ms /    59 tokens (   10.76 ms per token,    92.92 tokens per second)
          
       eval time =   41480.10 ms /   862 tokens (   48.12 ms per token,    20.78 tokens per second)
          
      total time =   42115.04 ms /   921 tokens
          
srv  update_slots: all slots are idle
          
srv  log_server_r: request: POST /v1/chat/completions 10.2.201.10 200
      

可以看到 平均生成速度为 20.78 tokens/s ,可满足日常对话需求。

当使用 纯 CPU 推理部署 上面模型时, 速度只有 4.04 tokens/sGPU 相比 CPU 加速 5 倍以上

模型效果评测

在做模型效果评测时我们通常会使用相同提示词分别在不同聊天窗口和模型对话,但这种操作比较低效。Open WebUI 支持在同一个聊天窗口同时对话多个模型。

在上方模型列表处,点击“+”可以添加一个模型,通过下拉菜单选择即可。下图我们一共添加了 4 个模型,即第二节介绍的 UnslothAI 提供的四种量化模型,按照容量从大到小排序。

picture.image

提示词: 写一首五言诗,押“ao”韵,内容包括元宵和团圆等。

2.51bit 量化模型(Q2_K_XL)输出

<思考过程>

嗯,用户让我写一首五言诗,押“ao”韵,内容要包括元宵和团圆。首先,我得确定五言诗的结构,通常是四句,每句五个字。押“ao”韵的话,我得先想好哪些字属于这个韵。比如“闹”、“绕”、“好”、“笑”这些字,可能可以用在句尾。

接下来是主题,元宵和团圆。元宵节通常有灯笼、汤圆、家庭团聚这些元素。我需要把这些元素融入诗中,同时保持每句五个字。第一句可能需要点出元宵节,比如“元夕灯如昼”,这里“元夕”指元宵,“灯如昼”形容夜晚的灯光。然后第二句可以描述家人团聚,比如“团圆乐陶陶”,这里“陶陶”押韵,表达欢乐。

第三句和第四句需要进一步展开,可能描述汤圆或者活动。比如“糯粉裹蜜馅”,这里“糯粉”指汤圆皮,“蜜馅”是甜馅料。最后一句要收尾,表达情感,比如“心暖共今宵”,强调温暖和共享的时刻。

检查一下押韵情况,四句中可能需要第二句和第四句押韵,或者一、二、四句。比如“陶陶”和“今宵”可能不押同一个韵,需要调整。可能把第四句改成“欢笑满今朝”,这样“陶”和“朝”都押“ao”韵。或者调整第三句的结尾,确保韵脚正确。

再考虑对仗和结构,五言诗通常讲究对仗工整。前两句可能不对仗,但后两句可以。比如“糯粉裹蜜馅”对“心暖共今宵”可能不够工整,需要调整词语。或许改成“糯粉包甜馅,心暖共良宵”,这样“甜馅”和“良宵”更对应,同时押“ao”韵。

再检查每句的字数是否符合,是否有生硬的地方。可能需要调整用词,使诗句更流畅自然。比如“元夕灯如昼,团圆笑语绕。糯粉包甜馅,心暖共良宵。”这样每句五个字,韵脚在第二句和第四句,押“ao”韵(绕、宵),可能“绕”是“rao”,“宵”是“xiao”,是否同韵?可能需要注意,普通话中“绕”和“宵”的韵母都是“ao”,所以可以算押韵。不过可能“绕”是iao,需要确认。普通话中,“绕”的拼音是rào,韵母是ao,所以没问题。“宵”是xiāo,韵母是iao,可能不同韵。这可能是个问题。需要调整韵脚,确保都是押ao韵。比如“绕”是ao,而“宵”是iao,可能不准确。可能需要换韵脚,比如第四句用“共今朝”(zhāo),这样韵母是ao,押韵正确。

所以调整后的版本可能是:元夕灯如昼,团圆乐陶陶。糯粉裹蜜馅,心暖共今朝。

这里“陶陶”和“今朝”都押ao韵。检查每句的字数和结构是否合适。可能需要进一步润色,比如第三句“裹蜜馅”可能不够流畅,改成“包蜜馅”更顺口。最终版本:

元夕灯如昼,团圆乐陶陶。糯粉包甜馅,心暖共今朝。

这样每句五个字,押ao韵(陶、朝),内容涵盖元宵节元素和团圆,符合用户要求。

<思考结束>

《元夕暖吟》 元夕灯如昼,团圆乐陶陶。糯粉包甜馅,心暖共今朝。

注:本诗以元宵节团圆场景为背景,通过“灯如昼”与“糯粉”勾画节日氛围,末句“心暖共今朝”既呼应“ao”韵脚,又升华团聚温情。五言结构简练明快,“甜馅”暗喻生活甘美,“共今朝”传递对当下欢聚的珍视,符合传统节日诗凝练含蓄的审美特质。

2.22bit 量化模型(IQ2_XXS) 输出

<思考过程>

嗯,用户让我写一首五言诗,押“ao”韵,内容要包括元宵和团圆。首先,我需要确定五言诗的结构,通常是四句,每句五个字。然后押“ao”韵,得注意每句最后一个字的韵脚。接下来要融合元宵和团圆的主题。元宵节通常有灯笼、汤圆、家人团聚等元素,所以得把这些意象融入进去。

首先考虑韵脚,比如“ao”韵的常用字有“闹”、“高”、“宵”、“圆”等。可能需要检查每个句子的最后一个字是否符合这个韵。然后,第一句可能需要点明节日,比如“元夕灯如昼”,这里“昼”可能不符合“ao”韵,得调整。可能需要改成“元夕灯火耀”,这样“耀”虽然不是“ao”韵,但可能需要找其他字。或者“元夕灯千盏”,押韵可能需要再调整。

再想想,元宵节也叫上元节,或许用“上元”开头。比如“上元灯火耀”,然后第二句“团圆共此宵”,这里“宵”押韵,但“ao”韵可能需要更准确。或者“团圆聚今朝”,“朝”是“ao”韵,这样可能更好。接着第三句可以描述汤圆,比如“糯香浮玉碗”,第四句总结情感,“笑语满庭飘”。这样韵脚是“朝”、“飘”,可能不完全押韵,需要调整。

可能需要重新排列句子,确保每句最后一个字都是“ao”韵。比如:

元夕月华高, 团圆乐陶陶。汤圆盛玉碗, 灯火映家好。

这里“高”、“陶”、“碗”、“好”中,“高”和“陶”是“ao”韵,但“碗”和“好”不是。这不行,得改后两句的韵脚。比如第三句“汤圆盛玉碗”改为“汤圆甜心绕”,“绕”是“ao”韵。第四句“灯火映欢笑”,“笑”是“iao”,接近但可能不算严格。或者“灯火照庭燎”,“燎”是“iao”,但可能不太合适。或许第四句用“欢声透云霄”,“霄”是“iao”,也是押韵。这样四句的韵脚是“高”、“陶”、“绕”、“霄”,可能不完全一致,但接近。

再试另一个版本:

上元灯火耀, 家人聚今朝。糯丸盛玉碗, 笑语满庭飘。

这里“耀”、“朝”、“碗”、“飘”,只有“朝”是“ao”韵,其他不押。需要调整。比如:

元宵月正高,团圆共此宵。汤圆香满室,灯火映家饶。

这里“高”、“宵”、“室”、“饶”中,“高”和“饶”是“ao”韵,但中间两句的韵脚不押。可能需要每句最后一个字都押“ao”韵。比如:

元宵灯火耀,团圆乐滔滔。汤圆香满室,笑语透云霄。

这里“耀”、“滔”、“室”、“霄”中,“滔”和“霄”是“ao”韵,但第一句的“耀”是“iao”,可能不算严格。可能需要所有句子的最后一个字都严格押“ao”韵,比如“高”、“涛”、“绕”、“霄”。但这样可能有些困难,需要寻找合适的词汇。

或许更好的方式:

元夕月华高,阖家聚今朝。糯香盈玉碗,灯火映庭燎。

这里“高”、“朝”、“碗”、“燎”中,“高”和“朝”是“ao”韵,“燎”是“iao”,可能可以接受。但第三句的“碗”不押韵,需要调整。比如第三句改为“汤圆甜似膏”,“膏”是“ao”韵,但可能不太合适。或者“糯香溢满袍”,但“袍”是“ao”韵,描述香味溢出沾到衣服上,可能不太准确。

可能需要更灵活处理,允许每两句押韵,比如隔句押韵。但用户要求押“ao”韵,可能需要一韵到底。再试:

上元灯火耀,阖家庆良宵。汤圆甜心绕,笑语满堂飘。

这里“耀”、“宵”、“绕”、“飘”中,“宵”和“飘”是“iao”和“ao”的混用,可能不算严格。严格来说,可能需要所有韵脚都是同一个韵母。比如使用“ao”韵,如“高”、“涛”、“绕”、“霄”。但可能需要调整语句,使之更自然。

或者:

元宵月正高,团圆共此宵。糯香浮玉碗,灯彩映庭燎。

这里“高”、“宵”、“碗”、“燎”,仍然不统一。看来可能需要更仔细选词。例如:

元夕灯如潮,家人聚今朝。汤圆盛玉碗,欢声震云霄。

这里“潮”、“朝”、“碗”、“霄”,其中“潮”和“朝”是“ao”韵,后面“碗”不押,但最后“霄”是“iao”韵,可能勉强押韵。不过可能用户允许近韵,但最好严格。再调整:

元宵灯火摇,团圆乐陶陶。汤圆香满室,笑语透重霄。

这里“摇”、“陶”、“室”、“霄”,前两字是“ao”韵,后两字可能不押,但可能可以接受。或者:

元夜月华高,阖家共今宵。糯丸甜似蜜,灯彩映城郊。

这里“高”、“宵”、“蜜”、“郊”,只有“高”和“郊”是“ao”韵,中间不押。看来需要更多的调整。或许用更宽松的押韵方式,或者重新构思。

或许换结构,比如:

元夕灯市闹,团圆在今朝。汤圆甜心绕,欢歌入云霄。

这里“闹”、“朝”、“绕”、“霄”都是“ao”或“iao”韵,可能更合适。但需要确认是否符合五言诗的平仄要求,不过用户可能更关注押韵和内容。这样可能满足要求。

最终可能需要权衡押韵和内容,确保每句最后一个字都是“ao”韵,同时自然融入元宵和团圆的元素。可能需要多次修改,比如:

元宵灯火耀,团圆乐陶陶。汤圆盛玉碗,笑语满城飘。

虽然“耀”和“陶”是“ao”韵,但后两句的“碗”和“飘”不押,可能需要改后两句:

元宵灯火高,团聚在今朝。汤圆香满室,欢庆共此宵。

这里“高”、“朝”、“室”、“宵”中,“高”和“朝”是“ao”韵,“宵”是“iao”,可能接近。或者:

元夕月悬高,家人聚此宵。汤圆甜似蜜,灯彩映城壕。

这里“高”、“宵”、“蜜”、“壕”,“高”和“壕”是“ao”韵,中间两句不押,但可能勉强接受。

或许最终的版本是:

元宵灯火耀,团聚在今朝。糯丸盛玉碗,笑语透云霄。

这里“耀”、“朝”、“碗”、“霄”中,“耀”是“iao”,“朝”是“ao”,“霄”是“iao”,可能算作押韵。虽然不完全统一,但可能符合用户的要求。或者用户希望严格押“ao”韵,可能需要更严格的选词,比如:

元宵月正高,团圆共今朝。汤圆甜心绕,灯火映城壕。

这样四句都押“ao”韵,但“壕”可能不太合适。或者:

元宵灯火摇,团聚乐陶陶。汤圆香满室,欢声震九霄。

这里“摇”、“陶”、“室”、“霄”中,“摇”和“陶”是“ao”韵,“霄”是“iao”,可能可以接受。

综合这些考虑,可能需要一个折中的方案,确保主要押“ao”韵,同时内容符合要求。可能最终的诗如下:

元夕灯如潮,阖家聚今朝。

糯香浮玉碗,笑语满城飘。

这里“潮”、“朝”押“ao”韵,后两句的“碗”、“飘”不押,但可能用户允许一定的灵活性。或者调整后两句:

元夕灯如潮,阖家聚今朝。

汤圆甜似蜜,欢庆共此宵。

这里“潮”、“朝”押韵,后两句“蜜”、“宵”不押,可能需要再改:

元夕灯如潮,阖家聚今朝。

糯丸盛玉碗,欢声透云霄。

这样“潮”、“朝”押“ao”,“碗”不押,但“霄”是“iao”,可能接近。可能用户会接受,但严格来说需要四句都押同一个韵。可能需要用更严格的韵脚,例如:

元宵月正高,团圆共此宵。

汤圆甜似蜜,灯火映城壕。

这里“高”、“宵”、“蜜”、“壕”,只有前两句押韵,后两句不押,不太好。看来需要更多的调整,可能需要牺牲部分内容来确保押韵。例如:

元夕灯千涛,阖家聚今朝。

糯香盛玉碗,笑语满城郊。

这里“涛”、“朝”、“郊”都是“ao”韵,但中间第三句“碗”不押,可能需要改第三句:

元夕灯千涛,阖家聚今朝。

汤圆甜似蜜,欢庆满城郊。

这样四句的韵脚是“涛”、“朝”、“蜜”、“郊”,但后两句不押,仍需调整。

或许更好的方法是使用“ao”韵的常用字,如“高”、“朝”、“涛”、“饶”、“袍”等,再组织诗句。例如:

元夕月华高,团圆聚今朝。

汤圆香满室,灯火映城壕。

这里“高”、“朝”、“壕”押韵,但第三句“室”不押,可能需要改:

元夕月华高,团圆聚今朝。

糯香盈玉碗,灯火映城郊。

仍然不押韵。看来必须确保每句最后一个字都押“ao”韵,可能需要重新构思:

元夕灯火耀,团聚在今朝。

汤圆甜心绕,笑语满城壕。

这样“耀”、“朝”、“绕”、“壕”中,“耀”和“绕”是“iao”,“朝”和“壕”是“ao”,可能混用,但或许可以接受。或者:

元宵月正高,阖家聚此宵。

糯丸甜似蜜,灯彩映城壕。

这里“高”、“宵”、“蜜”、“壕”中,“高”和“壕”押韵,中间不押。可能无法做到四句全押,只能两两押韵,但五言诗通常要求偶句押韵,首句可押可不押。例如:

元宵灯火高(不押),团聚在今朝(押)。

汤圆香满室(不押),笑语透云霄(押)。

这样第二句和第四句押“ao”韵,可能符合传统格式。用户可能接受这种方式。因此,最终的版本可能是:

元宵灯火耀,团聚在今朝。

汤圆香满室,笑语透云霄。

这里“耀”不押,但第二句“朝”和第四句“霄”押韵(虽然“霄”是“iao”)。如果用户要求严格押“ao”,可能需要调整,例如:

元宵月正高,团聚在今朝。

汤圆香满室,灯火映城壕。

这样第二句“朝”和第四句“壕”押“ao”韵,首句“高”也押,但第三句不押。不过五言诗通常偶句押韵,所以可能可以接受。

<思考结束>

《元夕团圆吟》 元夕灯千涛,阖家聚今朝。糯香浮玉碗,笑语满城郊。

注:诗中“涛”喻花灯如潮,“朝”点团圆时刻,“玉碗”托出元宵香甜,“城郊”扩展欢庆场景。四句均押“ao”韵,通过灯火、家宴、食俗、欢语四重意象,立体呈现元宵节的团圆意境。结句以“满城郊”收束,将家庭小团圆延伸至城乡共庆的宏大画面,暗含四海同欢之意。

1.73bit 量化模型(IQ1_M)输出

<思考过程>

好的,用户让我写一首五言诗,押“ao”韵,内容要包括元宵和团圆。首先,我需要明确五言诗的格式,每句五个字,通常四句或八句。这里用户没指定句数,可能八句更合适,能更充分表达主题。押“ao”韵,我得找合适的韵脚,比如“高”、“遥”、“朝”、“涛”等。

接下来是内容部分,元宵和团圆。元宵节通常有灯笼、猜灯谜、吃汤圆、家庭团聚等元素。团圆是核心主题,要突出家庭团聚的温暖。可能需要用一些意象,比如灯笼、汤圆、家庭聚会的情景。

然后考虑结构,先写元宵节的场景,再转到团圆。比如前四句描述节日景象,后四句转向家庭团聚。押韵方面,每句末尾的字要押“ao”,可能需要调整用词,确保韵脚一致。

比如第一句可能用“元宵灯火高”,点明主题,同时押“高”字。第二句描述夜晚,“长夜乐逍遥”,押“遥”。第三句可以引入家庭元素,“合家齐相聚”,押“聚”可能需要调整,因为“聚”不押“ao”韵,这里得换,比如“笑语绕梁朝”,押“朝”。第四句描述温馨,“温馨似春涛”,押“涛”。

接下来后四句,可以进一步深化团圆主题,比如“汤圆香满室,情谊比天高”,押“高”再次呼应。然后描述长辈和孩子的互动,“尊长慈颜展,孩童喜眉梢”,押“梢”可能不押“ao”,需要调整,比如“孩童笑颜飘”,押“飘”可能不行,得找合适的词,比如“孩童乐陶陶”,押“陶”是“ao”韵。

最后总结,“佳节共欢庆,团圆福寿遨”,押“遨”作为结尾,符合韵脚。

检查每句的韵脚是否一致,高、遥、朝、涛、高、陶、遨,这里可能有问题,因为“遥”是“ao”韵,但“朝”是“zhao”,“涛”是“tao”,都是同韵。高(gao)、遥(yao)、朝(zhao)、涛(tao),其实在汉语拼音中,这些都属于“ao”韵,押韵是可以的。不过“陶”是tao,也是同韵,遨是ao,没问题。

再检查内容是否连贯,是否有重复或不符合的地方。可能需要调整句子的顺序或用词,使整体更流畅。例如,第二句“长夜乐逍遥”有点抽象,可以换成更具体的节日活动,比如“灯谜乐逍遥”或者“欢歌乐逍遥”。第三句“合家齐相聚”比较直白,可以更诗意,比如“阖家同欢聚”。第四句“温馨似春涛”可能有点突兀,春涛通常指春天的波涛,这里可能用“温馨如春潮”更合适。

修改后,整体结构更紧凑,意象更贴切,韵脚也更统一。这样应该能满足用户的要求,既押“ao”韵,又包含元宵和团圆的元素。

<思考结束>

《元宵团圆》 元宵灯火高,长夜乐逍遥。阖家同欢聚,温馨如春潮。汤圆香满室,情谊比天高。尊长慈颜展,孩童喜眉梢。佳节共欢庆,团圆福寿遨。

1.58bit 量化模型(IQ1_S)输出

<思考过程>

好的,用户让我写一首五言诗,押“ao”韵,主题包括元宵和团圆。首先,我需要确定五言诗的格式,每句五个字,四句组成。然后,考虑押“ao”韵,也就是韵脚要落在“ao”这个音上。

接下来,主题是元宵和团圆。元宵节通常有灯笼、汤圆、家庭团聚的元素。我需要把这些元素融入诗中,同时保持押韵。可能的关键词包括:元宵、团圆、灯笼、汤圆、家庭、温暖等。

然后,开始构思每句的内容。第一句可以描述元宵的场景,比如“元宵喜气扬”。第二句可以描绘家庭团聚,比如“团圆情意长”。第三句可能需要描述环境或活动,比如“灯辉映笑脸”。第四句总结,比如“家暖胜春阳”。

检查韵脚,第二和第四句的末尾是“长”和“阳”,但“长”是“ang”韵,而“阳”是“iang”,可能不符合“ao”韵。所以需要调整,比如将第二句改为“团圆情意牢”,但“牢”可能不太合适。或者寻找其他押“ao”的字,比如“高”、“好”、“早”等。

再调整,比如:元宵喜气高, 团圆情意好。灯辉映笑脸, 家暖胜春朝。

这样,韵脚是“高”、“好”、“朝”,但“朝”是“ao”,而“高”是“ao”,“好”是“ao”,所以可能需要更严格押韵。可能改为:

元宵喜气绕, 团圆情意牢。灯辉映欢笑, 家暖胜春朝。

但“绕”、“牢”、“朝”都是“ao”韵,但“牢”和“绕”可能不太自然。再想想,或许用“元宵喜气扬,团圆情意长。灯辉映笑脸,家暖胜春阳。”但韵脚是“扬”、“长”、“阳”,都是“ang”韵,不符合要求。

可能需要重新选词,确保每句的最后一个字都是“ao”韵。比如:

元宵喜气飘, 团圆情意牢。灯辉映笑貌, 家暖胜春朝。

这样,韵脚是“飘(iao)”、“牢(ao)”、“貌(ao)”、“朝(ao)”。不过“飘”是“iao”,可能不完全匹配。或许用“高”:“元宵喜气高,团圆情意牢。灯辉映笑貌,家暖胜春朝。” 这里“高、牢、貌、朝”都是“ao”或“iao”,可能还是不太准确。

可能需要寻找更合适的押韵字。比如:

元宵喜气绕(rao), 团圆情意好(hao)。灯辉映笑貌(mao), 家暖胜春朝(zhao)。

这样,四个句子的最后一个字都是押“ao”韵。不过“绕、好、貌、朝”都是正确的押韵,但“貌”可能不太合适,或许换成“笑颜”或其他词。

最终可能调整为:

元宵喜气高, 团圆情意好。灯辉映欢笑, 家暖胜春朝。

这样,韵脚是“高(gao)”、“好(hao)”、“笑(xiao)”、“朝(zhao)”。虽然“笑”是“iao”,但可能不够严格。或许需要更严格的押韵,比如全部使用“ao”结尾的字,如“高、好、早、朝”等,但可能需要调整句子结构。

例如:

元宵喜气扬(yang)→ 不合韵,改为“元宵喜气高(gao)”。团圆情意牢(lao)。灯辉映笑貌(mao)。家暖胜春朝(zhao)。

这样四句的尾字都是“ao”韵,虽然“牢”可能不够诗意,但可以接受。或者:

元宵喜气绕, 团圆情意好。灯辉映华照, 家暖春意早。

这里“绕、好、照、早”都是“ao”韵,但“春意早”可能不太符合主题。需要再调整。

最终可能写成:

元宵喜气高, 团圆情意牢。灯辉映月好, 家暖春阳耀。

但“耀”是“yao”,可能还是不太准确。可能需要更仔细地选词,确保所有尾字都是“ao”韵。例如:

元宵喜气浓, 团圆情意融。灯辉映星空, 家暖春意重。

但“浓、融、空、重”都不押“ao”韵。看来这个任务有点挑战,可能需要更灵活处理。或许允许押相近的韵,或者使用“iao”韵,如“高、好、笑、朝”等,虽然不完全严格,但在诗歌中有时允许。

综合考虑,可能最终诗作为:

元宵喜气高, 团圆情意好。灯辉映欢笑, 家暖胜春朝。

尽管韵脚不完全严格,但整体符合主题和意境。用户可能满意这样的结果。

<思考结束>

《庆元宵》 元宵喜气扬,团圆情意长。灯辉映笑貌,家暖胜春阳。

对比上面结果,发现 1.58bit 量化模型表现最离谱,思考过程还算正常,但最后输出却完全没有遵循指令。其它几个量化模型表现中规中矩。

有条件的读者,建议继续阅读本系列文章第三篇:满血版 DeepSeek R1 部署最佳实践。

参考链接

【1】 UnslothAI 官方博客

https://unsloth.ai/blog/deepseekr1-dynamic

【2】 llama.cpp 手动编译文档

https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md


扫描下方

二维码

,关注“

慢慢学AIGC

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
IDC 大模型应用落地白皮书
大模型技术已深度融入业务实践,各企业期望其释放更大商业价值。 但大模型落地之路面临许多挑战和顾虑。 如何精准对接业务需求与发展蓝图,制定切实可行的大模型落地策略? IDC发布首个大模型应用策略与行动指南 一为您揭晓一
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论