1. 微调与上下文学习的本质差异
在大型语言模型应用中,模型微调(Fine-tuning)和上下文学习(In-Context Learning)是两种截然不同的技术路线。模型微调通过调整模型参数来适应特定任务,而上下文学习则完全保持模型参数不变,仅通过设计提示词(prompt)来引导模型输出。
1.1 模型微调的技术实现
模型微调通常分为以下几种类型:
- 全量微调(Full Fine-tuning):更新模型所有参数
- 参数高效微调(PEFT):包括LoRA、QLoRA等方法,仅更新少量参数
- 适配器微调(Adapter):在模型层间插入小型神经网络
以EmoLLM项目为例,其采用了多种微调方式:
python复制# QLoRA微调配置示例(来自EmoLLM项目)
model = AutoModelForCausalLM.from_pretrained(
"internlm/internlm2-7b",
load_in_4bit=True, # 4位量化
device_map="auto",
quantization_config=BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4"
)
)
1.2 上下文学习的运作机制
上下文学习依赖三个关键要素:
- 任务描述:明确说明需要模型完成的任务
- 示例演示:提供少量输入-输出示例
- 问题提出:最后给出需要解决的实际问题
典型示例:
code复制请根据以下对话示例,以心理咨询师的身份回复用户:
示例1:
用户:最近工作压力很大,晚上总是失眠
AI:听起来你正在经历一段困难时期。能具体说说是什么样的工作压力吗?
示例2:
用户:和伴侣吵架后感觉很沮丧
AI:关系中产生矛盾确实会让人难受。你愿意分享这次争吵的具体原因吗?
现在请回复这位用户:
用户:我觉得自己什么都做不好,很失败
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
