跳到主要内容

使用KTransformer微调DeepSeek-V3-671B超大规模MoE模型

更新时间:2025-11-06 15:11:00
预置模型使用超便捷高性能GPU卡KTransformers超大规模MoE模型LoRA微调
信息

DeepSeek-V3-671B是一款性能比肩顶尖闭源模型的6710亿参数开源MoE大模型,它通过创新的MLA和MoE架构在训练上实现了高效稳定,并借助轻量化微调与部署技术,彻底打破了其在个人及中小企业中实际应用的高成本壁垒。

当前,以DeepSeek-V3、Qwen2.5-MoE为代表的开源超大模型正不断突破性能上限,但其千亿级参数与高昂的显卡需求,也为广大研究者和开发者带来了巨大的微调门槛。

为破解这一难题,可以借助LLaMA Factory Online平台与专为Transformer模型设计的高效推理工具库KTransformers。该工具库以其轻量、高速和卓越的框架兼容性为核心优势,通过GPU-CPU异构计算、动态显存调度等关键技术,将DeepSeek-V3-671B这类超大规模MoE模型的微调资源需求,从原本必需的十余张H800专业显卡,显著降低至仅需2~4张消费级的RTX 4090显卡与高内存CPU环境,从而在有限资源下实现了巨型模型的轻量化微调。

前提条件

  • 用户已经获取LLaMA Factory Online平台账户和密码,如果需要帮助或尚未注册,可参考注册账户完成注册。
  • 当前账号的余额充裕,可满足模型微调服务的需要。点击可了解最新的活动费用信息,或前往充值,如需了解更多请联系我们

配置概览

配置参数配置项是否预置说明
模型DeepSeek-V3-671B-Chat总参数量达6710亿,单token仅激活370亿参数,兼顾性能与效率。
数据集NekoQA-10K否(提供下载链接)面向猫娘语言建模的对话数据集。
GPUH800*4(推荐)-模型规模较大,建议配置足够显存。
微调方法lora-显著降低计算与存储成本,兼具高性能与部署灵活性。

操作步骤

步骤一:KTransformers环境配置

  1. 使用已注册的LLaMA Factory Online账号登录平台,选择[实例空间]菜单项,进入实例空间页面,例如下图所示。

    SwanLab对比图

  2. 单击上图“开始微调”按钮,进入[实例启动]页面,配置以下参数,然后单击“启动”按钮,启动实例。

    • 选择镜像:系统默认镜像lf0.9.4-tf4.57.1-torch2.8.0-cu12.6-1.1(如图①)。
    • 资源配置:选择GPU,推荐卡数为4卡(如图②)。
    • 选择价格模式:本实践选择“极速尊享”(如图③),不同模式的计费说明参考计费说明

    SwanLab对比图

  3. 实例启动后,单击[VSCode处理专属数据]页签,进入VSCode编辑页面。

  4. 配置环境并安装依赖项。

    a. 在VSCode页面,单击页面上方菜单栏的“Terminal > New Terminal”,新建一个终端。

    b. 执行如下命令,为KTransformers单独创建一个虚拟环境并激活该环境。

    conda create -n Kllama python=3.10
    conda activate Kllama

    c. 执行如下命令,安装Linux系统下的标准库和GCC编译器依赖,通常用于解决KTransformers安装/运行时的 “缺失libstdc++”、“编译器版本不兼容” 等问题。

    conda install -y -c conda-forge libstdcxx-ng gcc_impl_linux-64

    d. 执行如下命令, 安装CUDA 11.8运行时Runtime,用于为KTransformers提供GPU加速支持(KTransformers依赖CUDA实现Transformer模型的高效推理)。

    conda install -y -c nvidia/label/cuda-11.8.0 cuda-runtime

    e. 执行如下命令,下载安装llamafactory。

    git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
    cd LLaMA-Factory
    pip install -e ".[torch,metrics]" --no-build-isolation

    f. 替换llamafactory源码文件,单击下载loader.py文件,并放至/workspace/envs/weclone/lib/python3.10/site-packages/llamafactory/data目录下进行替换。

    g. 单击链接下载ktransformers,选择“ktransformers-0.4.1+cu128torch28fancy-cp310-cp310-linux_x86_64”版本进行下载。

    下载完成后上传至/workspace目录下(如图①),并执行如下命令安装ktransformers(如图②)。

    pip install /workspace/ktransformers-0.4.1+cu128torch28fancy-cp310-cp310-linux_x86_64.whl

    SwanLab对比图

    注意

    整个安装过程大约需要2min。

    h. 单击链接下载flashatten,选择“flash_attn-2.8.3+cu12torch2.8cxx11abiTRUE-cp310-cp310-linux_x86_64”版本进行下载。

    下载完成后上传至/workspace目录下(如图①),并执行如下命令安装flashatten(安装②)。

    pip install /workspace/flash_attn-2.8.3+cu12torch2.8cxx11abiTRUE-cp310-cp310-linux_x86_64.whl

    SwanLab对比图

    i. (可选)KTransformers会自动使用Triton加速库来运行模型,如果您需要使用flash_infer来加速,执行如下命令,安装flash_infer。

    git clone https://github.com/kvcache-ai/custom_flashinfer.git
    pip install custom_flashinfer/

