跳到主要内容

基于Qwen2.5-14B-Instruct打造WeClone专属的数字分身

更新时间:2025-11-05 17:04:00
预置模型使用超便捷高性能GPU卡WeClone数字分身LoRA微调

WeClone是一款聚焦 “个人数字分身创建” 的工具型项目,核心能力是基于个人导出的聊天记录,打造具有用户专属语言风格与习惯的聊天机器人数字分身。

依托LLaMA Factory Online大模型训练微调平台,该平台支持按需自定义创建GPU/CPU实例,可一键启动匹配需求的计算资源。其高性能GPU能满足模型高精度训练需求,同时提供 “JupyterLab”和“VS Code” 等开发环境,方便用户在CPU实例上完成聊天记录的预处理与模型调试。基于此平台,WeClone可调用Qwen2.5-14B-Instruct模型,通过LoRA微调技术,让模型高效学习并复刻用户的语言习惯,使其经微调后的模型可直接接入聊天机器人,实现 “用户专属数字分身” 的实时交互功能。

前提条件

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

配置概览

配置参数配置项是否预置说明
模型Qwen2.5-14B-Instruct经过指令微调,参数量约140亿 (14B),支持长上下文对话与高效LoRA微调,适配单/多卡部署,可用于个人数字分身、轻量对话机器人等场景,能精准理解意图并复刻用户表达习惯。
数据集weclone_air_dialogue否(提供下载链接)航空公司票务客服对话。
GPUH800*1(推荐)--
微调方法lora-显著降低计算与存储成本,兼具高性能与部署灵活性。

操作步骤

步骤一:WeClone环境配置

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

    SwanLab对比图

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

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

    SwanLab对比图

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

  4. 下载WeClone。

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

    b. 然后进入/workspace目录执行以下命令,下载WeClone(如图①),下载完成后默认生成一个WeClone目录(如图②)。

    git clone https://github.com/xming521/WeClone.git

    SwanLab对比图

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

    a. 执行如下命令,为WeClone单独创建一个虚拟环境。

    conda create -n weclone python=3.10

    b. 执行如下命令,激活自定义的环境。

    conda activate weclone

    c. 执行如下命令,进入WeClone目录,在新创建的虚拟环境中安装依赖包。

    cd WeClone
    pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple/
    提示

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

    d. 单击下载zh_core_web_sm-3.8.0.tar.gzen_core_web_sm-3.8.0.tar.gz模型,存放在/workspace/WeClone目录下(如下图所示),然后执行如下命令,安装Spacy中英文模型。

    提示

    在数据预处理中,会使用到Spacy模型,如遇下载缓慢卡顿,可以考虑预先手动上传中/英文语料处理的Spacy模型,并通过指定路径进行安装。本项目预先准备好了zh_core_web_sm-3.8.0.tar.gzen_core_web_sm-3.7.1.tar.gz这两个模型文件,通过以下命令分别安装这两个模型:

    pip install zh_core_web_sm-3.8.0.tar.gz -i https://pypi.tuna.tsinghua.edu.cn/simple/
    pip install en_core_web_sm-3.8.0.tar.gz -i https://pypi.tuna.tsinghua.edu.cn/simple/

    SwanLab对比图

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

    pip install llamafactory>=0.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/

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

    g. 安装rich包。

    pip install rich -i https://pypi.tuna.tsinghua.edu.cn/simple/

    h. (可选)执行如下命令,安装DeepSpeed包。

    注意

    仅多卡训练时需要安装该包。

    pip install deepspeed -i https://pypi.tuna.tsinghua.edu.cn/simple/

    i. 执行如下命令,拷贝配置文件,并重命名。

    注意

    初始时Weclone项目内,并不包含配置文件settings.jsonc,需要您将配置模板settings.template.jsonc(如图②)复制一份,并重命名为settings.jsonc(如图③),原settings.template.jsonc可留作参考文件。配置文件默认读取路径:WeClone/settings.jsonc。

    cp /workspace/WeClone/settings.template.jsonc /workspace/WeClone/settings.jsonc

    SwanLab对比图

步骤二:数据处理

本实践使用的数据集为用户的个人聊天记录,可以是纯文本对话,也可以是多模态对话(文本+图片)。

