轻量化大模型微调工具库 XTuner 如何进行模型转换、合并和验证?关键方法在此!

大模型向量数据库机器学习

picture.image

接着上篇文章《大模型微调工具 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这三款主流大模型部署框架》 。

picture.image

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文件。

  
python chat\_to\_llm.py  # 运行python文件

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

picture.image

注意事项

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

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

picture.image

探秘 Hugging Face:何为 Hugging Face 及其核心组件全览

LLaMA Factory 如何对大模型进行微调、导出和量化!掌握这几步,轻松搞定!

大模型部署该选谁?Ollama、vLLM 和 LMDeploy,各有千秋!

大型语言模型如何高效微调量化?答案就是 QLoRA!

LLaMA Factory微调后的大模型在vLLM框架中对齐对话模版

AI大模型分布式训练技术原理是什么?看这篇超犀利解析!

大模型微调工具 XTuner 指令微调实战复杂吗?这里有门道……

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
大模型产品方案白皮书——PromptPilot
AI 正以空前速度重塑行业,大模型成为继移动互联网后的新科技浪潮。如何将其与业务深度融合,实现落地,仍是数字化转型的核心挑战。有效 Prompt 是驱动模型达成业务目标的关键,但业务诉求常模糊、缺乏标准答案,模型理解差异大。企业需让模型准确理解需求、稳定输出高质量结果,并在数据积累中持续优化性能与价值。 PromptPilot 应运而生,通过对话与任务用例自动生成高质量 Prompt 与评估标准,运行中持续识别并优化问题,释放大模型潜力,让非技术人员也能轻松驾驭大模型,推动落地与创新。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论