Linux+llama.cpp编译+DeepSeek-R1-UD-IQ1_S本地部署

1.llama.cpp安装

克隆llama.cpp

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

2.编译项目

cmake -DGGML_CUDA=on ..
cmake --build .

3.如果编译过程或者启动过程显示显存错误

warning: one possible reason is that llama.cpp was compiled without GPU support

3.1如果缺少nvcc

#查看是否存在nvcc,一般保存在/usr/local/cuda/bin/nvcc
which nvcc

#安装nvcc
sudo apt install nvidia-cuda-toolkit

#查看nvcc
nvcc --version

#配置nvcc环境
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH


#重新编译llama.cpp,删除掉历史编译文件,重新编译
cd llama.cpp/build
rm -f CMakeCache.txt
rm -rf CMakeFiles


cmake -DGGML_CUDA=on ..
cmake --build .


4.模型权重下载

可以查找适合自己电脑性能的模型版本

魔搭社区汇聚各领域最先进的机器学习模型,提供模型探索体验、推理、训练、部署和应用的一站式服务。https://modelscope.cn/models/unsloth/DeepSeek-R1-GGUF/files

from modelscope import snapshot_download


# 下载权重文件
snapshot_download(
  repo_id = "unsloth/DeepSeek-R1-GGUF",
  local_dir = "DeepSeek-R1-GGUF",
  allow_patterns = ["*UD-IQ1_S*"], # 仅仅下载权重文件 1.58bit
)

'''
# 如果需要下载模型参数文件
snapshot_download(
    repo_id="deepseek-ai/DeepSeek-R1",
    local_dir="DeepSeek-R1-GGUF-parameter",
    ignore_patterns=["*.safetensors"]
)
'''

5.启动DeepSeek-R1-UD-IQ1_S模型

#llama.cpp命令行测试
CUDA_VISIBLE_DEVICES=0,3,4,7 ./bin/llama-cli     
--model 模型地址/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf     
--cache-type-k q4_0     --threads 100 -no-cnv --prio 2     
--n-gpu-layers 28     --temp 0.6     --ctx-size 8192     
--seed 3407     --prompt "<|User|>100字幽默故事.<|Assistant|>"

#其中--thread和GPU根据自己的电脑性能填写
#这里我的CPU128线程,可以填到100
#我选择了4090*4,--n-gpu-layers 28
#如果单卡就是--n-gpu-layers 7

服务器端启动

#llama.cpp 服务端启动
CUDA_VISIBLE_DEVICES=0,4 ./bin/llama-server     --model 模型地址/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf     --cache-type-k q4_0  --n-gpu-layers 14     --temp 0.6     --ctx-size 8192      --port 8088
#如果需要地址号
--host 127.0.0.1

6.本地性能测试记录 llama.cpp测试DeepSeek-R1-UD-IQ1_S

treads/线程数

12

60

100

60

100

100

GPU

0

0

0

4090*2

4090*2

4090*4

提示词处理速度(token/s)

3.51

6.82

9.26

8.09

11.31

14.31

输出文本速度(token/s)

2.14

3.51

3.79

4.13

4.57

5.63

### 解决基于 llama.cpp 本地部署 DeepSeek-R1 模型时缺少上传附件功能的问题 为了使 Windows 7 用户能够成功部署并利用 DeepSeek-R1 模型,教程已经针对该环境进行了特定调整[^1]。然而,在实际应用过程中遇到了缺乏文件上传能力这一挑战。 #### 文件上传机制分析 通常情况下,Llama.cpp 并不自带图形界面或直接支持文件上传的功能。这是因为 Llama.cpp 主要专注于提供推理服务而非构建完整的应用程序框架。因此,当需要实现文件上传特性时,则需额外集成其他组件来补充此功能。 对于希望增加文件上传特性的用户来说,可以考虑采用以下几种方法: - **通过 Web 接口间接处理** 构建一个简单的 HTTP/HTTPS 服务器作为前端接口,允许用户提交文件到指定位置。Python 的 Flask 或 FastAPI 是两个轻量级的选择,易于配置且能快速搭建起所需的服务端逻辑。 ```python import os from flask import Flask, request, send_from_directory app = Flask(__name__) UPLOAD_FOLDER = './uploads' if not os.path.exists(UPLOAD_FOLDER): os.makedirs(UPLOAD_FOLDER) @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return "No file part", 400 file = request.files['file'] if file.filename == '': return "No selected file", 400 filename = secure_filename(file.filename) filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(filepath) # 这里可以根据需求调用 llm 处理函数 process_llm_with_uploaded_file(filepath) return f"File {filename} has been uploaded successfully.", 200 def process_llm_with_uploaded_file(path_to_file): pass # 实现具体的LLM处理流程 if __name__ == "__main__": app.run(debug=True) ``` - **命令行参数传递** 如果应用场景较为简单,也可以简化设计思路——即让用户先手动将待处理的数据放置于预设目录下,再启动 Llama.cpp 应用程序并通过命令行参数告知其输入路径。这种方式虽然不够直观友好,但对于某些场景可能是最简便有效的解决方案之一。 - **第三方库辅助开发** 利用 Python 中诸如 `streamlit` 等可视化工具包创建交互式的 GUI 页面,不仅可以让整个过程更加人性化,同时也更容易满足不同层次用户的操作习惯。Streamlit 提供了便捷的方式用于展示模型预测结果以及接收来自用户的反馈信息。 综上所述,尽管原生的 Llama.cpp 不具备内置的文件管理能力,但借助外部技术和开源项目完全可以克服这个障碍,并为用户提供满意的体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值