【LoRA】深入解析LoRAConfig中target_modules的配置策略与实战技巧
1. 从“全量微调”到“精准微调”为什么target_modules是LoRA的灵魂如果你玩过大模型微调肯定对“爆显存”这三个字心有余悸。我前段时间想微调一个300亿参数的MoE模型手头只有7张A100结果刚跑100步显存就告急了那种感觉就像开着跑车刚上高速就没油了。全量微调Full Fine-tuning对显存和算力的要求让很多个人开发者和小团队望而却步。这时候LoRALow-Rank Adaptation就像救星一样出现了。它的核心思想特别聪明既然大模型的参数已经学得很好了我们微调时没必要动所有参数只给其中一些关键模块“打补丁”就行了。这个“补丁”就是低秩适配器而**target_modules**这个参数就是决定你把“补丁”贴在哪里的关键。你可以把它想象成给一栋大楼做局部装修target_modules就是你决定要翻新哪几个房间——是只翻新客厅和卧室比如q_proj和v_proj还是连厨房、书房一起动了。为什么说它是灵魂因为配置对了你就能用极小的代价1%-3%的可训练参数获得接近全量微调的效果配置错了可能训练半天模型性能纹丝不动白白浪费电费。我见过不少朋友直接照抄网上的配置把为Llama写的[“q_proj”, “v_proj”]套用在ChatGLM上结果效果很差其实就是没搞懂target_modules需要“因地制宜”。这篇文章我就结合自己踩过的坑和实战经验带你彻底搞懂LoRAConfig中target_modules的配置策略让你不仅能“用”起来更能“配”得准。2. 庖丁解牛深入理解target_modules的底层逻辑在动手配置之前我们得先明白我们在对模型的哪部分动手术。现代的大语言模型比如Llama、Qwen、ChatGLM虽然架构各有不同但其Transformer层的核心组件是相通的。理解这些组件是精准配置target_modules的前提。2.1 Transformer层的核心模块与LoRA的切入点一个标准的Transformer块里有几个关键的线性投影层Linear Layer它们是LoRA最常“附着”的地方Q/K/V投影层这是注意力机制的核心。q_proj查询、k_proj键、v_proj值负责将输入向量投影到不同的子空间。微调这些层直接影响模型“关注什么”以及“如何整合信息”。实践中微调q_proj和v_proj被证明是一个高效组合能在改变模型理解能力的同时保持较好的稳定性。输出投影层注意力计算完成后o_proj输出投影层负责把多个注意力头的输出整合起来。微调它会影响信息聚合的方式。前馈网络层每个Transformer块里还有多层感知机通常包含gate_proj、up_proj、down_proj等层。它们是模型进行复杂非线性变换的地方微调它们能调整模型对特征的处理深度。那么LoRA是怎么工作的呢它并不直接修改这些原始线性层记为W的权重。相反它冻结W然后并行地增加两个小的、可训练的矩阵A和B。其中B*A的乘积是一个低秩矩阵。前向传播时输出变为h Wx (B*A)x。我们只训练A和B从而实现了高效微调。target_modules列表里的每一个字符串就是告诉LoRA“请在这些名为XXX的线性层旁边挂上你的A和B适配器。”2.2 不同配置策略的效果对比不是所有模块对微调的贡献都一样。下面这个表格是我基于多个项目经验总结的常见配置策略及其影响配置策略target_modules 示例参数量占比效果特点适用场景注意力聚焦型[“q_proj”, “v_proj”]~1%效果稳定收敛快通用性强。能有效调整模型的内容关联和输出价值。新手首选大部分文本生成、对话任务。全注意力型[“q_proj”, “k_proj”, “v_proj”, “o_proj”]~2%对注意力机制调整更全面可能学到更复杂的模式但有过拟合风险。需要深度调整模型注意力分布的任务如复杂推理、代码生成。前馈网络型[“gate_proj”, “up_proj”, “down_proj”]~1.5%更侧重于改变模型内部的特征表示对某些特定领域知识注入可能更有效。领域适配如医学、法律文本希望改变模型“知识”结构。混合型[“q_proj”, “v_proj”, “down_proj”]~2%兼顾注意力与特征变换灵活性高。任务目标不明确想进行探索性实验时。全线性层型所有线性层3%-5%可训练参数最多潜力最大但显存消耗和训练时间也显著增加。资源充足追求极限性能或对模型进行大幅度改造。对于刚入门的朋友我强烈建议从“注意力聚焦型”开始也就是只微调q_proj和v_proj。这个组合经过了大量实践检验在绝大多数任务上都能提供一个坚实的基线效果。等你熟悉了整个流程再像搭积木一样尝试添加其他模块观察效果变化这个过程本身就很有乐趣。3. 实战指南如何为你的模型动态查找并配置target_modules最头疼的情况来了你拿到一个全新的、文档不全的模型怎么知道它内部模块叫什么名字难道要一层层去翻源码吗当然不用。下面我分享几个我常用的“傻瓜式”查找方法。3.1 通用查找脚本一键获取所有线性层这是最直接、最可靠的方法。无论什么模型只要它是PyTorch的nn.Module我们就能遍历它。下面的脚本兼容了普通线性层和4bit量化线性层如果你用了QLoRAfrom transformers import AutoModelForCausalLM import torch import bitsandbytes as bnb def find_all_linear_names(model): 找出模型中所有线性层的名字。 支持普通 torch.nn.Linear 和 bitsandbytes.nn.Linear4bit。 # 定义我们要查找的线性层类型 linear_classes [torch.nn.Linear] # 如果安装了bitsandbytes也把4bit线性层加入查找列表 if hasattr(bnb.nn, Linear4bit): linear_classes.append(bnb.nn.Linear4bit) if hasattr(bnb.nn, Linear8bitLt): # 也支持8bit linear_classes.append(bnb.nn.Linear8bitLt) target_modules set() for name, module in model.named_modules(): # 检查当前模块是否是我们要找的线性层类型之一 if any([isinstance(module, cls) for cls in linear_classes]): # 通常我们取模块名的最后一部分如 model.layers.0.self_attn.q_proj - q_proj # 但有时直接使用全名name作为target_modules更精确取决于PEFT库的版本 # 这里提供两种策略 # 策略1取最后一部分通用但可能重复 parts name.split(.) target_modules.add(parts[-1]) # 策略2打印全名供你手动选择 print(f发现线性层: {name}) print(f\n所有唯一的线性层类型: {list(target_modules)}) return list(target_modules) # 使用示例 model_name Qwen/Qwen2.5-7B-Instruct # 换成你的模型 model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypetorch.float16, device_mapauto) linear_names find_all_linear_names(model)运行这个脚本你会得到一个类似[q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj, lm_head]的列表。这个列表就是你可以放入target_modules的候选池。一个重要提示早期PEFT库要求target_modules使用模块名的最后一部分如q_proj但现在新版本通常支持使用完整的点分名称如model.layers.0.self_attn.q_proj。使用完整名称可以精确定位到每一层但配置更复杂。我建议新手先用短名称如q_proj这会让LoRA作用于所有同名层简单有效。3.2 针对特殊架构定位MoE路由层等特殊模块对于像Mixtral、Qwen-MoE这类混合专家模型除了常规的线性层我们可能特别想微调它的路由层Router/Gate。这个层决定了每个token被发送给哪个专家网络微调它对于让模型学会针对新任务分配专家资源至关重要。查找路由层需要一点“模式匹配”的技巧因为不同模型的命名习惯不同def find_router_layers(model): 专门查找MoE模型中的路由/门控层。 # 常见路由层名称的关键词 router_keywords [gate, router, moe, expert_choice, noisy_top_k] target_modules [] for name, module in model.named_modules(): name_lower name.lower() # 如果模块名包含任何路由关键词并且它通常是一个线性层 if any([keyword in name_lower for keyword in router_keywords]): # 再次确认它是线性层可选但推荐 if isinstance(module, (torch.nn.Linear, bnb.nn.Linear4bit)): print(f发现路由层: {name} (类型: {type(module).__name__})) # 通常直接使用完整名称因为路由层可能每层都有且名称唯一 target_modules.append(name) if not target_modules: print(警告未找到明显的路由层。模型可能不是MoE架构或命名方式不同。) return target_modules # 在MoE模型上使用 # model AutoModelForCausalLM.from_pretrained(Qwen/Qwen2.5-MoE-A2.7B) # router_layers find_router_layers(model) # print(f路由层列表: {router_layers})找到路由层后你可以把它们单独加入target_modules列表例如target_modules[q_proj, v_proj] router_layers实现对注意力机制和路由机制的联合微调。4. 经典模型target_modules配置模板与避坑指南知道了查找方法我们来看看一些流行模型的“标配”。这些配置是社区经过大量实验总结出来的可以直接套用能帮你避开很多坑。4.1 LLaMA / LLaMA-2 / LLaMA-3 系列这是目前生态最完善的家族。其结构清晰模块命名规范。from peft import LoraConfig # 对于 7B/13B 等规模的LLaMA模型这是一个黄金配置 lora_config LoraConfig( r8, # 秩7B模型用870B模型可以考虑16或32 lora_alpha32, # 缩放因子通常设为r的2-4倍 target_modules[q_proj, v_proj], # 核心配置 lora_dropout0.05, biasnone, task_typeCAUSAL_LM, )避坑点有些教程会建议也加上k_proj和o_proj。对于简单的指令跟随任务只加q_proj和v_proj通常就够了加上k_proj有时反而会让训练不稳定。o_proj参数较多加上会显著增加训练参数量需要权衡。4.2 ChatGLM / ChatGLM2 / ChatGLM3 系列ChatGLM系列采用了独特的query_key_value投影它将Q、K、V三个投影矩阵合并到了一个大的线性层中。这是最大的不同# 对于 ChatGLM2/3 lora_config LoraConfig( r8, lora_alpha32, target_modules[query_key_value], # 注意这里是一个模块 lora_dropout0.05, biasnone, task_typeCAUSAL_LM, )避坑点千万不要把ChatGLM的target_modules写成[“q_proj”, “k_proj”, “v_proj”]因为它的结构里根本没有这三个独立的层。写错了会导致PEFT库找不到目标模块LoRA适配器无法注入你的训练就是在做无用功。务必先用上一节的查找脚本确认模块名。4.3 Qwen 系列Qwen通义千问系列模型结构更接近LLaMA但命名上有些许差异。# 对于 Qwen1.5 / Qwen2 系列 lora_config LoraConfig( r8, lora_alpha32, # Qwen的注意力层命名可能是 q_proj, k_proj, v_proj, o_proj # 但建议先用脚本确认有时会是 attn.q_proj 这样的格式 target_modules[q_proj, v_proj, o_proj], # 包含o_proj是Qwen上常见做法 lora_dropout0.1, # Qwen模型有时需要稍高的dropout biasnone, task_typeCAUSAL_LM, )避坑点不同版本的Qwen模型如Qwen1.5-7B, Qwen2-7B, Qwen2.5-7B模块名可能微调。对于Qwen-MoE模型除了常规层一定要用find_router_layers脚本把路由层找出来加上。4.4 其他模型BLOOM, GPT-NeoX, Baichuan等对于其他架构一个通用的原则是先查后用。BLOOM, GPT-NeoX: 类似ChatGLM常用target_modules[“query_key_value”]。Baichuan: 结构类似LLaMA常用target_modules[“W_pack”, “o_proj”]或[“q_proj”, “v_proj”]其中W_pack对应了QKV的合并投影。InternLM: 结构类似LLaMA常用target_modules[“q_proj”, “v_proj”]。最稳妥的方法永远是运行find_all_linear_names脚本看看输出列表里有哪些你熟悉的“关键词”如q, k, v, gate, up, down等然后参考同类模型的配置进行选择。5. 高级技巧与性能调优让LoRA效果更上一层楼配置对了target_modules只是第一步。要想让LoRA发挥最大威力还需要一些调优技巧。这部分是我在多次项目迭代中积累的经验。5.1 秩r与alpha的协同调整不只是默认值r和lora_alpha是LoRA中除target_modules外最重要的超参数。秩r决定了低秩矩阵A和B的维度A: [dim, r],B: [r, dim]。r越大适配器能力越强但参数越多越容易过拟合。Alphalora_alpha缩放因子。在训练时LoRA的输出会乘以alpha / r。你可以把alpha理解为学习率的一个调节器。更大的alpha意味着LoRA的更新对原始输出的影响更大。一个常见的误解是盲目增大r。我的经验是对于特定任务先固定一个较小的r如8然后通过调整alpha来观察效果变化往往比单纯增大r更有效。例如当你发现模型学习速度太慢时可以尝试将alpha从32提高到64甚至128这能放大梯度信号。相反如果训练不稳定或过拟合可以降低alpha。这里有一个参考表格模型规模推荐起始r值推荐起始alpha调整策略7B以下832效果不足时优先尝试增大alpha至64。仍不足再考虑r16。13B-30B1664此规模模型容量大可承受稍高的r值。alpha可尝试与r等值。70B以上32128大模型需要更大的适配器来捕捉任务特征。可尝试r64, alpha256。5.2 Dropout与偏置容易被忽略的稳定器lora_dropout和bias这两个参数对训练稳定性有微妙影响。lora_dropout在LoRA的旁路分支B*A*x上应用Dropout。这是一个非常有效的正则化手段尤其在你微调较多模块如全线性层或数据量较小时可以防止过拟合。我通常从0.05开始如果训练损失震荡大或验证集性能早衰会尝试提高到0.1。bias处理原模型线性层偏置项的方式。“none”表示不训练偏置“all”训练所有偏置“lora_only”只训练LoRA引入的偏置。99%的情况用“none”就好。训练原模型的偏置项相当于在动原模型的参数违背了LoRA“冻结原权重”的初衷且容易引入不稳定性。5.3 结合QLoRA在极限显存下进行微调当你面对一个巨大的模型连LoRA都因为要加载原模型FP16副本而显存不足时QLoRA就是终极武器。它把原模型权重量化为4bit存储大大降低了显存占用然后在训练时将权重反量化为BF16进行计算并同样配合LoRA适配器。配置QLoRA时target_modules的选择策略和普通LoRA完全一致。唯一的区别是模型加载方式from transformers import BitsAndBytesConfig, AutoModelForCausalLM from peft import LoraConfig, get_peft_model import torch # 1. 配置4bit量化加载 bnb_config BitsAndBytesConfig( load_in_4bitTrue, # 核心4bit量化加载 bnb_4bit_quant_typenf4, # 量化数据类型NF4是优化过的格式 bnb_4bit_compute_dtypetorch.bfloat16, # 计算时用的精度BF16平衡速度和精度 bnb_4bit_use_double_quantTrue, # 二次量化进一步压缩 ) # 2. 以量化方式加载基础模型 model AutoModelForCausalLM.from_pretrained( meta-llama/Llama-2-70b-hf, quantization_configbnb_config, device_mapauto ) # 3. 配置LoRA这里的target_modules和之前没任何区别 peft_config LoraConfig( r16, lora_alpha64, target_modules[q_proj, v_proj, o_proj], # 照常配置 lora_dropout0.1, biasnone, task_typeCAUSAL_LM ) # 4. 创建PEFT模型 model get_peft_model(model, peft_config) # 现在你可以用很少的显存来训练这个700亿参数的模型了实测下来使用QLoRA后训练70B模型所需的显存从超过140GB降到了不到20GB让单卡训练超大模型成为可能。这时候精心配置的target_modules价值就更大了因为它是你在有限算力下精准影响模型行为的唯一杠杆。6. 实战演练一个完整的代码示例与调试技巧光说不练假把式。让我们用一个完整的、可运行的例子把前面所有知识串起来。假设我们要用QLoRA微调一个Qwen2.5-7B模型完成一个文本分类任务。# 步骤1环境准备与导入 import torch from transformers import ( AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer, DataCollatorForLanguageClassification, BitsAndBytesConfig ) from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training from datasets import load_dataset import os # 步骤2动态查找目标模块关键 def get_target_modules(model_name): 根据模型名称返回推荐的target_modules并支持自动查找 # 已知模型的配置模板 preset_configs { llama: [q_proj, v_proj], chatglm: [query_key_value], qwen: [q_proj, v_proj, o_proj], baichuan: [W_pack, o_proj], } # 这里简化处理实际中可以根据model_name关键字匹配 # 更推荐下面自动查找的方式 model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.float16, device_mapauto, trust_remote_codeTrue # 对于Qwen等模型可能需要 ) linear_names find_all_linear_names(model) # 使用前面定义的函数 del model # 释放显存 torch.cuda.empty_cache() # 智能选择优先选择已知的关键模块 preferred_modules [] for module in [q_proj, v_proj, query_key_value, W_pack]: if module in linear_names: preferred_modules.append(module) # 如果没找到首选模块就返回前几个线性层通常包含关键层 if not preferred_modules and linear_names: preferred_modules linear_names[:4] # 取前4个作为尝试 print(f警告未找到标准模块将使用 {preferred_modules}) return preferred_modules # 步骤3主流程 model_name Qwen/Qwen2.5-7B-Instruct target_modules_list get_target_modules(model_name) print(f为模型 {model_name} 选择的 target_modules: {target_modules_list}) # 步骤4配置QLoRA与加载模型 bnb_config BitsAndBytesConfig( load_in_4bitTrue, bnb_4bit_quant_typenf4, bnb_4bit_compute_dtypetorch.bfloat16, ) model AutoModelForCausalLM.from_pretrained( model_name, quantization_configbnb_config, device_mapauto, trust_remote_codeTrue ) # 为k-bit训练准备模型 model prepare_model_for_kbit_training(model) # 步骤5配置LoRA使用动态查找的模块 peft_config LoraConfig( r8, lora_alpha32, target_modulestarget_modules_list, # 动态配置 lora_dropout0.05, biasnone, task_typeCAUSAL_LM, ) model get_peft_model(model, peft_config) model.print_trainable_parameters() # 打印可训练参数量确认配置生效 # 步骤6加载tokenizer和数据示例 tokenizer AutoTokenizer.from_pretrained(model_name) tokenizer.pad_token tokenizer.eos_token # 设置填充token # 假设有一个分类数据集需要将文本转换为模型输入格式 def preprocess_function(examples): # 你的数据预处理逻辑 texts [f分类任务{text} 类别 for text in examples[text]] return tokenizer(texts, truncationTrue, paddingmax_length, max_length512) # dataset load_dataset(your_dataset) # tokenized_dataset dataset.map(preprocess_function, batchedTrue) # 步骤7配置训练参数并训练 training_args TrainingArguments( output_dir./qwen_lora_finetuned, per_device_train_batch_size4, gradient_accumulation_steps4, num_train_epochs3, learning_rate2e-4, # LoRA学习率通常比全量微调大1e-4到5e-4 fp16True, logging_steps10, save_steps500, save_total_limit2, remove_unused_columnsFalse, ) # trainer Trainer( # modelmodel, # argstraining_args, # train_datasettokenized_dataset[train], # data_collatorDataCollatorForLanguageClassification(tokenizertokenizer), # ) # trainer.train()调试技巧始终打印可训练参数model.print_trainable_parameters()。如果这个数字小得离谱比如只有几万很可能target_modules没配置对LoRA适配器没成功注入。观察训练损失如果训练损失几乎不下降检查target_modules是否包含了模型的核心层如注意力投影层。如果损失下降很快但验证集效果差可能是r太大或alpha太大导致过拟合尝试增加lora_dropout或减小alpha。版本兼容性PEFT库更新很快注意target_modules的命名规范是否有变化。当遇到KeyError时先用查找脚本打印出所有模块的全名再尝试使用全名进行配置。配置target_modules不是一个一劳永逸的步骤而是一个需要根据模型、任务和资源进行权衡的实践过程。从默认配置开始基于实验反馈进行迭代你就能越来越得心应手让LoRA这把利器真正为你所用。

