当前位置:首页>学习笔记>多模态大模型学习笔记(二十)—— 基于 Qwen的 LoRA 意图分类微调实战

多模态大模型学习笔记(二十)—— 基于 Qwen的 LoRA 意图分类微调实战

  • 2026-03-24 13:47:25
多模态大模型学习笔记(二十)—— 基于 Qwen的 LoRA 意图分类微调实战

基于 Qwen2.5-1.5B-Instruct 的 LoRA 意图分类微调实战

点击下方卡片,关注“人工智能陈小白

视觉/大模型/图像重磅干货,第一时间送达!

1. LoRA 微调原理

1.1 什么是 LoRA?

LoRA(Low-Rank Adaptation) 是一种参数高效微调技术,由微软研究院于 2021 年提出。其核心思想是:冻结预训练模型的权重,只训练少量注入的低秩矩阵参数

数学原理

对于预训练模型的权重矩阵 ,LoRA 引入低秩分解:

其中:

  • •  和  是可训练的低秩矩阵
  • •  是 LoRA 的秩(通常 r=4, 8, 16)
  • • 前向传播时:
在这里插入图片描述

LoRA 架构示意图

颜色说明

  • • 🟣 粉色:预训练权重(冻结,不更新)
  • • 🔵 蓝色:LoRA 低秩矩阵(可训练)
  • • 🟢 绿色:分类头(可训练,随机初始化)

为什么低秩有效?

根据 Aghajanyan et al. (2020) 的研究,预训练语言模型具有很低的"内在维度"(intrinsic dimension),即:

即使模型有数十亿参数,实际有效维度可能只有几百到几千。

因此,用低秩矩阵  来近似权重更新  是合理且高效的。

1.2 LoRA 的优势

对比项
全参数微调
LoRA 微调
可训练参数
100%
0.01% - 1%
显存需求
高(需存储梯度、优化器状态)
低(仅 LoRA 参数)
训练速度
快 3-5 倍
存储空间
完整模型(数 GB)
LoRA 权重(数 MB)
部署灵活性
差(每个任务一个完整模型)
优(基础模型 + LoRA 适配器)
灾难性遗忘
严重
轻微

1.3 适用场景

  • • 多任务学习:一个基础模型 + 多个 LoRA 适配器
  • • 消费级 GPU:显存有限(8GB-16GB)
  • • 快速原型:快速验证想法
  • • 隐私保护:少量参数可在本地训练

2. 项目概述

本文介绍如何使用 LoRA 技术对 Qwen2.5-1.5B-Instruct 模型进行微调,实现银行客服意图分类任务。通过本实战,你将掌握:

  • • LoRA 微调的基本原理和参数配置
  • • 使用 PEFT 库进行高效参数微调
  • • 完整的文本分类任务流程
  • • 微调效果评估与对比分析

2.1 任务背景

意图分类是智能客服系统的核心功能,需要将用户输入归类到预定义的意图类别。本实战使用银行客服场景,包含 5 类意图:

意图标签
说明
fraud_risk
诈骗风险
refund
退款
balance
余额查询
card_lost
卡片挂失
other
其他

2.2 系统流程图

2.3 为什么选择 LoRA?

对比项
全参数微调
LoRA 微调
可训练参数
15.4亿 (100%)
109万 (0.071%)
显存需求
~30GB
~8GB
训练时间
数小时
3分钟
存储空间
3GB+
4MB
效果
优秀
接近全参数

3. 环境准备

3.1 依赖安装

pip install torch transformers datasets peft scikit-learn

3.2 模型与数据下载

from modelscope import snapshot_download# 下载 Qwen2.5-1.5B-Instruct 模型model_dir = snapshot_download('qwen/Qwen2.5-1.5B-Instruct'    cache_dir='/root/autodl-fs/class-2')

数据格式(JSONL):

{"text":"我的银行卡丢了怎么办","label":"card_lost"}{"text":"账户余额还有多少","label":"balance"}

4. 核心代码实现

4.1 配置参数

