跳到主要内容

DeepSeek-R1-Distill LoRA微调指南,打造你自己的医疗专家

背景介绍

在追求轻量级大模型卓越性能的过程中,开发者和研究人员不断探索创新方法。今年以来,DeepSeek团队开源的成果尤为瞩目,尤其是在模型蒸馏领域的突破,赢得了业内的广泛认可。DeepSeek-R1-Distill-Qwen-7B 模型拥有70亿参数,文件大小约为15GB,展示了在保持高性能的同时显著减少模型规模的能力。

本实践将展示如何基于DeepSeek-R1-Distill-Qwen-7B蒸馏模型进行微调,以创建针对特定行业的高效应用模型,例如,在医疗行业领域,可以通过使用DeepSeek-R1-Distill-Qwen-7B作为基础模型,并结合medical-o1-reasoning-SFT数据集进行微调,来定制一个专门服务于医疗行业的高级模型。这一过程不仅能够提升模型在特定任务上的表现,同时也为其他行业的模型定制提供了参考路径。通过这种方式,可以有效地将前沿的大模型技术应用于实际场景中,解决具体的行业问题并推动技术创新。

重要

本实践以“北京一区”为例创建弹性集群,后续使用的镜像仓库等,也都属于“北京一区”。若您选择在其他智算中心(北京二区,北京三区等)开通弹性容器集群进行操作实践,请确认您的弹性容器集群和镜像仓库在同一个智算中心。不同镜像仓库地址如下所示。

  • 北京一区:registry.hd-01.alayanew.com:8443
  • 北京二区:registry.hd-02.alayanew.com:8443
  • 北京三区:registry.hd-03.alayanew.com:8443

前提条件

准备工作

开通弹性容器集群

弹性容器集群旨在满足人工智能场景下的资源和服务需求,为用户提供多智算中心的GPU资源、大容量存储和镜像仓库等AI专用产品。借助租户隔离技术,确保用户拥有一个安全可靠的云端开发与训练环境。

用户开通弹性容器集群的操作步骤可参看开通弹性容器集群章节所述。本实践弹性容器集群的资源配置至少需要满足以下表格中的要求。

配置项配置需求
GPUH800 * 1
CPU8核
内存100GB
磁盘200GB

本实践开通弹性容器集群的操作步骤如下所示。

  1. 使用已注册的企业账号登录Alaya NeW系统,选择[产品/弹性容器集群]菜单项,单击“新建集群”按钮,进入[弹性容器集群]配置页面。
  2. 配置基本信息,例如:集群名称,集群描述,智算中心,此次使用的集群配置如下所示。
  • 集群名称:jskfb-zhaolin
  • 智算中心:北京一区
  • 算力配置:选择H800,配额1卡。
  • 其余参数保持默认值。
  1. 弹性容器集群参数配置完成后,单击“立即开通”按钮,开通弹性容器集群操作完成,用户可在[资源中心/弹性容器集群]页面查看已创建的容器集群,弹性容器集群状态为“运行中”表示集群可正常使用.

准备镜像

提示

本次部署将使用Docker进行环境配置,请确保已正确安装Docker环境。如果需要帮助或了解具体的安装步骤,可参考安装Docker文档或者访问Docker Desktop产品页面下载最新版本的安装包。

本实践已预置了微调所需的镜像,用户可通过下面的步骤获取。

注意

请将以下命令中的镜像仓库用户名镜像仓库密码镜像仓库项目名替换为用户实际的镜像仓库用户名、密码及仓库项目名称。

  1. 下载符合操作系统的Docker Desktop,执行如下所示的命令,登录到指定的私有镜像仓库Harbor。示例如上图高亮①所示。
docker login https://registry.hd-01.alayanew.com:8443/ -u vc-app-market-view -p HKse563!
提示

如果用户已安装Docker环境,可直接跳过下载Docker Desktop的步骤,并进行登录私有镜像仓库的操作。

  1. 执行如下所示的命令,从registry.hd-01.alayanew.com:8443镜像仓库下载vc-app_market/unsloth:2025.2.15镜像,示例如下图高亮②所示。
docker pull registry.hd-01.alayanew.com:8443/vc-app_market/unsloth:2025.2.15
  1. 执行如下所示的命令,为下载后的镜像创建一个新的tag,示例如下图高亮③所示。
docker tag registry.hd-01.alayanew.com:8443/vc-app_market/unsloth:2025.2.15 registry.hd-01.alayanew.com:8443/[镜像仓库项目名]/unsloth:2025.2.15
  1. 执行如下所示的命令,登录到用户的私有仓库,本实践以北京一区为例,示例如下图高亮④所示。
docker login registry.hd-01.alayanew.com:8443 -u [镜像仓库用户名] -p [镜像仓库密码]
  1. 执行如下所示的命令。将镜像推送到用户的私有仓库,本实践以北京一区为例,示例如下图高亮⑤所示。
docker push registry.hd-01.alayanew.com:8443/[镜像仓库项目名]/unsloth:2025.2.15

alt text

提示

请根据您的实际配置情况,选择并填写相应的镜像仓库地址。确保您的弹性容器集群与所选镜像仓库位于同一智算中心。以下是各智算中心的仓库地址列表:

  • 北京一区:registry.hd-01.alayanew.com:8443
  • 北京二区:registry.hd-02.alayanew.com:8443
  • 北京三区:registry.hd-03.alayanew.com:8443

获取SwanLab API Key