相关新闻

智能家居HA进阶篇:三步搞定Home Assistant远程访问与内网穿透

智能家居HA进阶篇:三步搞定Home Assistant远程访问与内网穿透

1. 为什么你的Home Assistant只能在家玩?远程访问的痛点与解决方案 折腾智能家居的朋友,相信对Home Assistant(简称HA)都不陌生。它就像一个万能翻译官,能把小米、苹果、易微联等不同品牌的智能设备都整合到一个平台上…

2026/5/17 11:38:27 阅读更多 →
Proteus仿真实战:基于STM32的智能书房环境调控系统(附仿真与源码)

Proteus仿真实战:基于STM32的智能书房环境调控系统(附仿真与源码)

1. 从零开始:为什么选择Proteus来仿真你的第一个智能硬件项目? 很多刚接触嵌入式开发的朋友,尤其是学生和自学者,常常会遇到一个很现实的问题:硬件太贵了,而且容易烧。买一块STM32开发板,再配上…

2026/7/4 7:33:32 阅读更多 →
npm镜像切换全攻略:从淘宝到华为云的5种国内源配置技巧

npm镜像切换全攻略:从淘宝到华为云的5种国内源配置技巧

npm镜像切换全攻略:从淘宝到华为云的5种国内源配置技巧 最近在帮团队新来的同事配置开发环境,看着他因为npm install卡在“resolving tarballs”这一步而抓耳挠腮,我仿佛看到了几年前的自己。对于国内开发者来说,网络环境的不稳定…

