---
title: MindSpeed-LLM LoRA微调后权重转换导致推理报错问题分析与解决方案-官方技术文章-昇腾社区
description: 在基于MindSpeed-LLM进行大模型LoRA微调并完成权重转换以支持推理部署的过程中，开发者常需将训练阶段生成的MCore格式权重转换为Hugging Face兼容格式。该流程涉及模型配置文件（`config.json`）的生成与校验，是确保推理链路完整性的关键环节。本文针对在将Qwen3-8B模型的LoRA微调权重从MCore格式转换为Hugging Face格式后，推理阶段出现 `Not
keywords: MindSpeed,LLM,LoRA,微调后权重转,换导致推理报,错问题分析与,解决方案,官方技术文章
url: https://www.hiascend.com/developer/techArticles/20260603-4?envFlag=1
section: (其他)
---

# MindSpeed-LLM LoRA微调后权重转换导致推理报错问题分析与解决方案-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20260603-4?envFlag=1
描述: 在基于MindSpeed-LLM进行大模型LoRA微调并完成权重转换以支持推理部署的过程中，开发者常需将训练阶段生成的MCore格式权重转换为Hugging Face兼容格式。该流程涉及模型配置文件（`config.json`）的生成与校验，是确保推理链路完整性的关键环节。本文针对在将Qwen3-8B模型的LoRA微调权重从MCore格式转换为Hugging Face格式后，推理阶段出现 `Not
关键词: MindSpeed,LLM,LoRA,微调后权重转,换导致推理报,错问题分析与,解决方案,官方技术文章

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

MindSpeed-LLM LoRA微调后权重转换导致推理报错问题分析与解决方案

MindSpeed-LLM LoRA微调后权重转换导致推理报错问题分析与解决方案

MindSpeed

发表于: 2026/06/03

## 背景概述

在基于MindSpeed-LLM进行大模型LoRA微调并完成权重转换以支持推理部署的过程中，开发者常需将训练阶段生成的MCore格式权重转换为Hugging Face兼容格式。该流程涉及模型配置文件（config.json）的生成与校验，是确保推理链路完整性的关键环节。本文针对在将Qwen3-8B模型的LoRA微调权重从MCore格式转换为Hugging Face格式后，推理阶段出现 NotImplementedError: torch_dtype is only supported for type float16 and bfloat16 错误的问题，进行系统性分析与解决方案总结。

## 问题现象

在完成LoRA微调并使用MindSpeed-LLM提供的权重转换脚本将MCore权重转为Hugging Face格式后，尝试使用转换后的权重进行推理部署时，启动失败并抛出如下错误：

```
NotImplementedError: `torch_dtype` is only supported for type `float16` and `bfloat16`
```

该错误提示明确指出：torch_dtype 参数未被正确识别或配置，且其值不在允许范围内。

## 问题排查与根因分析

### 1. 检查 config.json 配置文件

根据错误提示，torch_dtype 参数应来源于 config.json 文件。经检查，转换生成的 config.json 中并未包含 torch_dtype 字段，仅存在 dtype 字段，导致推理框架在加载配置时无法识别精度类型，触发校验失败。

### 2. 对比原始与转换后配置文件

进一步对比原始Hugging Face模型提供的 config.json 与转换生成的版本，发现原始文件中使用的是 torch_dtype 字段（如 "torch_dtype": "float16"），而转换后生成的文件中该字段被替换为 dtype（如 "dtype": "float16"）。

### 3. 验证修复方案：替换 config.json

手动将转换生成的 config.json 替换为原始模型提供的版本，重新拉起推理服务，问题消失，推理成功启动，验证了问题根源确为配置字段不匹配。

### 4. 定位权重转换脚本逻辑

问题定位至使用的权重转换脚本：examples/mcore/qwen3/ckpt_convert_qwen3_mcore2hf_lora.sh，其调用的是 convert_ckpt.py（V1版本）。

对比发现，MindSpeed-LLM项目中存在两个版本的转换脚本：

V1: convert_ckpt.py —— 生成 config.json、pytorch_model.bin、tokenizer_config.json、vocab.json 等四类文件。

V2: convert_ckpt_v2.py —— 仅生成 model.safetensors 与 config.json 两类文件。

当前LoRA微调场景在除master分支外的其他分支中，仅支持使用V1版本脚本。该脚本在生成 config.json 时，未对原始配置进行比对或兼容处理，直接根据训练时的精度字段生成 dtype，而未映射为 torch_dtype，导致与Hugging Face推理框架的预期不一致。

## 问题根因

权重转换脚本 convert_ckpt.py（V1）在生成 config.json 时，将精度字段写为 dtype，而Hugging Face推理框架要求使用 torch_dtype 字段。由于 torch_dtype 未被识别，框架在参数校验阶段抛出 NotImplementedError，导致推理失败。

### 解决措施

推荐方案一：手动修复 config.json 字段

将转换生成的`config.json`中的`dtype`字段修改为`torch_dtype`，并保持值一致（如`"float16"`或`"bfloat16"`）：

```json
{
  "dtype": "float16"
}

```

修改为：

```json
{
  "torch_dtype": "float16"
}

```

⚠️ 注意：仅修改字段名，不改变值，确保精度类型与权重实际类型一致。

推荐方案二：使用原始模型 config.json + 转换生成的 safetensors 权重（更优）

直接使用原始Hugging Face模型提供的 config.json 文件，与转换生成的 model.safetensors 权重文件组合使用，可避免字段不匹配问题。

该方案为日常开发推荐做法，能有效规避因转换脚本差异导致的配置不一致问题。

## 最佳实践建议

1. 权重转换后优先使用原始 config.json

在将MCore权重转换为Hugging Face格式时，建议保留原始模型的 config.json，仅替换权重文件（如 model.safetensors），以确保配置与推理框架兼容。

2. 关注转换脚本版本与场景匹配性

不同模型与训练场景（如LoRA微调）可能对应不同版本的转换脚本。请根据实际分支文档确认应使用 convert_ckpt.py 或 convert_ckpt_v2.py。

3. 验证转换结果完整性

转换完成后，建议通过以下方式验证：

检查 config.json 是否包含 torch_dtype 字段；

确认权重文件格式（如 .safetensors）与推理框架兼容；

使用单条输入进行推理测试，验证输出逻辑正确性。

### 附录：推理部署示例

以Qwen3模型为例，使用转换后的权重与配置文件进行单卡推理：

```
python run_mindformer.py \
  --config configs/qwen3/predict_qwen3.yaml \
  --run_mode predict \
  --use_parallel False \
  --predict_data "请帮我写一份去上海的旅游攻略
```

若输出正常，说明配置与权重已正确对齐。

## 总结

本问题源于MCore到Hugging Face权重转换过程中，config.json 中精度字段命名不一致，导致推理框架无法识别 torch_dtype。通过手动修复字段或采用原始配置文件，可快速解决该问题。建议在后续开发中优先采用“原始 config.json + 转换权重”组合，提升部署稳定性与兼容性。

本页内容