步骤二:数据处理

本实践使用的数据集为NekoQA-10K,是一个面向大语言模型的猫娘对话数据集,共包含10,000条QA对话,所有回答均遵循统一的猫娘人设:

  • 称呼用户为“主人”
  • 在句尾添加特定口癖(如“喵~”、“no desu”、“的说喵”)
  • 保持可爱、撒娇、二次元风格

该数据集的主要用途是研究大语言模型的“猫娘味”塑造能力,为微调、对话风格迁移、拟人化交互研究提供素材。

  1. 单击下载NekoQA-10K数据集,数据集下载完成后,需上传至LLaMA-Factory Online平台的“文件管理”中。具体操作,可参考SFTP上传下载完成数据集上传。

    SwanLab对比图

  2. 数据集检测。

    a. 进入LLaMA-Factory Online平台,单击“控制台”,单击左侧导航栏的“文件管理”。

    b. 单击目标数据集右侧“操作”列的"数据集检测",检测数据集。如下图所示,若“数据集格式检测”结果显示“符合”,则表示数据集符合格式要求。

    开始微调

步骤三:模型训练

使用KTransformers作为backend,微调超大规模MoE模型。在微调前,您还需要配置如下信息。

  1. 对于微调任务,推荐使用AMX指令集加速,您可以执行如下命令,查看CPU是否支持AMX指令集,回显如下图所示信息,表示您的CPU支持AMX加速指令集。

    lscpu | grep amx

    SwanLab对比图

  2. 单击链接下载DeepSeek-V3-Chat文件,下载完成后重命名为DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml,并上传至/workspace目录下(如图①)。

    SwanLab对比图

  3. 修改AMX精度,AMX精度支持BF16/Int8,修改方式如上图所示,在上述的DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml文件中(如图①)补充如下信息(如图②)。

    - match:
    name: "^model\\.layers\\..*\\.mlp\\.experts$"
    replace:
    class: ktransformers.operators.experts.KTransformersExperts # custom MoE Kernel with expert parallelism
    kwargs:
    prefill_device: "cpu"
    prefill_op: "KExpertsTorch"
    generate_device: "cpu"
    generate_op: "KSFTExpertsCPU"
    out_device: "cuda"
    backend: "AMXInt8" # or "AMXBF16" or "llamafile" (default)
  4. 微调参数配置。 在终端新建一个名称为deepseek3_lora_sft_kt的yaml文件,配置如下内容,如下图所示。

    微调参数配置
    ### model
    model_name_or_path: /shared-only/models/deepseek-ai/DeepSeek-V3
    trust_remote_code: true

    ### method
    stage: sft
    do_train: true
    finetuning_type: lora
    lora_rank: 8
    lora_target: all

    ### dataset
    dataset: identity
    template: deepseek
    cutoff_len: 2048
    max_samples: 100000
    overwrite_cache: true
    preprocessing_num_workers: 16
    dataloader_num_workers: 4

    ### output
    output_dir: saves/Kllama_deepseekV3
    logging_steps: 10
    save_steps: 500
    plot_loss: true
    overwrite_output_dir: true
    save_only_model: false
    report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow]

    ### train
    per_device_train_batch_size: 1
    gradient_accumulation_steps: 8
    learning_rate: 1.0e-4
    num_train_epochs: 3.0
    lr_scheduler_type: cosine
    warmup_ratio: 0.1
    bf16: true
    ddp_timeout: 180000000
    resume_from_checkpoint: null

    ### ktransformers
    use_kt: true # use KTransformers as LoRA sft backend
    kt_optimize_rule: /wprkspace/DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml
    cpu_infer: 32
    chunk_size: 8192

    您需要根据实际情况配置如下参数:

    配置参数配置说明配置示例
    model_name_or_path训练用的基模型路径。/shared-only/models/deepseek-ai/DeepSeek-V3
    dataset训练使用的数据集名称。/workspace/WeClone/model_output
    output_dir保存训练输出结果saves/Kllama_deepseekV3
    kt_optimize_rule提供了大量默认的YAML文件来控制KTransformers的放置策略。/wprkspace/DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml

    其中,对kt_optimize_rule参数的DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml文件名和功能的解释说明如下:

    文件名字段说明
    DeepSeek-V3-Chat对应的不同模型。
    sft微调所用的放置策略,其他为推理所用。
    amx使用AMX指令集进行CPU运算,其他为llamafile。
    multi-gpu使用GPU进行模型并行(显存共担)。

    开始微调

  5. 参数配置完成后,执行如下命令,进行模型训练,训练结果如下图所示。

    输出会保存在output_dir中,默认为safetensor格式,并且保留adapter.json等配套内容以便后续加载。

    cd /workspace/LLaMA-Factory
    USE_KT=1 llamafactory-cli train /workspace/deepseek3_lora_sft_kt.yaml

    SwanLab对比图