2026/7/3 4:50:10 阅读更多 →

最新新闻

因为刷短视频导致流量费用每个月暴涨5块钱

因为刷短视频导致流量费用每个月暴涨5块钱

上个月有一天流量使用了10G,这几乎不太可能,但是也不是完全不可能。如果120K/s 9个小时不停下载--------------目前就是这个状态。然后就会有4G/天 流量花费一个月下来就是120G,本身流量只有20G,虽然剩下流量不限量,但…

2026/7/5 1:34:19 阅读更多 →
【无人机】基于玻尔兹曼引导的 Q 学习用于在受洪水影响的无线网络中优化 3D 无人机部署附matlab代码

【无人机】基于玻尔兹曼引导的 Q 学习用于在受洪水影响的无线网络中优化 3D 无人机部署附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现私信🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、…

2026/7/5 1:34:19 阅读更多 →
【无人机动态避障】基于金豺优化算法GJO融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码

【无人机动态避障】基于金豺优化算法GJO融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现私信 🍊个人信条:做科研,博学之、审问之、慎思之、明辨…

2026/7/5 1:30:17 阅读更多 →
Anthropic Fable 5 Cyber Jailbreak Severity:AI越狱统一评级体系深度解析

Anthropic Fable 5 Cyber Jailbreak Severity:AI越狱统一评级体系深度解析

引言:AI安全的"CVSS时刻" 2026年7月3日,Anthropic正式发布了**Cyber Jailbreak Severity(CJS)**评级体系——这是全球首个针对AI模型"越狱"行为严重程度的标准化评估框架。同一天,Fable 5在经历18天出口管制后重新上线,搭载了一套全新的多层级安全防…

2026/7/5 1:30:17 阅读更多 →
AI 压测数据回放:让模型读报告之前先校准口径

AI 压测数据回放:让模型读报告之前先校准口径

AI 压测数据回放:让模型读报告之前先校准口径 一、压测报告不能直接丢给模型 AI 可以帮助分析压测结果,但前提是输入数据口径清楚。很多压测报告里混着预热阶段、限流阶段、错误重试、下游故障和业务噪声。如果直接让模型总结,很容易得到一段…

2026/7/5 1:22:14 阅读更多 →
AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比

AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比

AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比 一、评测体系设计与方法论 AI编码助手已成为开发效率的关键杠杆。本次评测聚焦三项主流工具的实际表现。从四个维度建立可复现的量化评测框架。 %%{init: {theme: base}}%% radartitle AI编码助手…

2026/7/5 1:20:14 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