SwanLab是一款开源且轻量级的AI模型训练可视化追踪工具。在本次微调任务中,我们将使用SwanLab记录整个微调过程。在开始之前,请确保您已经登录SwanLab平台。登录后,点击“设置/常规”,即可获取API Key,示例如下图所示。 alt text

安装Aladdin

Aladdin(Alaya AI Add-In)是开发者不可或缺的大模型开发工具,作为一款自主研发的IDE插件,它能够更高效地利用GPU资源进行代码调试和大规模模型的微调。

  1. 下载Aladdin插件,启动VS Code,点击左侧菜单栏的alt text标签,将下载好的Aladdin.vsix文件拖拽至扩展安装窗口,完成安装。更多有关Aladdin的操作用户可参考Aladdin使用手册

  2. 点击alt text图标,进入Aladdin登录首页,如下图所示,单击“Login”,系统会在Chrome浏览器打开智算操作系统登录页面,输入用户名密码登录Aladdin,登录后选择与镜像仓库相同的智算中心,本实践选择北京一区

    alt text

  3. 单击“Back to workspace”。进入Aladdin功能区,在ENVIRONMENTS(下图高亮②)功能区即可查看到已导入的unsloth镜像,如下图所示。

    alt text

下载示例代码及数据

medical-o1-reasoning-SFT数据集包含24K+条数据,本数据集包含三列数据,分别是:医疗问题,诊断过程,诊断结果,数据格式如下图蓝色高亮所示,是专为高级医学推理设计的大型语言模型(LLM)。 alt text

用户点击示例代码及数据即可获取此次微调的数据及代码。用户下载后将文件解压到本地。

操作步骤

  1. 在Aladdin的WORKSHOP功能区单击alt text图标新建一个Workshop作为本次微调任务的开发环境,示例如下图所示。

    alt text 本实践配置的参数配置及说明如下所示。

  • Name:medical-sft,用于唯一标识一个WORKSHOP。
  • Environment:unsloth,此处选择上述步骤已导入的镜像。
  • VKS:jskfb-zhaolin,此处选择Aladdin账户内的弹性容器集群。
  • PVC MOUNTS:两处均绑定pvc-capacity-userdata,SubPath配置分别为workspacemodel,ContainerPath配置分别为/workspace/model
  • 其余参数均保持默认值。
提示

为了防止数据丢失,建议用户在“PVC MOUNTS”配置中绑定持久化存储卷(PVC)。

  1. 参数配置完成后,单击“Save”按钮,系统自动打开一个新的VS Code窗口,下载相关插件,插件安装完成后,Aladdin Remote调试页面准备完成,点击“Terminal/NEW Terminal”菜单项,在终端页面执行以下命令,添加环境变量。
export HF_ENDPOINT=http://hfmirror.mas.zetyun.cn:8082
  1. 保持在上步同一页面,执行如下命令,下载此次微调所需的DeepSeek-R1-Distill-Qwen-7B大模型。关于下载模型如何加速的详细使用,可参考工具/模型下载加速文章所述。
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local-dir /model/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
  1. 保持在上步同一页面,按下Ctrl+Shift+P(Windows/Linux),打开命令面板,选择Python: Select Interpreter,在弹出的选项中选择Python 3.11.10 ('base") /opt/conda/bin/python,即可完成解释器选择操作。

  2. 保持在上步同一页面,点击“File/Open Folder”菜单项,在弹框输入“workspace”,示例页面如下图所示。单击“OK”按钮,进入Workspace列表页面。

    alt text

  3. 保持在上步同一页面,点击Workspace的alt text图标新建一个文件夹,本实践新建文件的名称为“medical-sft”,将已解压的代码和数据拖拽至新建的文件夹下,示例如下图所示。

    alt text

  4. 单击“medical-sft/sft.py”文件名称,打开“sft.py”文件内容,将获取SwanLab API Key的API Key添加到文件的代码中,示例如下图所示。

    alt text

  5. 单击文件名“medical-sft/run.sh”以打开“run.sh”文件。然后,在文件内容的任意位置右键,选择“Run Shell”选项,进入脚本运行环境参数配置页面,参照下图完成参数配置。参数配置完成后,单击“Submit”按钮。即可完成微调任务提交操作。

    alt text

  6. 登录SwanLab查看模型的训练过程,在模型训练过程中,一旦误差等关键参数落入用户预期的范围内,即可查看相应的模型问题解答。

    alt text

  7. 单击文件名“medical-sft/infer.py”以打开文件。然后,在文件内容的任意位置右键,选择“GPU Run”选项,进入脚本运行环境参数配置页面,参照下图完成参数配置,参数配置完成后,单击“Submit”按钮,系统弹出微调终端窗口,在该窗口用户可查看微调后的结果。

    alt text

针对同个问题“患者为40岁男性,头疼、发烧,还有腹泻,持续2天了。微调前的回答可参看微调前回答,微调后回答可参看微调后回答

总结

从上述微调结果可以明显看出,经过微调的模型在解决用户疑问方面表现更为出色,能够为用户提供更加精准和有效的指导。

本实践成功地将先进的大模型技术与Aladdin组件相结合,有效应对了具体的行业挑战,展示了前沿技术在实际场景中的应用实例,实现了从理论到实践的重要跨越。通过这种方式,我们不仅为用户提供了处理复杂问题的新思路,还展示了如何利用这些先进技术解决实际问题,为各行各业带来了创新解决方案。