步骤四:模型对话

  1. 在配置文件deepseek3_lora_sft_kt.yaml中配置如下内容。

    model_name_or_path: opensourcerelease/DeepSeek-V3-bf16
    adapter_name_or_path: saves/Kllama_deepseekV3
    template: deepseek
    infer_backend: ktransformers # choices: [huggingface, vllm, sglang, ktransformers]
    trust_remote_code: true

    use_kt: true # use KTransformers as LoRA sft backend to inference
    kt_optimize_rule: examples/kt_optimize_rules/DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml
    cpu_infer: 32
    chunk_size: 8192

    您需要根据实际情况配置如下参数:

    配置参数配置说明配置示例
    model_name_or_path基模型路径。/shared-only/models/deepseek-ai/DeepSeek-V3
    adapter_name_or_pathadapter路径,safetensors场景填文件所在目录,GGUF场景填文件路径。saves/Kllama_deepseekV3
    kt_optimize_rule提供了大量默认的YAML文件来控制KTransformers的放置策略。/wprkspace/DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml
  2. 在终端执行如下命令,进行微调前和微调后的模型对话。

    llamafactory-cli chat /workspace/deepseek3_lora_sft_kt.yaml

    训练后设置

    微调后的Assistant回答更加专业,了解user需求后,简短地回问索取用户信息,并回复订票的结果。整个流程更加贴合常见的订票人工客服操作标准,可明显观察到Assistant学习到了订票客服的画风和话术。

观察微调后的模型与原生模型的对话结果,发现:微调前的Assistant订票回复冗长、侧重通用指引且信息索取被动,仅提供操作建议不直接处理订票业务;微调后的Assistant话术简洁、符合人工客服标准,能主动针对性索取关键信息并直接反馈订票结果,业务聚焦度与客服角色贴合度显著提升。

  1. 在终端执行如下命令,生成微调后模型的API,用于批量生成并评测指标。

    API_PORT=8000 llamafactory-cli api /wprkspace/deepseek3_lora_sft_kt.yaml

总结

KTransformers与LLaMA Factory Online平台的深度融合,以DeepSeek-V3(671B MoE架构)为基模型,通过KT专属AMX加速内核与LoRA轻量化微调技术的协同优化,实现了对超大规模MoE模型的高效低成本定制。该方案在有限硬件条件下,能够快速构建具备领域专业知识与交互逻辑的模型能力,显著降低了微调门槛。其在实践中表现出的“极致显存优化、高速训练效率与低操作复杂度”三位一体优势,为MoE大模型在工业场景中的规模化落地提供了具备高可行性的技术路径。