微软研究院最近放出了Phi家族的新成员——Phi-4,这确实值得关注。技术报告已经发布,模型也同步开源。Phi-4的训练数据量达到了9.8T tokens,目标很明确:让一个小模型通过高质量和高级推理的数据,去拼出大模型的效果。数据源包括合成数据集、经过严格筛选的公共网络数据,以及一些学术书籍和问答数据集。

这款模型参数量为14B,是一个稠密的Decoder-Only架构,上下文长度16K tokens,采用的也是MIT开源协议,对研究者相当友好。在训练流程上,它结合了监督微调和直接偏好优化,确保指令遵循的精准性,同时加入了严格的安全措施。
预期用途
| 主要用例 |
Phi-4主要用于加速语言模型的研究,作为生成式AI的基础模块。它适合那些需要通用人工智能能力的场景,尤其是英语环境下的应用,具体包括: 1. 内存或计算资源受限的环境 |
| 超出范围的用例 |
Phi-4并非为所有下游任务专门设计,开发者在选择用例时需要注意: 1. 考虑语言模型的常见局限性,在高风险场景下必须充分评估准确性和公平性 |
数据概览
训练数据集
Phi-4的训练数据是在Phi-3基础上扩展而来的,来源非常多样:
- 公开文档经过严格质量筛选,重点保留高质量教育数据和代码
- 新合成的“类教科书”数据,专门覆盖数学、编码、常识推理、科学知识等主题
- 获得授权的学术书籍和问答数据集
- 高质量聊天格式的监督数据,覆盖广泛主题,反映不同偏好
多语言数据大约占8%的比例,团队的核心策略是提升推理能力,所以数据筛选时格外关注知识水平的准确性。
基准数据集
评估方面,Phi-4使用了OpenAI的SimpleEval以及内部基准。具体基准包括:
- MMLU:多任务语言理解
- MATH:竞赛级数学问题
- GPQA:研究生级别的科学问题
- DROP:复杂理解与推理
- MGSM:多语言小学数学
- HumanEval:功能代码生成
- SimpleQA:事实回应
安全
方法
安全方面,Phi-4采用了强化的后训练流程。团队利用开源和内部生成的合成数据集,结合SFT和迭代DPO技术,重点关注有用性与无害性,覆盖多个安全类别的QA数据。
安全评估与红队
发布前,评估是多维度的。定量评估用了多个开源安全基准和对抗性对话模拟。定性评估则与微软的独立AI红队合作,在普通用户场景和对抗性用户场景中都进行了测试。普通场景模拟典型的多轮交互,对抗场景则尝试越狱、编码攻击、多轮攻击等各种手段,来考验模型的安全底线。
模型质量
我们直接看数据,用OpenAI的SimpleEval基准与其他模型做了对比。表格中数字越高,表现越好:
| 类别 | 基准 | phi-4(14B) | phi-3(14B) | Qwen 2.5(14B instruct) | GPT-4o-mini | Llama-3.3(70B instruct) | Qwen 2.5(72B instruct) | GPT-4o |
| 热门综合基准 | MMLU | 84.8 | 77.9 | 79.9 | 81.8 | 86.3 | 85.3 | 88.1 |
| 科学 | GPQA | 56.1 | 31.2 | 42.9 | 40.9 | 49.1 | 49.0 | 50.6 |
| 数学 | MGSM MATH |
80.6 80.4 |
53.5 44.6 |
79.6 75.6 |
86.5 73.0 |
89.1 66.3* |
87.3 80.0 |
90.4 74.6 |
| 代码生成 | HumanEval | 82.6 | 67.8 | 72.1 | 86.2 | 78.9* | 80.4 | 90.6 |
| 事实知识 | SimpleQA | 3.0 | 7.6 | 5.4 | 9.9 | 20.9 | 10.2 | 39.4 |
| 推理 | DROP | 75.5 | 68.3 | 85.5 | 79.3 | 90.2 | 76.7 | 80.9 |
表格中部分Llama分数低于官方报告,这是因为simple-evals的格式要求比较严格,而Llama模型在这方面表现不佳。Phi-4使用simple-evals框架是为了保证可重复性。
用法
输入格式
Phi-4最适合使用聊天格式的提示,例如:
<|im_start|>system<|im_sep|>You are a medieval knight and must provide explanations to modern people.<|im_end|><|im_start|>user<|im_sep|>How should I explain the Internet?<|im_end|><|im_start|>assistant<|im_sep|>
与Transformers集成
import transformers
model_dir = "LLM-Research/phi-4"
pipeline = transformers.pipeline(
"text-generation",
model=model_dir,
model_kwargs={"torch_dtype": "auto"},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a medieval knight and must provide explanations to modern people."},
{"role": "user", "content": "How should I explain the Internet?"},
]
outputs = pipeline(messages, max_new_tokens=128)
print(outputs[0]["generated_text"][-1])
使用Ollama运行Phi-4
- 启动Ollama服务:
ollama serve - 运行Phi-4的GGUF版本:
ollama run unsloth/phi-4-GGUF
模型微调
这里用ms-swift 3.0对Phi-4进行自我认知微调。首先确保环境正确安装:
pip install ms-swift
微调脚本示例如下:
CUDA_VISIBLE_DEVICES=0 swift sft \ --model LLM-Research/phi-4 \ --train_type lora \ --dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' 'AI-ModelScope/alpaca-gpt4-data-en#500' 'swift/self-cognition#500' \ --torch_dtype bfloat16 \ --num_train_epochs 1 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --learning_rate 1e-4 \ --lora_rank 8 \ --lora_alpha 32 \ --target_modules all-linear \ --gradient_accumulation_steps 16 \ --eval_steps 50 \ --sa ve_steps 50 \ --sa ve_total_limit 5 \ --logging_steps 5 \ --max_length 2048 \ --output_dir output \ --system 'You are a helpful assistant.' \ --warmup_ratio 0.05 \ --dataloader_num_workers 4 \ --model_author 魔搭 \ --model_name 狗蛋
训练完成后,使用推理脚本:
CUDA_VISIBLE_DEVICES=0 swift infer --adapters output/vx-xxx/checkpoint-xxx --stream true --temperature 0 --max_new_tokens 2048
负责任的AI考量
和其他语言模型一样,Phi-4也可能出现不公平、不可靠或令人反感的行为。以下几点需要特别注意:
- 服务质量:模型主要针对英语训练,其他语言性能会大幅下降,不支持多语言使用。
- 刻板印象延续:可能会过度或过低代表某些群体,强化负面刻板印象。
- 不适当内容:可能产生冒犯性内容,需要额外防护措施。
- 信息可靠性:可能产生看似合理但不准确的内容。
- 代码范围有限:训练数据以Python为主,建议用户手动验证其他语言或包的API使用。
开发者应采用负责任AI实践,确保符合法律法规。高风险场景下必须充分评估模型的公平性、准确性和安全性。建议在应用层面构建反馈机制,结合RAG等技术来提升可靠性。对于可能产生有害内容或滥用的情况,需要部署相应的安全分类器和合规措施。
