CoolFace
Modelpublic

fcpig/Lure

sourceHugging Faceapache-2.0updated 8d agoView on Hugging Face
0likes25downloads
Model Card

Lure —— 基于 Qwen3.8-27B 的 LoRA 微调适配器

本仓库是 Qwen/Qwen3.8-27BLoRA 微调权重(Adapter),使用 LLaMA-Factory(LLaMA Board WebUI)以 QLoRA(4-bit bitsandbytes 量化) 方式在自建多模态数据集 lure_v2 上完成监督微调(SFT)。

本仓库只包含微调部分权重(LoRA Adapter,约 223 MB)。使用前需先下载基座模型 `Qwen/Qwen3.8-27B`,加载本 Adapter 后自动合并生效。

1. 模型信息

项目内容
基座模型Qwen/Qwen3.8-27B(原生多模态稠密模型,262K 上下文,Apache-2.0)
微调方式LoRA(QLoRA 4-bit 训练),框架 LLaMA-Factory
训练阶段Supervised Fine-Tuning(SFT)
训练数据lure_v2 数据集,共 246 条多模态(图像 + 文本)指令样本
可训练参数58,363,904(占全部 27.4B 参数的 0.21%)
权重文件adapter_model.safetensors(222.8 MB)
训练日期2026-09-03

2. 训练超参数

超参数
learning_rate5e-05
lrschedulertypecosine
numtrainepochs6.0
perdevicetrainbatchsize2
gradientaccumulationsteps2(等效总 batch size = 4)
cutoff_len2048
lora_rank8
lora_alpha16
lora_dropout0.05
lora_targetall(含 q/k/v/oproj、gate/up/downproj 及 GDN 线性注意力 inproj/outproj 等)
quantization_bit / method4 / bitsandbytes(QLoRA,double_quantization: true)
freezevisiontowertrue(视觉塔冻结)
freezemultimodal_projectortrue
templateqwen3_8
enable_thinkingtrue
warmup_steps0
maxgradnorm1.0
optimizeradamw_torch(betas=0.9,0.999,eps=1e-08)
bf16true
seed42
imagemaxpixels / min_pixels768×768 / 32×32
videomaxpixels / min_pixels256×256 / 16×16

3. 训练结果

  • 总计 372 个优化步(62 步/epoch × 6 epoch),246 条样本全部参与训练。
  • 训练损失从初始 2.83 收敛至平均 0.2534(末段单步 loss 约 0.02–0.15)。
  • 训练时长约 26.6 分钟(单张 GPU,QLoRA 4-bit)。

[image]

4. 训练环境

  • LLaMA-Factory(LLaMA Board WebUI 发起训练)
  • PEFT 0.18.1
  • Transformers 5.8.0
  • PyTorch 2.8.0+cu128
  • Datasets 4.0.0
  • Tokenizers 0.22.2

5. 快速开始(推理)

方式一:transformers + peft

python
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText, BitsAndBytesConfig
from peft import PeftModel

BASE = "Qwen/Qwen3.8-27B"
ADAPTER = "fcpig/Lure"  # 本仓库,或本地路径 ./train_0903

# 与训练时一致:4-bit 量化加载,降低显存占用(约 20GB 级显卡可运行)
bnb = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_use_double_quant=True,
)

model = AutoModelForImageTextToText.from_pretrained(
    BASE, quantization_config=bnb, device_map="auto", trust_remote_code=True,
)
model = PeftModel.from_pretrained(model, ADAPTER)
processor = AutoProcessor.from_pretrained(ADAPTER)  # 仓库内含 processor/tokenizer

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "file://你的图片路径.jpg"},
        {"type": "text", "text": "描述这张图片。"},
    ],
}]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=["你的图片路径.jpg"], return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512)
print(processor.batch_decode(out, skip_special_tokens=True)[0])

方式二:LLaMA-Factory 命令行

bash
llamafactory-cli chat \
  --model_name_or_path Qwen/Qwen3.8-27B \
  --adapter_name_or_path fcpig/Lure \
  --template qwen3_8 \
  --finetuning_type lora

合并为完整权重(可选)

bash
llamafactory-cli export \
  --model_name_or_path Qwen/Qwen3.8-27B \
  --adapter_name_or_path fcpig/Lure \
  --template qwen3_8 \
  --export_dir exports/train_0903-merged \
  --export_size 20

6. 训练复现

  1. 1.安装环境(需 Transformers ≥ 5.2 以支持 qwen3_5/Qwen3.8 架构):
bash
pip install "transformers>=5.2.0" peft==0.18.1 bitsandbytes
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory && pip install -e ".[torch,metrics]"
  1. 1.准备数据集 lure_v2(246 条多模态样本,sharegpt 格式,含 train.jsonl 与对应图像文件),在 data/dataset_info.json 中注册:
json
{
  "lure_v2": {
    "file_name": "train.jsonl",
    "formatting": "sharegpt",
    "columns": { "messages": "conversations" },
    "tags": { "image": "image" }
  }
}
  1. 1.使用与原始训练一致的配置 train_0903.yaml
yaml
model_name_or_path: Qwen/Qwen3.8-27B
trust_remote_code: true
stage: sft
finetuning_type: lora
template: qwen3_8
enable_thinking: true
do_train: true
dataset: lure_v2
dataset_dir: data
cutoff_len: 2048
max_samples: 100000
preprocessing_num_workers: 16
per_device_train_batch_size: 2
gradient_accumulation_steps: 2
learning_rate: 5.0e-5
num_train_epochs: 6.0
lr_scheduler_type: cosine
warmup_steps: 0
max_grad_norm: 1.0
optim: adamw_torch
bf16: true
quantization_bit: 4
quantization_method: bnb
double_quantization: true
freeze_vision_tower: true
freeze_multi_modal_projector: true
lora_rank: 8
lora_alpha: 16
lora_dropout: 0.05
lora_target: all
image_max_pixels: 589824
image_min_pixels: 1024
video_max_pixels: 65536
video_min_pixels: 256
logging_steps: 5
save_steps: 100
plot_loss: true
report_to: none
seed: 42
output_dir: saves/train_0903
  1. 1.启动训练:
bash
llamafactory-cli train train_0903.yaml

固定 seed: 42、相同软硬件环境下可基本复现训练曲线(量化训练存在少量非确定性,最终 loss 应收敛至 0.25 左右)。

7. 仓库文件说明

文件说明
adapter_model.safetensorsLoRA 微调权重(核心文件)
adapter_config.jsonLoRA 配置(基座模型已指向 Qwen/Qwen3.8-27B,可从 Hub 直接加载)
tokenizer.json / tokenizer_config.json / chat_template.jinja分词器与对话模板
processor_config.json多模态处理器配置(图像/视频预处理参数)
training_args.yaml原始训练参数存档(LLaMA-Factory 导出)
train_results.json / trainer_state.json训练指标与完整日志记录
training_loss.png训练损失曲线

注:训练过程中的中间检查点(checkpoint-100/200/300/372)与最终权重内容一致(checkpoint-372 即第 372 步 = 6 epoch 结束),未随仓库上传;training_args.bin、WebUI 日志等运行时文件亦未包含。

8. 引用与许可

  • 基座模型:Qwen/Qwen3.8-27B(Apache-2.0)
  • 微调框架:LLaMA-Factory
  • 本 Adapter 权重按 Apache-2.0 发布。