CONFIG = {"base_model_path""/root/autodl-fs/class-2/qwen/Qwen2.5-1.5B-Instruct","train_data_path""/root/autodl-fs/class-2/bank_intent_data/train.jsonl","test_data_path""/root/autodl-fs/class-2/bank_intent_data/test.jsonl","lora_save_path""/root/autodl-fs/class-2/bank_lora_model","labels": ["fraud_risk""refund""balance""card_lost""other"],"max_seq_len"64,      # 最大序列长度"batch_size"1,        # 批量大小"epochs"1,            # 训练轮次"lr"2e-5# 学习率}# 标签映射label2id = {label: idx for idx, label inenumerate(CONFIG["labels"])}id2label = {idx: label for idx, label inenumerate(CONFIG["labels"])}

4.2 数据预处理

defload_and_process_data():# 加载数据集    train_ds = load_dataset("json", data_files=CONFIG["train_data_path"], split="train")    test_ds = load_dataset("json", data_files=CONFIG["test_data_path"], split="train")# 数据清洗:过滤无效标签defclean_data(examples):        valid_mask = [label in CONFIG["labels"for label in examples["label"]]return {"text": [text for text, mask inzip(examples["text"], valid_mask) if mask],"label": [label2id[label] for label, mask inzip(examples["label"], valid_mask) if mask]        }    train_ds = train_ds.map(clean_data, batched=True)    test_ds = test_ds.map(clean_data, batched=True)# 初始化 Tokenizer    tokenizer = AutoTokenizer.from_pretrained(        CONFIG["base_model_path"],        trust_remote_code=True,        padding_side="right"    )if tokenizer.pad_token isNone:        tokenizer.pad_token = tokenizer.eos_token# 文本分词deftokenize_function(examples):return tokenizer(            examples["text"],            truncation=True,            max_length=CONFIG["max_seq_len"],            padding="max_length"        )    tokenized_train = train_ds.map(tokenize_function, batched=True)    tokenized_test = test_ds.map(tokenize_function, batched=True)# 重命名标签列    tokenized_train = tokenized_train.rename_column("label""labels")    tokenized_test = tokenized_test.rename_column("label""labels")return tokenized_train, tokenized_test, tokenizer

4.3 LoRA 配置与模型初始化

LoRA 参数结构图

参数对比

  • • 原始权重:16,777,216 参数(冻结)
  • • LoRA 参数:65,536 参数(可训练)
  • • 压缩比:256:1
from peft import LoraConfig, get_peft_model# LoRA 配置lora_config = LoraConfig(    r=8,                    # LoRA 秩:低秩矩阵维度    lora_alpha=16,          # 缩放因子:通常设为 2*r    target_modules=["q_proj""v_proj"],  # 目标注意力层    lora_dropout=0.05,      # Dropout 率    bias="none",            # 不训练偏置    task_type="SEQ_CLS"# 序列分类任务)# 加载基础模型model = AutoModelForSequenceClassification.from_pretrained(    CONFIG["base_model_path"],    trust_remote_code=True,    num_labels=len(CONFIG["labels"]),    id2label=id2label,    label2id=label2id,    device_map="auto",    dtype=torch.float32)# 初始化分类头权重ifhasattr(model, "score"):    torch.nn.init.normal_(model.score.weight, mean=0.0, std=0.02)# 注入 LoRAlora_model = get_peft_model(model, lora_config)lora_model.print_trainable_parameters()

输出

trainable params: 1,097,216 || all params: 1,544,819,200 || trainable%: 0.0710

4.4 训练配置

from transformers import TrainingArgumentsfrom torch.optim import AdamWtraining_args = TrainingArguments(    output_dir=f"{CONFIG['lora_save_path']}/lora_training",    per_device_train_batch_size=CONFIG["batch_size"],    per_device_eval_batch_size=CONFIG["batch_size"],    num_train_epochs=CONFIG["epochs"],    learning_rate=CONFIG["lr"],    logging_steps=50,    eval_strategy="epoch",    save_strategy="epoch",    save_total_limit=1,    load_best_model_at_end=True,    fp16=False,    report_to="none")# 优化器optimizer = AdamW(    lora_model.parameters(),    lr=CONFIG["lr"],    weight_decay=0.01)# Trainertrainer = Trainer(    model=lora_model,    args=training_args,    train_dataset=tokenized_train,    eval_dataset=tokenized_test,    compute_metrics=compute_metrics,    optimizers=(optimizer, None))# 开始训练trainer.train()

4.5 评估指标

from sklearn.metrics import f1_scoreimport numpy as npdefcompute_metrics(eval_pred):    logits, labels = eval_pred    predictions = np.argmax(logits, axis=-1)# 计算 Macro-F1    macro_f1 = f1_score(        y_true=labels,        y_pred=predictions,        average="macro",        labels=list(label2id.values())    )return {"macro_f1"round(macro_f1, 4)}

5. 完整训练流程

5.1 训练流程详解

5.2 训练脚本

import osimport torchfrom datasets import load_datasetfrom transformers import (    AutoTokenizer, AutoModelForSequenceClassification,    Trainer, TrainingArguments)from peft import LoraConfig, get_peft_model, PeftModelfrom torch.optim import AdamW# 配置os.environ["CUDA_VISIBLE_DEVICES"] = "0"os.environ["TOKENIZERS_PARALLELISM"] = "false"defmain():# 1. 数据预处理    tokenized_train, tokenized_test, tokenizer = load_and_process_data()# 2. 基础模型评估(Baseline)    base_model = AutoModelForSequenceClassification.from_pretrained(        CONFIG["base_model_path"],        trust_remote_code=True,        num_labels=len(CONFIG["labels"]),        id2label=id2label,        label2id=label2id,        device_map="auto",        dtype=torch.float32    )    base_trainer = Trainer(        model=base_model,        args=TrainingArguments(            output_dir=f"{CONFIG['lora_save_path']}/base_eval",            per_device_eval_batch_size=CONFIG["batch_size"],            do_train=False,            do_eval=True        ),        eval_dataset=tokenized_test,        compute_metrics=compute_metrics    )    base_result = base_trainer.evaluate()    base_f1 = base_result["eval_macro_f1"]# 释放显存del base_model, base_trainer    torch.cuda.empty_cache()# 3. LoRA 微调    lora_model = AutoModelForSequenceClassification.from_pretrained(        CONFIG["base_model_path"],        trust_remote_code=True,        num_labels=len(CONFIG["labels"]),        id2label=id2label,        label2id=label2id,        device_map="auto",        dtype=torch.float32    )# 注入 LoRA    lora_config = LoraConfig(        r=8,        lora_alpha=16,        target_modules=["q_proj""v_proj"],        lora_dropout=0.05,        bias="none",        task_type="SEQ_CLS"    )    lora_model = get_peft_model(lora_model, lora_config)# 训练    trainer = Trainer(        model=lora_model,        args=TrainingArguments(            output_dir=f"{CONFIG['lora_save_path']}/lora_training",            per_device_train_batch_size=CONFIG["batch_size"],            num_train_epochs=CONFIG["epochs"],            learning_rate=CONFIG["lr"],            logging_steps=50,            eval_strategy="epoch",            save_strategy="epoch",            save_total_limit=1,            load_best_model_at_end=True        ),        train_dataset=tokenized_train,        eval_dataset=tokenized_test,        compute_metrics=compute_metrics    )    trainer.train()# 保存 LoRA 权重    lora_model.save_pretrained(CONFIG["lora_save_path"])# 4. 微调后评估    final_model = AutoModelForSequenceClassification.from_pretrained(        CONFIG["base_model_path"],        trust_remote_code=True,        num_labels=len(CONFIG["labels"]),        device_map="auto"    )    final_model = PeftModel.from_pretrained(final_model, CONFIG["lora_save_path"])    final_model.merge_and_unload()    final_trainer = Trainer(        model=final_model,        args=TrainingArguments(            output_dir=f"{CONFIG['lora_save_path']}/final_eval",            per_device_eval_batch_size=CONFIG["batch_size"],            do_train=False,            do_eval=True        ),        eval_dataset=tokenized_test,        compute_metrics=compute_metrics    )    final_result = final_trainer.evaluate()    final_f1 = final_result["eval_macro_f1"]# 5. 结果对比print("\n=== LoRA 微调前后效果对比 ===")print(f"基础模型(无LoRA)Macro-F1: {base_f1}")print(f"LoRA微调后模型Macro-F1: {final_f1}")print(f"Macro-F1提升幅度: {round(final_f1 - base_f1, 4)}")if __name__ == "__main__":    main()

6. 训练结果

6.1 训练效果可视化

6.2 训练日志

数据预处理完成:训练集样本数=1600,测试集样本数=200=== 基础模型(无LoRA)评估 ===基础模型(无LoRA)Macro-F1: 0.0667=== LoRA微调训练 ===LoRA参数占比:trainable params: 1,097,216 || all params: 1,544,819,200 || trainable%: 0.0710{'loss': 2.7657, 'grad_norm': 169.17, 'learning_rate': 1.94e-05, 'epoch': 0.03}{'loss': 1.1208, 'grad_norm': 84.52, 'learning_rate': 1.69e-05, 'epoch': 0.16}{'loss': 0.3260, 'grad_norm': 0.35, 'learning_rate': 1.25e-05, 'epoch': 0.38}{'loss': 0.0950, 'grad_norm': 163.27, 'learning_rate': 8.14e-06, 'epoch': 0.59}{'loss': 0.0907, 'grad_norm': 0.02, 'learning_rate': 1.25e-08, 'epoch': 1.0}{'eval_loss': 0.0799, 'eval_macro_f1': 0.9703, 'epoch': 1.0}LoRA权重已保存至:/root/autodl-fs/class-2/bank_lora_model=== LoRA微调后模型评估 ===LoRA微调后模型Macro-F1: 0.9703=== LoRA微调前后效果对比 ===基础模型(无LoRA)Macro-F1: 0.0667LoRA微调后模型Macro-F1: 0.9703Macro-F1提升幅度: 0.9036

6.3 效果对比

模型
Macro-F1
提升
基础模型(无LoRA)
0.0667
-
LoRA 微调后
0.9703+0.9036

6.4 关键指标

指标
数值
训练样本
1600
测试样本
200
训练轮次
1
训练时间
183 秒(约 3 分钟)
可训练参数
1,097,216(0.071%)
总参数
1,544,819,200
最终 Loss
0.09
评估 Loss
0.08

7. LoRA 参数详解

7.1 核心参数

参数
说明
推荐值
r
LoRA 秩,低秩矩阵维度
4-16
lora_alpha
缩放因子,控制更新幅度
2*r
target_modules
目标层,指定注入 LoRA 的模块
["q_proj", "v_proj"]
lora_dropout
Dropout 率,防止过拟合
0.05-0.1
bias
偏置训练策略
"none"
task_type
任务类型
"SEQ_CLS"

7.2 参数选择建议

r(秩)的选择

  • • 小模型(< 3B):r=8-16
  • • 大模型(> 7B):r=4-8
  • • 简单任务:r=4
  • • 复杂任务:r=16

target_modules 的选择

  • • Transformer 模型:["q_proj", "v_proj"](推荐)
  • • 需要更强效果:["q_proj", "k_proj", "v_proj", "o_proj"]
  • • 显存充足:所有线性层

8. 常见问题

8.1 Qwen Tokenizer 警告

问题Token indices sequence length is longer than the specified maximum sequence length

解决:手动设置 pad_token:

if tokenizer.pad_token isNone:    tokenizer.pad_token = tokenizer.eos_token    tokenizer.pad_token_id = tokenizer.eos_token_id

8.2 分类头未初始化

问题Some weights were not initialized from the model checkpoint

解决:手动初始化分类头:

ifhasattr(model, "score"):    torch.nn.init.normal_(model.score.weight, mean=0.0, std=0.02)

8.3 显存不足

解决

  1. 1. 减小 batch_size 到 1
  2. 2. 减小 max_seq_len 到 32-64
  3. 3. 使用 torch.float16 或 bfloat16
  4. 4. 使用 load_in_4bit=True

9. 总结

本文完整介绍了使用 LoRA 微调 Qwen2.5-1.5B-Instruct 实现意图分类任务的流程:

  1. 1. 数据准备:JSONL 格式,文本+标签
  2. 2. 模型加载:使用 Transformers 加载预训练模型
  3. 3. LoRA 配置:仅 0.071% 参数可训练
  4. 4. 训练流程:3 分钟完成 1600 条样本训练
  5. 5. 效果评估:Macro-F1 从 0.07 提升到 0.97

LoRA 技术的优势在于:用极少的可训练参数,达到接近全参数微调的效果,大幅降低训练成本和部署门槛。

10. 参考资源

  • • PEFT 官方文档
  • • Qwen2.5 模型介绍
  • • LoRA 论文

—THE END—

欢迎同学加入人工智能圈交流群

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-25 06:39:37 HTTP/2.0 GET : https://67808.cn/a/475535.html
  2. 运行时间 : 0.274393s [ 吞吐率:3.64req/s ] 内存消耗:4,407.48kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0f0d921c5c23e1a1d6593425917ded60
  1. /yingpanguazai/ssd/ssd1/www/no.67808.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/no.67808.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/no.67808.cn/runtime/temp/6df755f970a38e704c5414acbc6e8bcd.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000995s ] mysql:host=127.0.0.1;port=3306;dbname=no_67808;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001261s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000699s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000690s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001261s ]
  6. SELECT * FROM `set` [ RunTime:0.000580s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002156s ]
  8. SELECT * FROM `article` WHERE `id` = 475535 LIMIT 1 [ RunTime:0.025239s ]
  9. UPDATE `article` SET `lasttime` = 1774391977 WHERE `id` = 475535 [ RunTime:0.040506s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000764s ]
  11. SELECT * FROM `article` WHERE `id` < 475535 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005185s ]
  12. SELECT * FROM `article` WHERE `id` > 475535 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004862s ]
  13. SELECT * FROM `article` WHERE `id` < 475535 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005369s ]
  14. SELECT * FROM `article` WHERE `id` < 475535 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.013563s ]
  15. SELECT * FROM `article` WHERE `id` < 475535 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006260s ]
0.278146s