为了方便用户快速体验效果,本实践提供了一个简单的英文航空订票客服场景对话数据集,其中assistant角色是航空公司订票客服,会对user的问询提供专业的订票服务。此数据集来自HuggingFace开源数据集:google/air_dialogue,已对其中的信息进行处理,您可以按照如下步骤直接下载数据集并进行微调操作。

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

    SwanLab对比图

  2. 数据集检测。

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

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

    开始微调

  3. 返回终端, 配置make_dataset_args参数。由于当前选取的数据集为英文,因此需要在配置文件settings.jsonc中的make_dataset_args字段内配置language字段为en,如下图所示。

    提示

    如果使用Telegram对话数据,需要将自己的from_id写入配置文件telegram_args字段中的my_id字段(如图②),请根据自己的数据情况和训练需求,编辑配置文件。

    make_dataset_args参数详情
        "make_dataset_args": {
    //数据处理配置
    "platform": "telegram", //chat,telegram
    "language": "en", // 聊天常用语言: zh(中文) 或 en(英文)
    "telegram_args": {
    "my_id": "user8149809561"
    },
    "include_type": [
    "text"
    ],
    "blocked_words": [ // 禁用词
    "name",
    "password",
    "//....."
    ],
    "add_time": false,
    "single_combine_strategy": "time_window", // 单人组成单句策略
    "qa_match_strategy": "time_window", // 组成qa策略
    "single_combine_time_window": 2, // 单人组成单句时间窗口(分钟),
    "qa_match_time_window": 5, // 组成qa时间窗口(分钟),
    "combine_msg_max_length": 2048, // 组合后消息最大长度 配合cutoff_len 使用
    "messages_max_length": 2048, // messages最长字符数量 配合cutoff_len 使用
    "clean_dataset": {
    "enable_clean": false, //是否过滤数据集
    "clean_strategy": "llm",
    "llm": {
    "accept_score": 2, //可以接受的llm打分阈值,1分最差,5分最好,低于此分数的数据不会用于训练
    "enable_thinking": true
    }
    },
    "online_llm_clear": false,
    "base_url": "https://xxx/v1",
    "llm_api_key": "xxxxx",
    "model_name": "xxx", //建议使用参数较大的模型,例如DeepSeek-V3
    "clean_batch_size": 10,
    "vision_api": {
    "enable": false, // 设置为 true 来开启此功能
    "api_key": "xxx",
    "api_url": "https://xxx/v1", // 兼容OpenAI的API地址
    "model_name": "xxx", // 要使用的多模态模型名称,例如qwen-vl-max
    "max_workers": 5 // 并行调用API的线程数,最多不要超过8
    }
    }

    开始微调

步骤三:模型训练

  1. 模型训练参数配置,在终端打开上文中已复制的配置文件settings.jsonc,配置如下参数:

    common_args参数解释和配置如下(如图①):

    配置参数配置说明配置示例
    model_name_or_path训练用的基模型路径。/shared-only/models/Qwen/Qwen2.5-14B-Instruct
    adapter_name_or_pathadapter路径(也是SFT的输出路径和后续推理时加载的checkpoint路径)。如不想加载lora adapter,可以将此参数注释掉。/workspace/WeClone/model_output
    template基模型的对话模板名称,如Qwen系列模型是qwen或者qwen2_vl(多模态)qwen
    default_system数据处理时添加的system prompt,可以根据实际情况使用英文/中文。Please act like a human being, don't say you are artificial intelligence.

    train_sft_args参数解释和配置如下(如图②):

    配置参数配置说明配置示例
    dataset微调使用的数据集名称。weclone_air_dialogue
    dataset_dir存放有dataset_info.json文件的路径。/workspace/llamafactory/data
    save_steps如按steps保存,此参数设置每多少步保存一次。100
    num_train_epochs总训练轮数。2
    flash_attn如需启用,设置为"fa2"。fa2
    deepspeed多卡训练时,需要指定deepspeed配置文件路径。-

    SwanLab对比图

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

    conda activate weclone
    cd /workspace/WeClone
    weclone-cli train-sft

    SwanLab对比图

步骤四:模型对话

启动WeClone的API服务

在终端执行如下命令,启动WeClone的推理服务(API服务)。如下图所示,已成功启动API服务。

conda activate weclone
cd /workspace/WeClone
weclone-cli server

SwanLab对比图

模型对话

API服务启动成功后,配置如下问题进行微调前和微调后的模型对话。

  1. 在/workspace/WeClone/dataset/eval目录下新建对话文件(如图①),对话内容如下所示。

    User:"Hello.",
    User:"My name is Emily Edwards.",
    User:"I need some help in my flight ticket reservation to attend a convocation meeting, can you please help me?",
    User:"Thank you and my dates are 06/12 and back on 06/14.",
    User:"The airport codes are from DFW to IAD.",
    User:"Sure.",
    User:"Yes, do proceed with booking.",
    User:"Thank you for your assistance in my flight ticket reservation.",
    User:"You are welcome."
  2. 在配置文件settings.jsonc中(如图②)的test_model_args字段下修改json路径为上述新建的对话文件路径(如图③)。

    SwanLab对比图

    提示

    生成模型回答时,会读取配置文件中infer_args字段下的生成参数,可以自定义。如使用vllm框架进行加速,其配置信息会从vllm_args下读取。

API服务启动成功后,新建一个终端,执行如下命令,进行微调后的模型对话。

conda activate weclone
cd /workspace/WeClone
weclone-cli test-model

模型的生成结果保存至:/workspace/WeClone/test_result-my.txt目录下,如下图所示。

注意
  • 如需进行多次对话测试,请将先前的输出文件test_result-my.txt重命名,防止被覆盖。
  • 模型服务从配置文件settings.jsonc的common_args字段内的adapter_name_or_path字段获取加载的模型信息,如需修改加载的模型,请编辑配置文件。微调训练完,直接运行,即会加载训练的最新checkpoint。因此这里无需修改配置文件。

训练后设置

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

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

总结

WeClone依托LLaMA Factory Online平台,以Qwen2.5-14B-Instruct为基模型,借助LoRA轻量化微调技术,精准复刻了航空公司订票客服的专业语言风格与业务处理逻辑,有效验证了其基于特定场景对话数据、快速构建高贴合度专属数字分身的核心能力,为个性化客服类数字分身的落地提供了高效实践路径。