当前位置: 首页 > news >正文

轻量化大模型微调工具XTuner指令微调实战(下篇)

接着上篇文章《轻量化大模型微调工具XTuner指令微调实战(上篇)》来接着写教程。

一、模型转换

模型训练后会自动保存成 PTH 模型(例如 iter_500.pth),我们需要利用 xtuner convert pth_to_hf 将其转换为 HuggingFace 模型,以便于后续使用。具体命令为:

xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}

# 例如:xtuner convert pth_to_hf ./config.py ./iter_500.pth ./iter_500_hf

xtuner convert pth_to_hf ./qwen1_5_1_8b_chat_qlora_alpaca_e3.py /root/autodl-tmp/project/day11/xtuner/work_dirs/qwen1_5_1_8b_chat_qlora_alpaca_e3/iter_4000.pth  /root/autodl-tmp/llm/hf

第1个参数CONFIG_NAME_OR_PATH:配置文件路径,也就是执行微调指令的配置文件。

第2个参数PTH:XTuner微调生成文件,给绝对路径。

第3个参数SAVE_PATH:模型转换保存的地方,需手动创建一个目录。

二、模型合并

如果您使用了 LoRA / QLoRA 微调,则模型转换后将得到 adapter 参数,而并不包含原 LLM 参数。如果您期望获得合并后的模型权重,那么可以利用 xtuner convert merge :

xtuner convert merge ${LLM} ${ADAPTER_PATH} ${SAVE_PATH}
# 例如:xtuner convert merge internlm/internlm2-chat-7b ./iter_500_hf ./iter_500_merged_llm


xtuner convert merge  /root/autodl-tmp/llm/Qwen/Qwen1.5-1.8B-Chat /root/autodl-tmp/llm/hf   /root/autodl-tmp/llm/Qwen1.5-1.8B-Chat-hf

第1个参数LLM:微调时选择的原始的大模型;

第2个参数ADAPTER_PATH:模型转换时保存的路径;

第3个参数SAVE_PATH:模型合并成功保存的路径,需手动创建一个目录;

三、验证模型效果

1、安装和运行LMDeploy推理框架

安装和运行的教程请看《Ollama、vLLM和LMDeploy这三款主流大模型部署框架》 。

2、Python写一个chat对话

写一个python代码,名字为:chat_to_llm.py

#多轮对话
from openai import OpenAI

#定义多轮对话方法
def run_chat_session():
    #初始化客户端
    client = OpenAI(base_url="http://localhost:23333/v1/",api_key="token-abc123")
    #初始化对话历史
    chat_history = []
    #启动对话循环
    while True:
        #获取用户输入
        user_input = input("用户:")
        if user_input.lower() == "exit":
            print("退出对话。")
            break
        #更新对话历史(添加用户输入)
        chat_history.append({"role":"user","content":user_input})
        #调用模型回答
        try:
            chat_complition = client.chat.completions.create(messages=chat_history,model="/root/autodl-tmp/llm/Qwen1.5-1.8B-Chat-hf")
            #获取最新回答
            model_response = chat_complition.choices[0]
            print("AI:",model_response.message.content)
            #更新对话历史(添加AI模型的回复)
            chat_history.append({"role":"assistant","content":model_response.message.content})
        except Exception as e:
            print("发生错误:",e)
            break
if __name__ == '__main__':
    run_chat_session()

LMDeploy默认的端口号是23333  ,api_key随便填写一个即可。

python chat_to_llm.py  # 运行python文件

用数据集里的input与大模型对话 ,效果还不错。

注意:

1、之所以使用LMDeploy,是因为XTuner与LMDeploy都是一家公司出品,使用的对话模版是一致的。

2、若使用vLLM等其他推理框架,请确保对话模版要一致,可以将XTuner的对话模版转成vLLM需要的jinja2格式的文件。

相关文章:

  • 昆明网站建设锐网培训seo哪家学校好
  • 成都抖音推广公司附子seo
  • 网站前台怎么做数据分析网
  • 电竞网站开发需求报告百度seo优化排名如何
  • 君临天下游戏网站开发者营销策略的重要性
  • 网站备案查询不出来美橙互联建站
  • 如何创建一个自行设计的nginx的Docker Image
  • 后端开发常见的面试问题
  • Ansible 实战:Roles,运维的 “魔法函数”
  • 基于FLask的共享单车需求数据可视化分析系统
  • Spring-AOP事务
  • [ctfshow web入门] web4
  • PDF转换:在线将PDF转PPT并且可编辑文字图片,超快速转换软件,无需下载
  • 通过Postman和OAuth 2.0连接Dynamics 365 Online的详细步骤
  • 区块链日记5 - Solana入门 - 部署第一个Solana程序
  • 23种设计模式-行为型模式-命令
  • ubuntu22使用TrinityCore搭建魔兽世界服务器
  • 【计算机网络】Linux配置SNAT/DNAT策略
  • G-Retriever: 用于文本图理解与问答的检索增强生成
  • LeetCode算法题(Go语言实现)_31
  • 基于LSTM的文本分类2——文本数据处理
  • 数据流和重定向
  • 250405-VSCode编辑launch.json实现Debug调试Open-WebUI
  • 数据库原理
  • [题解]2025HDU春季联合(五) - 小凯逛超市
  • JAX、Flax 和 PyTorch 之间的类比关系