一、概述

MindSpore Transformers 是昇思生态面向大语言模型(LLM)的官方开发套件,全面支持 Qwen、LLaMA、Baichuan、GLM、GPT 等主流预训练模型,提供预训练、微调、推理、部署全流程能力。在行业落地中,基于通用预训练模型进行指令微调 / 领域微调是最常用方式,微调后会得到基座模型 + 微调适配器(LoRA) 或合并后的完整模型。

二、微调后模型核心内容

(一)微调后模型的两种格式

  1. LoRA 适配器格式(轻量级)
    • 只保存少量权重(几 MB~ 几百 MB)
    • 必须依赖原始基座模型才能运行
    • 适合多任务、快速迭代、资源有限场景
    • 文件通常存放在 adapter_config.jsonadapter_model.bin
  2. 合并后完整模型(部署格式)
    • 将 LoRA 权重融合回基座 Transformer 模型
    • 可独立加载、独立推理
    • 适合生产部署、MindIE 推理引擎加载
    • 文件结构与原始预训练模型完全一致

(二)微调后模型的核心能力

  • 保留基座模型全部通用能力
  • 具备领域知识 / 指令遵循能力 / 行业话术能力
  • 支持增量推理、KV 缓存、流式生成
  • 兼容昇腾 NPU 硬件加速
  • 支持批量预测、API 服务化
  • 可导出为 MindIR 格式用于端边云部署

(三)微调后模型关键组件

  • tokenizer:分词器(与基座完全一致)
  • config:模型配置(层数、头数、隐藏层维度)
  • model:带 / 不带 LoRA 适配器的 LLM 模型
  • generation_config:生成参数(温度、最大长度、top_p 等)

三、微调后模型使用全流程代码

以下代码基于 MindSpore Transformers 官方标准接口,支持所有 LLaMA/Qwen/Baichuan 系列模型,可直接运行。

1. 环境安装

pip install mindspore mindformers numpy

2. 加载微调后的 LoRA 模型 + 推理(最常用)

适用于:微调使用 LoRA、只保存了适配器的场景。

import mindspore as ms
from mindformers import AutoModel, AutoTokenizer, GenerationConfig

# 昇腾环境设置
ms.set_context(device_target="Ascend", mode=ms.GRAPH_MODE, device_id=0)

# ===================== 路径配置 =====================
BASE_MODEL_PATH = "./qwen_7b_base"          # 原始基座模型路径
LORA_ADAPTER_PATH = "./output/lora_checkpoint"  # 微调后LoRA路径
# ====================================================

# 1. 加载分词器
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_PATH)

# 2. 加载基座模型
model = AutoModel.from_pretrained(
    BASE_MODEL_PATH,
    use_past=True,      # 开启增量推理(KV缓存加速)
    compute_dtype=ms.bfloat16
)

# 3. 加载微调后的 LoRA 权重(核心步骤)
model.load_adapter(LORA_ADAPTER_PATH)

# 4. 生成配置
gen_config = GenerationConfig(
    max_new_tokens=1024,
    temperature=0.7,
    top_p=0.9,
    repetition_penalty=1.1,
    do_sample=True
)

# 5. 构造输入
prompt = """你是一个行业助手,请回答:什么是大模型微调?"""
inputs = tokenizer(prompt, return_tensors="ms")

# 6. 推理生成
outputs = model.generate(**inputs, generation_config=gen_config)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)

print("="*50)
print("微调后模型输出:")
print(response)
print("="*50)

3. LoRA 权重合并为完整模型(用于部署)

微调完成后,必须合并权重才能用于生产环境或 MindIE 推理引擎。

# 合并 LoRA 权重到基座模型
def merge_and_save_model(base_model_path, lora_path, save_path):
    from mindformers import AutoModel

    # 加载模型
    model = AutoModel.from_pretrained(base_model_path)
    model.load_adapter(lora_path)

    # 合并权重
    model.merge_adapter()

    # 保存合并后的完整模型
    model.save_pretrained(save_path)

    # 保存分词器
    tokenizer = AutoTokenizer.from_pretrained(base_model_path)
    tokenizer.save_pretrained(save_path)
    print(f"✅ 合并完成,模型已保存至:{save_path}")

# 执行合并
merge_and_save_model(
    base_model_path="./qwen_7b_base",
    lora_path="./output/lora_checkpoint",
    save_path="./qwen_7b_finetuned"
)

4. 加载合并后的完整模型进行推理

合并后的模型可直接独立加载,无需 LoRA 文件:

import mindspore as ms
from mindformers import AutoModel, AutoTokenizer

ms.set_context(device_target="Ascend", mode=ms.GRAPH_MODE)

# 加载合并后的微调模型
model_path = "./qwen_7b_finetuned"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path, use_past=True)

# 推理
prompt = "请介绍一下昇思MindSpore框架。"
inputs = tokenizer(prompt, return_tensors="ms")
res = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(res[0], skip_special_tokens=True))

5. 批量预测脚本(行业数据批量处理)

def batch_inference(model, tokenizer, prompt_list, max_new_tokens=512):
    results = []
    for prompt in prompt_list:
        inputs = tokenizer(prompt, return_tensors="ms", truncation=True, max_length=2048)
        outputs = model.generate(**inputs, max_new_tokens=max_new_tokens)
        resp = tokenizer.decode(outputs[0], skip_special_tokens=True)
        results.append({"prompt": prompt, "response": resp})
    return results

# 测试
prompts = [
    "什么是大模型预训练?",
    "LoRA微调的原理是什么?",
    "如何在昇腾NPU上优化大模型性能?"
]

res_list = batch_inference(model, tokenizer, prompts)
for item in res_list:
    print("问:", item["prompt"])
    print("答:", item["response"])
    print("-"*50)

6. 导出为 MindIR 格式(用于部署)

# 导出模型用于部署
ms.export(model,
          inputs["input_ids"],
          file_name="llm_finetuned",
          file_format="MINDIR")
print("✅ MindIR 模型导出完成")

四、微调后模型使用要点

  1. LoRA 必须与基座模型匹配,结构、层数、词表必须一致
  2. 加载顺序:先基座 → 再 LoRA → 再推理
  3. 推理必须开启 use_past,大幅提升速度
  4. 合并模型是生产部署的必要步骤
  5. 微调后模型建议重新设置 generation_config
  6. 昇腾 NPU 上推荐使用 bfloat16 精度,性能最优

五、微调后模型的应用场景

  • 行业垂域大模型(金融、医疗、政务、法律)
  • 企业内部知识库问答
  • 智能客服、对话机器人
  • 文本生成、摘要、改写
  • 代码生成、SQL 生成
  • 端侧 / 边缘设备 AI 应用

六、总结

MindSpore Transformers 对LLM 微调后模型提供了标准化、统一化、生产级的支持,包括:

  • LoRA 适配器加载与推理
  • 权重一键合并为独立模型
  • 高性能增量推理(KV 缓存)
  • 批量预测、模型导出、服务化部署
  • 全流程适配昇腾 NPU

微调后的模型既保留基座模型能力,又具备行业专属效果,可直接用于真实业务场景。整套接口简洁统一,与 Hugging Face 使用习惯一致,极大降低国产化大模型落地门槛,是昇腾生态大模型工业化应用的核心方案。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