新闻详情

新闻详情

首页 / 资讯中心 / 详情

Qwen3-VL LoRA 微调实战:从数据准备到 vLLM 部署全流程

发布时间:2026/9/8 4:31:49来源:尧图网络
Qwen3-VL LoRA 微调实战:从数据准备到 vLLM 部署全流程
这次我们直接上一个 Qwen3-VL 的 LoRA 微调全流程。Qwen3-VL 是目前多模态大模型里值得重点关注的一支图像理解、OCR、文档解析、屏幕截图理解这些能力都集成在同一个模型里。LoRA 微调的意义在于不需要把几十亿参数全部更新只要训练一小部分低秩适配器就能把模型拉向自己的业务场景显存和训练成本都低得多。这篇文章不展开讲论文直接走实战流程Qwen3-VL 的模型选型和微调方式对比、多模态数据集怎么组织、Chat Template 怎么校验、LLaMA-Factory 怎么启动 LoRA 训练、关键超参如何调优、训练完怎么评估效果最后把 LoRA 合并回底座模型用 vLLM 做部署推理并给出接口调用和批量任务示例。文末会把多模态微调面试里高频出现的考点一起梳理掉。1. 核心能力速览能力项说明模型类型Qwen3-VL 视觉语言多模态大模型VLM微调方式LoRA / QLoRA也可以对比全量微调与 Freeze 微调支持任务图像理解、OCR、文档解析、图表问答、截图理解、视频理解常用训练工具LLaMA-Factory、transformers PEFT本文以 LLaMA-Factory 为例模型规模Qwen3-VL 提供 2B / 4B / 8B 等常见尺寸具体以官方仓库为准显存需求取决于模型尺寸、图像分辨率、max_length、batch size需按本机实测启动方式命令行训练、LLaMA-Factory WebUI、合并权重后 vLLM 服务是否支持 API合并后可通过 vLLM / transformers 起 OpenAI 兼容接口是否支持批量任务可设计批量推理脚本配合日志、重试、结果落盘适合场景垂直领域 OCR、票据结构化、文档问答、私有数据知识注入需要先把结论放在前面LoRA 微调不是“万能炼丹”。它擅长改变模型的输出风格、格式偏好、指令跟随能力和垂直领域知识但不适合给模型注入大量全新的世界知识。训练数据质量决定最终效果超参和模板只是把数据中的规律稳定发挥出来。2. 适用场景与使用边界2.1 适合谁用需要私有化部署多模态能力的团队不愿意把票据、合同、业务截图传到公共 API。需要垂直领域 OCR 和文档理解的开发者比如发票字段抽取、表格结构化、试卷题目解析。研究多模态模型训练流程的学生和算法工程师想低成本跑通训练、评估、部署闭环。2.2 能解决什么问题LoRA 微调可以把通用 VLM 变成某个领域的专用模型。举例通用模型识别发票时输出格式不稳定微调后固定输出 JSON 字段。模型对某一类合同条款理解不准确微调后回答更贴合内部业务口径。模型默认回答太长微调后输出精简、结构化、可直接落库。2.3 不适合什么场景需要模型掌握大量训练数据之外的新知识应优先考虑 RAG 或重新预训练。数据量极少几十条且任务复杂微调收益有限先尝试提示词工程。训练数据有严重噪声和标注错误模型只会把错误习惯放大。2.4 合规与安全边界多模态数据往往包含敏感信息。训练数据里如果有真实人脸、车牌、身份证、合同、病历必须提前脱敏和获得授权。涉及商业模型微调时确认你是否有权使用这些图片和文本数据。部署后如果开放成公网 API要加鉴权避免被滥用。本文所有示例仅用于本地技术验证不构成任何商业数据使用建议。3. 微调方式对比全量微调、Freeze 微调与 LoRA很多招聘岗位和面试题会直接问这三种方式。先给出对比后面训练时才清楚 LoRA 的位置。对比项全量微调Freeze 微调LoRA 微调更新参数全部模型参数只更新部分模块其余冻结只更新低秩适配器显存占用最高中等低训练速度慢中等快模型切换每个任务一个完整模型每个任务一个完整模型一个底座加载不同 LoRA 权重知识注入能力强较弱中等过拟合风险数据少时风险高可控可控适合场景数据量大、算力充足有明确可冻结层数据中量、单卡或消费级显卡LoRA 的核心思路很简单预训练模型的权重矩阵在微调时不直接更新而是在旁边加一个低秩矩阵 ΔW BA训练时只更新 B 和 A。最终推理时可以把 BA 合并回原权重模型结构完全不变。这也是它能显著降低显存占用的原因——反向传播时不需要为完整梯度分配显存。使用 Qwen3-VL 这类多模态模型时LoRA 一般作用在 Transformer 的 attention 层投影矩阵上。视觉编码器部分可以冻结也可以单独 LoRA通常先冻结视觉编码器让它保持通用视觉能力重点微调语言模型部分。4. 环境准备与前置条件4.1 硬件建议LoRA 微调的前提是有一块支持 CUDA 的 NVIDIA 显卡。显存大小的建议8B 级模型建议 16G 以上显存操作空间比较足。4B 级模型12G 显存有机会跑起来需要控制 batch size 和图像分辨率。2B 级模型8G 显存可以尝试但要把输入序列长度调小。同一模型在不同框架、不同 transformers 版本下显存占用差异可能很大。最稳妥的做法是先用最小 batch size 做一次冒烟测试观察nvidia-smi里的显存变化再逐步加大参数。如果本机没有 NVIDIA 显卡不建议硬跑训练。可以用 CPU 跑一次极小的步骤验证代码逻辑但完整训练效率太低。4.2 软件依赖训练环境建议使用 Python 3.10 或更高版本PyTorch 2.xtransformers 4.46 以上PEFT 0.12 以上。具体版本以 LLaMA-Factory 官方要求为准。Qwen3-VL 的模型权重从 Hugging Face 或 ModelScope 下载国内网络环境优先用 ModelScope 加速。创建虚拟环境并安装基础依赖conda create -n qwen3vl python3.10 conda activate qwen3vl # 安装 PyTorch具体命令需要按本机 CUDA 版本从官网获取 pip install torch torchvision # 安装 LLaMA-Factory推荐从源码安装以固定版本 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e .[torch]如果嫌源码安装慢也可以直接执行pip install llama-factory安装完成后检查版本llamafactory-cli version4.3 模型权重准备以 Qwen3-VL-8B-Instruct 为例训练前需要先把模型下载到本地目录。可以直接让 LLaMA-Factory 在启动训练时自动从 Hugging Face 拉取但训练过程中下载容易中断建议提前下载# 使用 huggingface-cli huggingface-cli download Qwen/Qwen3-VL-8B-Instruct --local-dir ./models/Qwen3-VL-8B-Instruct如果使用 ModelScopepip install modelscope modelscope download --model Qwen/Qwen3-VL-8B-Instruct --local_dir ./models/Qwen3-VL-8B-Instruct注意目录不要有中文和空格后续路径处理会省掉很多麻烦。5. 多模态数据集构建与 Chat Template 配置5.1 多模态数据格式LLaMA-Factory 使用 OpenAI 风格的 messages 格式。多模态样本中content 是列表图片和文本作为不同元素传入图片字段支持本地路径或 URL。实际操作中推荐把所有图片放到统一目录数据集 JSON 里的图片路径使用相对路径避免路径混乱。[ { messages: [ { role: user, content: [ {type: image, image: train/images/invoice_001.jpg}, {type: text, text: 请从这张发票中提取金额、发票号和开票日期输出 JSON。} ] }, { role: assistant, content: [ {type: text, text: json\n{\amount\: \1000.00\, \invoice_no\: \No.12345678\, \date\: \2025-03-01\}\n} ] } ] } ]注意不同版本的 LLaMA-Factory 对图片字段名称可能有差异有的用image字段有的放在 messages 之外的images字段。建议在data/dataset_info.json中先注册好数据集再启动训练验证字段解析是否正常。一个较通用的数据集注册格式{ qwen3vl_invoice_train: { file_name: invoice_train.json, columns: { messages: messages, images: images }, formatting: sharegpt, tags: { role_tag: role, content_tag: content, user_tag: user, assistant_tag: assistant } } }5.2 Chat Template 为什么重要很多人训练出来模型回答格式乱或者生成一堆特殊 token问题往往出在 Chat Template 上。训练时框架会把 messages 渲染成模型真正看到的 token 序列推理时processor 也会用同样的模板把对话渲染成输入。如果训练和推理用的模板不一致模型就学不到正确的对话结构。Qwen3-VL 在 LLaMA-Factory 中通过--template qwen3_vl或类似名称指定模板具体名称以当前安装版本支持的模板列表为准。启动训练前可以用下面的代码验证模板渲染结果from transformers import AutoProcessor processor AutoProcessor.from_pretrained(./models/Qwen3-VL-8B-Instruct, trust_remote_codeTrue) messages [ {role: user, content: [ {type: image}, {type: text, text: 这张图里有什么} ]} ] text processor.apply_chat_template( messages, tokenizeFalse, add_generation_promptTrue ) print(text)如果输出中包含|im_start|、|im_end|这类 Qwen 模板特殊标签说明模板基础结构正常。同时也要检查图像占位符是否被合理保留因为真正输入模型时图像占位符会被视觉编码器输出替换。5.3 数据质量检查清单图片路径是否真实存在。图片是否损坏或格式异常。assistant 回答是否与图片内容严格对应。是否有答案互相矛盾的样本。是否有多余的空白、换行、不可见字符。训练集和验证集是否分层避免同类型图片全部进验证集导致评估失真。建议写一个 Python 脚本遍历 JSON逐条打印 user 内容和 assistant 内容人工抽检 20 到 50 条比直接开训练效率高很多。6. LoRA 超参调优与训练配置6.1 关键超参说明参数推荐范围作用调优倾向lora_rank (r)8 / 16 / 32低秩矩阵维度决定可训练参数量数据量小用 8 或 16数据量大用 32 或更高lora_alphar 的 1 到 2 倍控制 LoRA 权重缩放比例一般设 16 / 32 / 64lora_dropout0 到 0.1防止过拟合数据少可设为 0.05target_modulesq_proj, k_proj, v_proj, o_proj注入 LoRA 的模块默认注入 attention 即可全部 Linear 效果更强但显存更高learning_rate1e-5 到 5e-5训练步长大模型偏小 lrLoRA 一般比全量微调大batch_size1 到 4每次前向传播样本数受显存限制gradient_accumulation_steps4 / 8 / 16模拟更大 batch小显存下常用num_train_epochs2 到 5训练轮数数据量少时注意过拟合cutoff_len2048 / 4096输入序列截断长度多模态样本如果图片 token 多建议 40966.2 训练命令示例下面是一个可参考的 LLaMA-Factory CLI 训练命令。重点看stage、finetuning_type、dataset和template这四个参数需要按照你自己的数据集名称和安装版本调整llamafactory-cli train \ --model_name_or_path ./models/Qwen3-VL-8B-Instruct \ --stage sft \ --finetuning_type lora \ --dataset qwen3vl_invoice_train \ --template qwen3_vl \ --cutoff_len 4096 \ --output_dir ./output/qwen3vl-invoice-lora \ --overwrite_cache \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 8 \ --learning_rate 3e-5 \ --num_train_epochs 3.0 \ --lr_scheduler_type cosine \ --warmup_ratio 0.1 \ --lora_rank 16 \ --lora_alpha 32 \ --lora_dropout 0.05 \ --logging_steps 10 \ --save_steps 500 \ --val_size 0.1 \ --preprocessing_num_workers 4 \ --bf16如果显存不足优先做三件事调小per_device_train_batch_size、降低图片输入分辨率、把cutoff_len降到 2048。QLoRA 也可以进一步降低显存占用把finetuning_type改为qlora同时对量化相关的quantization_bit参数按需设置。6.3 训练过程观察指标训练日志里重点看这几个值loss是否在稳定下降异常抖动说明数据或学习率有问题。刚开始 loss 不降很常见先跑几百步再判断。验证集 loss 不再下降甚至上升时说明开始过拟合应考虑提前停止或减小 epoch。观察保存的 checkpoint 数量确认save_steps设置的间隔合理。训练过程中可以另开一个终端用nvidia-smi -l 1实时观察显存分配确认当前 batch size 下的显存余量方便后续调整。7. 权重合并与模型导出LoRA 训练结束后得到的是一个小体积的 adapter 目录里面包含 adapter_model.safetensors 和 adapter_config.json 等文件。这个 adapter 不能单独用于推理需要先合并回底座模型。使用 LLaMA-Factory 导出合并权重llamafactory-cli export \ --model_name_or_path ./models/Qwen3-VL-8B-Instruct \ --adapter_name_or_path ./output/qwen3vl-invoice-lora \ --template qwen3_vl \ --finetuning_type lora \ --export_dir ./models/qwen3vl-invoice-merged \ --export_legacy_format false导出完成后检查目录应该能看到 model.safetensors 或被分片的权重文件以及 config.json。这个目录就是一个完整的、可以直接加载的模型。如果不想合并权重也可以用 PEFT 在推理时动态加载 adapter适合多任务切换场景from peft import PeftModel from transformers import AutoModelForCausalLM, AutoProcessor base_model_path ./models/Qwen3-VL-8B-Instruct adapter_path ./output/qwen3vl-invoice-lora processor AutoProcessor.from_pretrained(base_model_path, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( base_model_path, device_mapauto, trust_remote_codeTrue, torch_dtypeauto ) model PeftModel.from_pretrained(model, adapter_path)动态加载的好处是可以在一个 GPU 上只保留一份底座模型不同任务切换不同 LoRA。缺点是每次切换都需要加载权重接口响应会慢。8. 效果评估的方法与演示8.1 评估思路微调效果不能只看训练 loss。更好的做法是准备一组模型没见过的测试图和固定问题分别用底座模型和微调后模型输出逐条对比。推荐评估维度输出格式是否符合要求。关键字段提取准确率。回答是否更简洁。是否出现幻觉即编造图片里不存在的内容。对模糊图片的容忍度是否变化。中文与英文混合场景的表现。8.2 推理对比脚本示例import torch from PIL import Image from transformers import AutoModelForCausalLM, AutoProcessor model_path ./models/qwen3vl-invoice-merged processor AutoProcessor.from_pretrained(model_path, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( model_path, device_mapauto, torch_dtypetorch.bfloat16, trust_remote_codeTrue ).eval() image Image.open(./test/invoice_test_001.jpg) messages [ {role: user, content: [ {type: image}, {type: text, text: 请从这张发票中提取金额和发票号输出 JSON。} ]} ] inputs processor.apply_chat_template( messages, tokenizeFalse, add_generation_promptTrue ) model_inputs processor( inputs, images[image], return_tensorspt ).to(model.device) with torch.no_grad(): outputs model.generate( **model_inputs, max_new_tokens512, do_sampleFalse, temperature1.0 ) input_len model_inputs.input_ids.shape[1] result processor.decode(outputs[0][input_len:], skip_special_tokensTrue) print(result)同样的测试脚本换成./models/Qwen3-VL-8B-Instruct就可以拿到底座模型的输出两条结果放在一起比较效果差异一眼就能看出来。8.3 批量评估与指标统计建议写一个批量评估脚本把测试数据组织成 CSV 或 JSON每条包含图片路径。输入问题。标准答案。底座模型输出。微调模型输出。跑完之后人工抽样统计准确率。对于 OCR 和字段抽取任务可以用编辑距离或字段级匹配率做自动统计但最终还是要看完整句子的可读性。不要只看指标多模态任务里格式正确但内容错误的情况很常见。8.4 效果不好怎么迭代输出格式不对检查 Chat Template 和训练数据的 assistant 回答格式是否统一。幻觉加重适当增加数据量或调小学习率检查标注质量。模型过拟合减少 epoch增大 lora_dropout增加数据多样性。某个字段总是识别错单独补充该字段的训练样本并且保证样本里的轮次和上下文示例多样一些。9. vLLM 部署推理与 API 调用9.1 启动 vLLM 服务合并后的模型可以用 vLLM 部署提供 OpenAI 兼容的接口。安装 vLLM 需要匹配的 CUDA 和 Python 版本建议单独创建虚拟环境pip install vllm启动服务vllm serve ./models/qwen3vl-invoice-merged \ --host 0.0.0.0 \ --port 8000 \ --gpu-memory-utilization 0.9 \ --max-model-len 8192--max-model-len要按实际显存调整。如果显存不够调小这个值否则启动时会直接报显存不足。--gpu-memory-utilization控制 vLLM 能使用的显存比例默认 0.9显存紧张时可以保留更多余量。9.2 curl 调用示例接口是 OpenAI 兼容格式/v1/chat/completions可以直接测试curl http://127.0.0.1:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: ./models/qwen3vl-invoice-merged, messages: [ { role: user, content: [ {type: image_url, image_url: {url: https://example.com/test_invoice.jpg}}, {type: text, text: 请提取发票金额和发票号输出 JSON。} ] } ], max_tokens: 512 }如果图片在本机可以用 base64 传输避免图片公网访问的问题。9.3 Python 接口调用示例import base64 import requests import json api_url http://127.0.0.1:8000/v1/chat/completions with open(./test/invoice_test_002.jpg, rb) as f: image_b64 base64.b64encode(f.read()).decode() payload { model: ./models/qwen3vl-invoice-merged, messages: [ { role: user, content: [ { type: image_url, image_url: {url: fdata:image/jpeg;base64,{image_b64}} }, { type: text, text: 请输出发票金额、发票号、开票日期JSON 格式。 } ] } ], max_tokens: 512, temperature: 0.1 } resp requests.post(api_url, jsonpayload, timeout180) data resp.json() print(data[choices][0][message][content])注意 vLLM 对多模态输入的支持版本差异较大。如果/v1/chat/completions里多模态参数报错先查当前 vLLM 版本是否支持该模型架构必要时改用 transformers 或换新版本 vLLM。9.4 transformers 直接推理如果只是本地验证不需要起服务可以直接加载模型和 processor 调用前面评估脚本里的方式就可以复用。这种方式适合小批量验证但不适合做高并发服务。10. 批量任务工程化建议微调模型落地时基本都会遇到批量推理的需求。这里给一套可落地的批量任务设计建议。10.1 任务结构模型服务是瓶颈资源批量任务不要边扫目录边发请求而是先扫描所有待处理文件生成任务清单./batch_tasks ├── tasks.json ├── images │ ├── odd_001.jpg │ └── odd_002.jpg └── logstasks.json 格式[ { task_id: 001, image: ./batch_tasks/images/odd_001.jpg, prompt: 请输出发票金额和发票号, max_tokens: 512 }, { task_id: 002, image: ./batch_tasks/images/odd_002.jpg, prompt: 请输出发票金额和发票号, max_tokens: 512 } ]10.2 批处理脚本示例import base64 import json import time import requests from concurrent.futures import ThreadPoolExecutor, as_completed API_URL http://127.0.0.1:8000/v1/chat/completions MODEL_NAME ./models/qwen3vl-invoice-merged def process_one(task): task_id task[task_id] try: with open(task[image], rb) as f: image_b64 base64.b64encode(f.read()).decode() payload { model: MODEL_NAME, messages: [ { role: user, content: [ {type: image_url, image_url: {url: fdata:image/jpeg;base64,{image_b64}}}, {type: text, text: task[prompt]} ] } ], max_tokens: task.get(max_tokens, 512), temperature: 0.1 } resp requests.post(API_URL, jsonpayload, timeout180) resp.raise_for_status() result resp.json()[choices][0][message][content] return {task_id: task_id, status: ok, result: result} except Exception as e: return {task_id: task_id, status: error, error: str(e)} def run_batch(task_file, max_workers4): with open(task_file, r, encodingutf-8) as f: tasks json.load(f) results [] with ThreadPoolExecutor(max_workersmax_workers) as executor: futures {executor.submit(process_one, task): task[task_id] for task in tasks} for future in as_completed(futures): task_id futures[future] try: result future.result() results.append(result) print(f[{task_id}] done) except Exception as e: results.append({task_id: task_id, status: error, error: str(e)}) with open(./batch_tasks/outputs/results.json, w, encodingutf-8) as f: json.dump(results, f, ensure_asciiFalse, indent2) if __name__ __main__: run_batch(./batch_tasks/tasks.json, max_workers4)10.3 并发和重试建议并发数先从 1 到 2 开始逐步增大观察接口延迟和显存占用。每个任务必须有 task_id日志和输出结果都要带上方便失败后定位。失败请求按指数退避重试比如 1 秒、2 秒、4 秒最多重试 3 次。结果最好落盘到单独目录避免进程崩溃后全部丢失。处理完成后人工抽检一部分输出确认没有大规模乱码或幻觉。11. 常见问题与排查方法问题现象可能原因排查方式解决方案训练启动报 CUDA out of memorybatch size 过大或输入序列过长观察nvidia-smi显存占用调小 batch size、cutoff_len或改用 QLoRA数据集加载报错字段不存在JSON 字段和 dataset_info.json 不匹配打印数据集前几条看 key 结构统一字段名参考当日版本的官方多模态数据格式训练完回答全是特殊符号Chat Template 与推理不一致打印 apply_chat_template 结果确保训练和推理用同一个 template验证集 loss 一直不降学习率过高/过低、数据噪声大观察 loss 曲线前几百步调整学习率清洗数据LoRA 导出后模型体积异常小没有合并成功只保存了 adapter检查 export 目录是否有完整权重文件确认 PEFT 版本和导出命令参数vLLM 启动报模型结构不支持vLLM 版本过旧查看 vLLM release note升级 vLLM 或改用 transformers 推理多模态接口返回不识别图片base64 编码格式错误或 model 名称不符先测试文本请求再测试图片确认 image_url 使用 data URI 格式批量任务中途卡住并发过高或图片尺寸过大查看服务端日志和请求超时时间降低并发、压缩图片、增加 timeout微调后 OCR 识别率下降LoRA 破坏了视觉编码器表示检查 target_modules 是否覆盖注意力层冻结视觉分支只微调语言部分另外有个常见坑trust_remote_codeTrue在某些新版本 transformers 中可能不被支持。如果加载模型时报trust_remote_code相关错误更新 transformers 到支持 Qwen3-VL 的版本或根据官方模型卡片说明调整加载代码。12. 最佳实践与面试考点12.1 工程实践建议第一次训练不要直接上全量数据先用 100 条数据跑通训练、合并、推理全链路。所有训练命令记录到一个 shell 脚本或 notebook方便复现。训练结果按业务场景分目录保存adapter、合并模型、测试报告三者对应。训练前固定随机种子否则同一份数据两次训练结果可能差异很大。数据处理脚本单独保存不要只在 Jupyter 里跑一次就不管了。模型评估环节要有人在指标再好看也要抽查原始图片上的真实输出。12.2 高频面试考点这套实战流程和面试题高度重合下面列几个最常见的LoRA 的原理和可训练参数比例怎么计算。需要能说出 ΔW BA 的低秩分解思想以及训练参数量远小于全量参数的原因。lora_rank 和 lora_alpha 的含义。rank 决定低秩矩阵的维度alpha 控制权重缩放比例最终合并权重时 LoRA 部分会乘以 alpha / r。为什么 LoRA 能降低显存占用。因为主干参数冻结反向传播不需要保存完整梯度和优化器状态。LoRA 和全量微调的效果差异。LoRA 在数据量中等、任务垂直的情况下通常够用数据量极大且任务和预训练分布差异大时全量微调上限更高。多模态数据如何组织。图片输入通过视觉编码器转成视觉 token文本通过分词器转成文本 token两者在语言模型层融合。训练时数据集中图片和文本需要按框架格式组织。Chat Template 的作用。它决定了模型看到的对话结构包括角色标记、图像占位符的插入位置训练和推理必须一致。训练数据量少怎么办。先清洗数据保证质量再考虑数据增强、增大 lora_dropout、降低学习率、减少 epoch。如何判断过拟合。训练 loss 下降但验证 loss 上升或模型在测试集上输出越来越死板都是过拟合信号。回答这些问题时结合自己实际跑过的数据和踩过的坑比背概念更有说服力。比如你能说清楚“把 Cutoff Length 从 2048 调到 4096 后显存涨了多少推理长文档时效果变化有多大”面试官基本就认可你的工程能力了。13. 总结这条链路并不复杂准备多模态数据集、确认 Chat Template、用 LLaMA-Factory 启动 LoRA 训练、调超参、合并权重、评估效果、vLLM 部署 API。最值得先做的是用少量数据跑通全流程先把训练到推理的链路稳定下来再逐步扩大数据集和调参。最容易被忽视的是 Chat Template 和数据格式。模型结构、框架版本都在快速迭代文档不一定跟上实际训练前先打印一条样本的模板渲染结果能省下大量排查时间。下一步可以继续尝试QLoRA 在更小显存下的极限配置、不同 lora_rank 的效果对比、视觉编码器冻结与否对 OCR 任务的影响以及把微调后的模型接入 RAG 或其他业务流程。建议先保存一份最小可运行的训练配置后续所有实验都基于它展开这样每次迭代都有对照基线。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

