探索提示微调,以在不完全重新训练的情况下高效适应基础模型。了解软提示如何减少像 YOLO26 这样的 AI 任务的延迟和存储需求。
提示微调是一种资源高效的技术,用于将预训练的基础模型适应于特定的下游任务,而无需重新训练整个网络的计算开销。与更新模型所有或大部分参数的传统微调不同,提示微调冻结预训练的模型权重,仅优化一小组可学习的向量——称为“软提示”——这些向量被添加到输入数据之前。这种方法允许一个单一的、庞大的骨干网络同时服务于多个专业应用,显著降低存储需求和推理延迟切换成本。
在标准的机器学习 (ML) 工作流中,文本或图像等输入被转换为称为嵌入的数值表示。提示微调将额外的、可训练的嵌入向量插入到此输入序列中。在训练阶段,系统使用反向传播来计算梯度,但优化算法只更新软提示的值,而保持庞大的模型结构不变。
这种方法是参数高效微调 (PEFT) 的一种形式。通过学习这些连续向量,模型被“引导”至期望的输出。尽管这一概念起源于自然语言处理 (NLP),但它已成功应用于计算机视觉 (CV) 任务,通常被称为视觉提示微调 (VPT)。
为了理解提示微调的实用性,有必要将其与AI领域中的类似术语区分开来:
提示微调支持在资源受限环境中可扩展地部署 AI,这是Ultralytics Platform 模型管理所秉持的核心理念。
以下PyTorch 示例展示了核心的机械概念:冻结模型的主层并创建一个单独的、可训练的参数(“软提示”),该参数经过优化以影响输出。
import torch
import torch.nn as nn
# 1. Define a dummy backbone (e.g., a pre-trained layer)
backbone = nn.Linear(10, 5)
# 2. Freeze the backbone weights (crucial for prompt tuning)
for param in backbone.parameters():
param.requires_grad = False
# 3. Create a 'soft prompt' vector that IS trainable
# This represents the learnable embeddings prepended to inputs
soft_prompt = nn.Parameter(torch.randn(1, 10), requires_grad=True)
# 4. Initialize an optimizer that targets ONLY the soft prompt
optimizer = torch.optim.SGD([soft_prompt], lr=0.1)
# Verify that only the prompt is being trained
trainable_params = sum(p.numel() for p in [soft_prompt] if p.requires_grad)
print(f"Optimizing {trainable_params} parameters (Soft Prompt only)")
随着模型规模的扩大,廉价地适应它们的能力变得至关重要。尽管像YOLO26 这样的架构已经针对效率进行了高度优化,但冻结骨干网络和高效适应的原则是边缘 AI 未来的基础。类似于提示微调的技术允许内存有限的设备执行从目标检测到分割的各种任务,只需交换小型配置文件,而无需重新加载庞大的神经网络。
对于寻求高效训练和部署的开发者而言,利用像Ultralytics Platform 这样的工具可确保模型针对其特定的硬件目标进行优化,借鉴现代MLOps 的最佳实践。
开启您的机器学习未来之旅