deepseek本地部署,RAG本地知识库构建,模型微调

Windows本地部署

  1. 下载LM studio
    下载地址
    下载之后打开软件可以看到有两种方式进行下载模型一种是访问Hugging Face地址或者魔塔社区地址
  2. 下载模型
  • 通过hugging face拉取模型 (ps:这里拉取的模型尽量是gguf格式如果不是可以去网上找下转换的脚本,如果这个网站下载速度慢或者卡顿选择镜像即可镜像地址

请添加图片描述

  • 选择模型

请添加图片描述

  • 加载模型
    请添加图片描述
  1. 在LM studio中下载
  • 下载模型
    请添加图片描述
  • 更换代理
    请添加图片描述

上述两种方法选一种即可,最后即可完成,直接在聊天窗口进行与模型对话
请添加图片描述

Linux本地部署

linux下我们采用ollama进行部署

  • 下载ollama
    打开终端 输入命令
curl -fsSL https://ollama.com/install.sh | sh
  • 启动ollama
    下载完毕后在终端输入命令
ollama serve

启动ollama

  • 拉取AI模型
    重新打开一个终端,确保ollama的服务已经开启终端输入
ollama pull deepseek-r1:1.5b

等待模型拉取完毕即可

  • 与模型对话
    终端输入
ollama run deepseek-r1:1.5b

即可与模型对话

RAG构建本地知识库

通过Anything LLM 构建本地知识库

  • 下载软件,地址
  • 选择模型,这里我使用了远程连接的方式,将模型部署到服务器上,本地下载Anything llm 去载入服务器端的模型,
    在这里插入图片描述
  • 内网穿透
    如果采用这种方式需要在服务器上下载coplar
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

验证是否安装成功

cpolar version

正常显示版本号即是成功
token认证,这个需要自己去注册一个账号申请
cpolar authtoken xxxxxxx
在这里插入图片描述
ollama 启动服务OLLAMA_HOST=0.0.0.0:11434 ollama serve
cpolar开启服务cpolar http 11434

  • ssh隧道
    本地电脑的终端(cmd / powershell / terminal等)中执行代理命令,其中root@123.125.240.15042151分别是实例中SSH指令的访问地址与端口,请找到自己实例的ssh指令做相应替换7860:127.0.0.1:7860是指代理实例内7860端口到本地的7860端口
ssh -CNg -L 7860:127.0.0.1:7860 root@123.125.240.150 -p 42151
远程访问

通过Anything llm远程访问
在这里插入图片描述
在这里插入图片描述
上面如果使用ssh方法,代理到本地之后,直接输入本地代理的地址即可,
最后创建工作空间自己选择本地的文章论文即可

模型微调

1. 准备硬件资源、搭建环境
  • 在云平台上租用一个实例(如 蓝耘,官网:地址
  • 云平台一般会配置好常用的深度学习环境,如 anaconda, cuda等等
2. 本机通过 SSH 连接到远程服务器
3. LLaMA-Factory 安装部署

LLaMA-Factory 的 Github地址:https://github.com/hiyouga/LLaMA-Factory

  • 克隆仓库
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
  • 切换到项目目录
cd LLaMA-Factory

创建 conda 虚拟环境(一定要 3.10 的 python 版本,不然和 LLaMA-Factory 不兼容,
如果当时在创建实例的时候选择了对应的版本,也可以不创建虚拟环境直接
在base环境里安装相关依赖)

conda create -n llama-factory python=3.10
  • 激活虚拟环境
conda activate llama-factory
  • 在虚拟环境中安装 LLaMA Factory 相关依赖(PS:如果不创建虚拟环境
    直接在base环境内执行这一步即可)
pip install -e ".[torch,metrics]"
注意:如报错 bash: pip: command not found ,先执行 conda install pip 即可
  • 检验是否安装成功
llamafactory-cli version
4. 启动 LLama-Factory 的可视化微调界面 (由 Gradio 驱动)
llamafactory-cli webui
5. 配置端口转发
  • 参照上面的步骤SSH隧道配置即可
6. 从 HuggingFace 上下载基座模型(这个是下载一般大模型的标准流程)

HuggingFace 是一个集中管理和共享预训练模型的平台 https://huggingface.co;
从 HuggingFace 上下载模型有多种不同的方式,可以参考:如何快速下载huggingface模型——全方法总结

  • 创建文件夹统一存放所有基座模型
mkdir Hugging-Face
  • 修改 HuggingFace 的镜像源
export HF_ENDPOINT=https://hf-mirror.com
  • 修改模型下载的默认位置
export HF_HOME=/root/lanyun-tmp/Hugging-Face
  • 注意:这种配置方式只在当前 shell 会话中有效,如果你希望这个环境变量在每次启动终端时都生效,可以将其添加到你的用户配置文件中(修改 ~/.bashrc~/.zshrc
  • 检查环境变量是否生效
echo $HF_ENDPOINT
echo $HF_HOME
  • 安装 HuggingFace 官方下载工具
pip install -U huggingface_hub
  • 执行下载命令
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
  • 如果直接本机下载了模型压缩包,如何放到你的服务器上?——在 蓝耘 上打开 JupyterLab 直接上传,或者下载软件通过 SFTP 协议传送
7. 可视化页面上加载模型测试,检验是否加载成功
  • 注意:这里的路径是模型文件夹内部的模型特定快照的唯一哈希值,而不是整个模型文件夹
/root/lanyun-tmp/Hugging-Face/hub/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-1.5B/snapshots/530ca3e1ad39d440e182c2e4317aa40f012512fa
8. 准备用于训练的数据集,添加到指定位置
  • 数据集配置描述中详细介绍了如何配置和描述你的自定义数据集
  • 按照格式准备用于微调的数据集 example.json,数据示例:
{
  "instruction": "计算这些物品的总费用。 ",
  "input": "输入:汽车 - $3000,衣服 - $100,书 - $20。",
  "output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。"
},
  • 修改 dataset_info.json 文件,添加如下配置:
"数据集名称": {
"file_name": "example.json"
},
  • 将数据集 example.json 放到 LLama-Factory 的 data 目录
9. 在页面上进行微调的相关设置,开始微调
  • 选择微调算法 Lora
  • 添加数据集 example
  • 修改其他训练相关参数,如学习率、训练轮数、截断长度、验证集比例等
    • 学习率(Learning Rate):决定了模型每次更新时权重改变的幅度。过大可能会错过最优解;过小会学得很慢或陷入局部最优解
    • 训练轮数(Epochs):太少模型会欠拟合(没学好),太大会过拟合(学过头了)
    • 最大梯度范数(Max Gradient Norm):当梯度的值超过这个范围时会被截断,防止梯度爆炸现象
    • 最大样本数(Max Samples):每轮训练中最多使用的样本数
    • 计算类型(Computation Type):在训练时使用的数据类型,常见的有 float32 和 float16。在性能和精度之间找平衡
    • 截断长度(Truncation Length):处理长文本时如果太长超过这个阈值的部分会被截断掉,避免内存溢出
    • 批处理大小(Batch Size):由于内存限制,每轮训练我们要将训练集数据分批次送进去,这个批次大小就是 Batch Size
    • 梯度累积(Gradient Accumulation):默认情况下模型会在每个 batch 处理完后进行一次更新一个参数,但你可以通过设置这个梯度累计,让他直到处理完多个小批次的数据后才进行一次更新
    • 验证集比例(Validation Set Proportion):数据集分为训练集和验证集两个部分,训练集用来学习训练,验证集用来验证学习效果如何
    • 学习率调节器(Learning Rate Scheduler):在训练的过程中帮你自动调整优化学习率
  • 页面上点击启动训练,或复制命令到终端启动训练
    • 实践中推荐用 nohup 命令将训练任务放到后台执行,这样即使关闭终端任务也会继续运行。同时将日志重定向到文件中保存下来
  • 在训练过程中注意观察损失曲线,尽可能将损失降到最低
    • 如损失降低太慢,尝试增大学习率
    • 如训练结束损失还呈下降趋势,增大训练轮数确保拟合
10. 微调结束,评估微调效果
  • 观察损失曲线的变化;观察最终损失
  • 在交互页面上通过预测/对话等方式测试微调好的效果
  • 检查点:保存的是模型在训练过程中的一个中间状态,包含了模型权重、训练过程中使用的配置(如学习率、批次大小)等信息,对LoRA来说,检查点包含了训练得到的 B 和 A 这两个低秩矩阵的权重
  • 若微调效果不理想,你可以:
    • 使用更强的预训练模型
    • 增加数据量
    • 优化数据质量(数据清洗、数据增强等,可学习相关论文如何实现)
    • 调整训练参数,如学习率、训练轮数、优化器、批次大小等等
11. 导出合并后的模型
  • 为什么要合并:因为 LoRA 只是通过低秩矩阵调整原始模型的部分权重,而不直接修改原模型的权重。合并步骤将 LoRA 权重与原始模型权重融合生成一个完整的模型
  • 先创建目录,用于存放导出后的模型
mkdir -p Models/deepseek-r1-1.5b-merged
  • 在页面上配置导出路径,导出即可
Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