骚扰电话识别与处置:特征计算、规则引擎到模型评分的落地链路 2026/9/8 5:19:57

骚扰电话识别与处置:特征计算、规则引擎到模型评分的落地链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Windows下chrome-headless-shell实战:无头浏览器自动化截图与爬虫 2026/9/8 5:19:57

Windows下chrome-headless-shell实战:无头浏览器自动化截图与爬虫

简介:这是面向Windows 64位平台的Chrome无头浏览器可执行包,版本为129.0.6668.59,适用于需要在不渲染图形界面的环境中运行浏览器自动化任务的开发者、测试工程师及CI/CD集成场景。通过搭配ChromeDriver,可完成页面访问、元素操作…

阅读更多 →
YOLO26模型导出全攻略:ONNX、TensorRT、OpenVINO实战与避坑指南 2026/9/8 5:19:57

YOLO26模型导出全攻略:ONNX、TensorRT、OpenVINO实战与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
eMMC BKOPS机制深度解析:从MMC协议到闪存后台维护 2026/9/8 5:19:57

eMMC BKOPS机制深度解析:从MMC协议到闪存后台维护

“MMC”这个词我第一次认真对待,是在一次远程排查Android开发板卡顿的时候。设备连续写了几十GB日志,界面开始间歇性掉帧,dmesg里全是timeout重试,SSH偏偏又能连上。同事丢过来一句:“看看mmc bkops是不是在忙。”这一…

阅读更多 →
PMSM变频调速Simulink建模:从FOC原理到SVPWM调参实战 2026/9/8 5:19:57

PMSM变频调速Simulink建模:从FOC原理到SVPWM调参实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
麒麟ARM环境下Nacos适配达梦DM8数据库的编译部署实践 2026/9/8 5:16:56

麒麟ARM环境下Nacos适配达梦DM8数据库的编译部署实践

简介:面向国产化改造场景,这份Nacos 2.5.0 Linux适配包针对达梦数据库与麒麟ARM系统完成定制编译,适合在信创环境下部署微服务注册与配置中心的开发、运维及架构人员。资源共17个文件,压缩后148.05MB,包含建表SQL、con…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