Views
No views yet
phi-4 has adopted a robust safety post-training approach. This approach leverages a variety of both open-source and in-house generated synthetic datasets. The overall technique employed to do the safety alignment is a combination of SFT (Supervised Fine-Tuning) and iterative DPO (Direct Preference Optimization), including publicly available datasets focusing on helpfulness and harmlessness as well as various questions and answers targeted to multiple safety categories.phi-4 followed a multi-faceted evaluation approach. Quantitative evaluation was conducted with multiple open-source safety benchmarks and in-house tools utilizing adversarial conversation simulation. For qualitative safety evaluation, we collaborated with the independent AI Red Team (AIRT) at Microsoft to assess safety risks posed by phi-4 in both average and adversarial user scenarios. In the average user scenario, AIRT emulated typical single-turn and multi-turn interactions to identify potentially risky behaviors. The adversarial user scenario tested a wide range of techniques aimed at intentionally subverting the model’s safety training including jailbreaks, encoding-based attacks, multi-turn attacks, and adversarial suffix attacks.phi-4 with a set of models over OpenAI’s SimpleEval benchmark.| Category | Benchmark | 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 |
|---|---|---|---|---|---|---|---|---|
| Popular Aggregated Benchmark | MMLU | 84.8 | 77.9 | 79.9 | 81.8 | 86.3 | 85.3 | 88.1 |
| Science | GPQA | 56.1 | 31.2 | 42.9 | 40.9 | 49.1 | 49.0 | 50.6 |
| Math | 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 |
| Code Generation | HumanEval | 82.6 | 67.8 | 72.1 | 86.2 | 78.9* | 80.4 | 90.6 |
| Factual Knowledge | SimpleQA | 3.0 | 7.6 | 5.4 | 9.9 | 20.9 | 10.2 | 39.4 |
| Reasoning | DROP | 75.5 | 68.3 | 85.5 | 79.3 | 90.2 | 76.7 | 80.9 |
phi-4 is best suited for prompts using the chat format as follows:1<|im_start|>system<|im_sep|>
2You are a medieval knight and must provide explanations to modern people.<|im_end|>
3<|im_start|>user<|im_sep|>
4How should I explain the Internet?<|im_end|>
5<|im_start|>assistant<|im_sep|>transformers1import transformers
2
3pipeline = transformers.pipeline(
4 "text-generation",
5 model="microsoft/phi-4",
6 model_kwargs={"torch_dtype": "auto"},
7 device_map="auto",
8)
9
10messages = [
11 {"role": "system", "content": "You are a medieval knight and must provide explanations to modern people."},
12 {"role": "user", "content": "How should I explain the Internet?"},
13]
14
15outputs = pipeline(messages, max_new_tokens=128)
16print(outputs[0]["generated_text"][-1])ReasonFlow1...
2config = ReasonFlowConfig(
3 num_of_thinkers=NUM_OF_THINKERS,
4 num_of_thoughts=NUM_OF_THOUGHTS,
5 topk_thinkers=TOPK_THINKERS,
6)
7
8index = 1
9
10reason_flow = ReasonFlow(config, model, tokenizer)
11output = reason_flow.generate_thoughts(chat_like_texts[index],
12 max_new_tokens=4096,
13 stream=True,
14 device='cuda',
15 torch_dtype='bfloat16',
16 do_sample=False,
17 temperature=None,
18 top_p=None,
19 top_k=None,
20 repetition_penalty=None)Monte-Carlo Tree Search1...
2model.to("cuda")
3input_tokens = input_ids['input_ids'].to('cuda')
4
5model.eval()
6
7print(tokenizer.decode(input_tokens[0]))
8
9while len(input_tokens[0]) < MAX_TOTAL_TOKENS:
10 mcts = MCTS(model, tokenizer, max_depth=MAX_DEPTH, num_simulations=MAX_SIMULATIONS, temperature=TEMPERATURE, max_new_tokens=MAX_NEW_TOKENS, stop_tokens=model.config.eos_token_id)
11
12 new_tokens = mcts.search(input_tokens)
13
14 new_tokens = new_tokens[..., input_tokens.shape[-1]:]
15
16 input_tokens = torch.cat([input_tokens, new_tokens], dim=-1)
17
18 print(tokenizer.decode(new_tokens[0]), end='')
19
20 if has_eos(new_tokens, eos_token=model.config.eos_token_id):
21 break
22phi-4 can potentially behave in ways that are unfair, unreliable, or offensive. Some of the limiting behaviors to be aware of include:phi-4 is not intended to support multilingual use.phi-4 training data is based in Python and uses common packages such as typing, math, random, collections, datetime, itertools. If the model generates Python scripts that utilize other packages or scripts in other languages, we strongly recommend users manually verify all API uses.