You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

微调Llama 3-8B时遇RuntimeError:预期Long类型却发现Int类型

解决Llama3-8B微调时RuntimeError: expected scalar type Long but found Int报错

问题原因

该错误源于PyTorch的cross_entropy损失函数要求目标标签为Long(64位整数)类型,但当前训练数据的标签为Int(32位整数)类型,CPU训练场景下更容易触发这种类型不匹配问题。

解决步骤

1. 对齐PyTorch与torchtune版本

torchtune 0.1要求PyTorch 2.2及以上版本,版本不兼容可能导致数据类型处理异常,执行以下命令重新安装匹配版本:

pip uninstall -y torch torchtune
pip install torch==2.2.2 torchtune==0.1.0

2. 修改训练命令,强制指定目标标签类型

在原训练命令中添加data.target_dtype=torch.long参数,强制将训练数据的目标标签转换为Long类型:

tune run lora_finetune_single_device --config llama3/8B_lora_single_device checkpointer.checkpoint_dir=D:\Hugging_Tune_Model\llama\original tokenizer.path=D:\Hugging_Tune_Model\llama\original/tokenizer.model checkpointer.output_dir=D:\Hugging_Tune_Model\llama\original device="cpu" data.target_dtype=torch.long

3. 检查自定义数据集格式(若使用自定义数据)

如果微调使用的是自定义数据集,确保标签列存储为64位整数类型:

  • 若用Pandas加载数据,指定dtype=np.int64:
    import pandas as pd
    import numpy as np
    df = pd.read_csv("your_dataset.csv", dtype={"label": np.int64})
    

内容的提问来源于stack exchange,提问作者graph User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:15:14