【踩坑实录】解决 LLamafactory 微调 InternVL3 报错 “Processor was not found” 的完整流程

【踩坑实录】解决 LLamafactory 微调 InternVL3 报错 “Processor was not found” 的完整流程

如何解决 LLamafactory 微调 InternVL3 报错 “Processor was not found”

在使用 LLamafactoryInternVL3 模型进行微调时,许多同学可能会遇到以下报错:

Processor was not found 

这个错误的出现主要是由于 模型与 LLamafactory 的预处理器(Processor)定义不匹配,导致在加载模型时无法正确找到对应的处理器。本文记录了我踩坑的完整过程,以及最终的解决方案,供大家参考。


1. 环境准备

首先,我们需要正确安装 LLamafactory 及其依赖:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]" --no-build-isolation 

确保 Python 版本 ≥ 3.9,并且已经安装了 Pytorch + CUDA 的 GPU 环境(不然后续训练无法运行)。


2. 问题复现

我最开始是直接使用 HuggingFace 官方给出的 InternVL3 模型链接,例如:

OpenGVLab/InternVL3-1B 
在这里插入图片描述

但是在使用 LLamafactory 进行加载和微调时,会不断出现以下报错:

Processor was not found 
在这里插入图片描述

我尝试过多种issues的解决方案,比如:

  • 手动安装 transformers 的不同版本
  • 替换 AutoProcessorAutoTokenizer + AutoImageProcessor
  • 查看官方 issue 中类似的报错

最后找到一个最稳定的解决方案。


3. 解决方案

不要使用官方给出的 HF 模型地址,而是要使用 适配 LLamafactory 的模型版本

也就是说,你需要找到在 HuggingFace 上提供的 带有完整 Processor 配置 的版本,而不是直接拉取官方原始模型。

官方所给链接的版本


LLamafactory所需要的版本

这样,LLamafactory 在加载模型时就能自动找到 processor_config.json,避免报错。

在这里插入图片描述

4. 示例:微调 InternVL3

当正确使用支持的 HuggingFace 模型后,微调就能顺利进行了。

下面以 InternVL3 的自我认知微调 为例:

在这里插入图片描述


在这里插入图片描述


这样模型可以正常加载 Processor 并开始训练。


5. 总结

  • 出现 Processor was not found 报错,本质原因是 模型与 LLamafactory 的依赖不兼容
  • 解决方法是 换用 HuggingFace 上与 LLamafactory 匹配的模型版本,而不是使用官方原始模型。
  • 一旦模型能正常加载 Processor,后续的 SFT(微调)、Lora 等流程就能顺利跑通。

如果你在微调 InternVL3 的过程中也遇到过类似问题,希望这篇文章能帮你节省踩坑时间 🚀。


Read more

JAVA 注解(Annotation):从原理到实战应用

JAVA 注解(Annotation):从原理到实战应用

JAVA 注解(Annotation):从原理到实战应用 1.1 本章学习目标与重点 💡 掌握注解的核心概念与分类,理解注解在Java开发中的核心价值。 💡 熟练使用JDK内置注解,掌握自定义注解的定义、解析与使用流程。 💡 掌握注解的元注解配置方式,理解不同元注解对自定义注解的约束作用。 💡 结合反射机制实现注解的实战应用,掌握注解在框架开发中的核心用法。 ⚠️ 本章重点是 自定义注解的开发流程 和 注解与反射结合的实战应用,这是Java高级开发与框架设计的必备技能。 1.2 注解的核心概念与价值 1.2.1 什么是注解 💡 注解(Annotation) 是Java 5引入的一种特殊标记,它可以在编译期、类加载期、运行时被读取,并执行相应的处理逻辑。注解本身不直接影响代码的执行逻辑,而是通过元数据的方式为程序提供额外信息,这些信息可以被编译器、虚拟机或自定义的注解处理器解析和使用。 注解的本质是一个继承了 java.lang.annotation.Annotation 接口的特殊接口,我们定义的每一个注解,最终都会被编译器生成对应的接口实现类,供程序在运行时

By Ne0inhk
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用

Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用

Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用 * 引言: * 正文: * 一、智能医疗影像数据的「三重困境」 * 1.1 数据洪流:存储成本的指数级增长 * 1.2 实时枷锁:远程医疗的传输瓶颈 * 1.3 质量红线:压缩与保真的矛盾 * 二、Java 大数据:医疗影像压缩的「智能引擎」 * 2.1 算法精研:从传统到智能的跨越 * 2.2 动态优化:基于 AI 的智能压缩策略 * 三、Java 大数据:医疗影像传输的「加速引擎」 * 3.1 分布式架构:突破传输带宽限制 * 3.2 边缘计算:构建「

By Ne0inhk
Java 中间件:RocketMQ 顺序消息(全局/分区顺序)

Java 中间件:RocketMQ 顺序消息(全局/分区顺序)

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Java中间件这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * Java 中间件:RocketMQ 顺序消息(全局 / 分区顺序) * 什么是顺序消息? * RocketMQ 顺序消息的工作原理 * 全局顺序 vs 分区顺序 * RocketMQ 顺序消息的核心机制 * 全局顺序消息的实现 * 全局顺序的配置要求 * Java 代码示例:全局顺序消息 * 全局顺序的局限性 * 分区顺序消息的实现 * 分区顺序的设计思路 * Java 代码示例:分区顺序消息 * 分区顺序的关键要点 * 顺序消息的消费机制详解 * ConsumeOrderlyStatus 枚举 * 消费失败的处理机制 * 并发消费 vs 顺序消费

By Ne0inhk
JAVA 集合框架进阶:Map 接口的深度解析与实战

JAVA 集合框架进阶:Map 接口的深度解析与实战

JAVA 集合框架进阶:Map 接口的深度解析与实战 1.1 本章学习目标与重点 💡 掌握 Map 接口的核心特性,理解 Key-Value 键值对的存储结构与设计思想。 💡 熟练掌握 HashMap、LinkedHashMap、TreeMap 等实现类的底层原理与适用场景。 💡 理解 Map 集合的线程安全问题,掌握并发环境下的解决方案。 ⚠️ 本章重点是 HashMap 的底层实现原理 和 不同 Map 实现类的性能对比,这是面试和开发中的高频核心考点。 1.2 Map 接口核心概述 1.2.1 Map 接口的定义与特性 💡 Map 是一种键值对(Key-Value) 集合,它的核心是通过键(Key)来唯一标识值(Value)。 Map 接口中的 Key

By Ne0inhk