在这个故事中,我们将深入探讨来自 Phi-4、GPT-4o 和 o1 等主要参与者的一些最新 AI 发展。
2024年1月7日,微软在 Hugging Face 上发布了小型语言模型(SLM)“Phi-4”。该模型根据 MIT 许可证提供,可以自由使用和修改用于商业用途。
Phi-4 是微软“Phi”系列中的最新模型,虽然它体积小,但在某些领域表现出色。特别是在数学推理方面,它的准确性超过了大规模语言模型(LLMs),并因其在专业任务中的应用而受到关注。
Phi-4 通过高质量数据和新的后训练技术提高了准确性,并已发布到 Azure AI Foundry 和 Hugging Face。
模型大小为 14B,如果是 4 位量化模型,应该可以在不错的 GPU 上运行。Meta 的 Llama3.2 和 Google 的 Gemma2 这两个开放模型的最小模型分别为 1B 和 2B,因此这比它们大一个尺寸。
我不确定微软对“小型”的定义是什么,但无论如何,这是一个可以公开和轻松使用的东西。
在本逐步指南中,我们将介绍 Phi-4 是什么,Phi-4 的特殊功能是什么,如何在本地使用 Phi-4,以及为什么它的表现优于 LLM。
什么是 Phi-4
Phi-4 是一种尝试展示与传统 AI 模型不同的方法。它的参数数量相对较少,仅为 140 亿,同时在性能上优于大型 AI 模型,如谷歌的 Gemini Pro 1.5。
特别引人注目的是它出色的数学推理能力。在由美国数学协会 (MAA) 主办的美国数学竞赛 (AMC) 中,Phi-4 在需要逻辑思维的问题上表现优于大型模型,例如解决复杂方程和数学证明。
这一结果显示了在科学研究、工程和金融建模等需要准确数值计算的领域中的应用潜力。
Phi-4 的特殊特点是什么?

Phi-4 基准测试结果如下:
-
• 在 MATH 和 MGSM 测试中得分超过 80%,超越了 Google Gemini Pro 和 OpenAI 的 GPT-4o-mini。 -
• 在数学推理能力方面表现优秀,这在金融、工程和科学研究中非常重要。 -
• 编程的 HumanEval 在基准测试中表现良好。

此外,Phi-4 的架构和训练过程非常强调精确性和效率。其 140 亿参数的解码器仅模型是在总计 9.8 万亿个来自协调和合成数据集的标记上进行训练的。
在训练方法方面,微软团队使用了监督微调和直接偏好优化(DPO)方法,以确保稳固的性能并解决公平性和稳定性等问题。
微软强调,Phi-4 的训练过程考虑了负责任的人工智能发展,并经过广泛的安全评估,包括攻击测试,以降低偏见、有害内容和虚假信息的风险。
本地安装
Hugging Face 中的模型相当大,约 30GB,在我的机器上运行有点困难。
我在想是否可以通过应用 4 位量化或其他方法让它在我的机器上运行,我发现 Ollama 有一个已经量化到 Q4_K_M 的模型,因此我非常感激能够借用它,并想分享我在使用过程中记录的工作笔记。
下载

ollama run phi4
注意: 当下载的模型扩展到内存中时,大小会略超过10GB,因此如果您在CPU上运行它,您需要至少有那么多的可用内存空间;如果您在GPU上运行它,您需要至少那么多的GPU内存,否则会出现错误。
如果模型成功下载,您应该会看到以下提示:
>>> Send a message (/? for help)
当您看到这个提示时,尝试发送一条消息。如果您使用的是GPU加速环境,您可能会很快得到响应。
>>> Hello!
Hello! Please let me know how I can assist you. If you have any questions, feel free to ask.
>>> Send a message (/? for help)
有了这个,我现在可以在本地使用Phi-4了!这非常有帮助。
现在,您可以使用Ollama轻松地在自己的机器上运行Phi-4!它甚至带有REST API!
这意味着具有相当于大约70B参数的LLM性能的模型可以在便携式PC上运行,而Ollama的REST API功能可以快速设置一个环境,以便可以从其他应用程序和库本地调用它。我期待在未来以各种方式利用这一点。
Phi-4 vs GPT-4o vs 和 o1
让我们比较 o1 和 GPT-4o,并验证 Phi-4 的性能。
接下来,我想提出一些应用问题,并验证结果是否与 LLMs GPT-4o 和 o1 的结果不同,以及它们是否更简单。
需要检查的应用问题如下:
-
1. 计算以下序列的第 20 个值:1, 1, 2, 3, 5, 8, …. -
2. 一家银行提供 5% 的年利率,按半年复利计算。如果存入 100 万美元,存 10 年后最终金额是多少? -
3. 如果 一个长方体的体积是 120 立方厘米,高是 6 厘米,宽是 4 厘米,那么它的长度是多少?
问题 1:将测试 你的准确性、简洁性 和 响应时间。
问题 2:将测试你计算利率的准确性。
问题 3:将 测试你的几何推理能力。
接下来,让我们尝试解决这个问题,并在提示中输入以下内容:
The sequence given is the Fibonacci sequence, where each term is the sum of the two preceding ones, starting with1and1. The first few terms are:
( F_1 = 1 )
( F_2 = 1 )
( F_3 = F_1 + F_2 = 1 + 1 = 2 )
( F_4 = F_2 + F_3 = 1 + 2 = 3 )
( F_5 = F_3 + F_4 = 2 + 3 = 5 )
( F_6 = F_4 + F_5 = 3 + 5 = 8 )
We need to find the 20th term, ( F_{20} ).
Continuing the sequence:
( F_7 = F_5 + F_6 = 5 + 8 = 13 )
( F_8 = F_6 + F_7 = 8 + 13 = 21 )
( F_9 = F_7 + F_8 = 13 + 21 = 34 )
( F_{10} = F_8 + F_9 = 21 + 34 = 55 )
( F_{11} = F_9 + F_{10} = 34 + 55 = 89 )
( F_{12} = F_{10} + F_{11} = 55 + 89 = 144 )
( F_{13} = F_{11} + F_{12} = 89 + 144 = 233 )
( F_{14} = F_{12} + F_{13} = 144 + 233 = 377 )
( F_{15} = F_{13} + F_{14} = 233 + 377 = 610 )
( F_{16} = F_{14} + F_{15} = 377 + 610 = 987 )
( F_{17} = F_{15} + F_{16} = 610 + 987 = 1597 )
( F_{18} = F_{16} + F_{17} = 987 + 1597 = 2584 )
( F_{19} = F_{17} + F_{18} = 1597 + 2584 = 4181 )
( F_{20} = F_{18} + F_{19} = 2584 + 4181 = 6765 )
Thus, the 20th value of the sequence is ( boxed{6765} ).
Phi-4
给定的序列是斐波那契数列,其中每个项是前两个项的和,从1和1开始。前几个项是:
( F_1 = 1 )
( F_2 = 1 )
( F_3 = F_1 + F_2 = 1 + 1 = 2 )
( F_4 = F_2 + F_3 = 1 + 2 = 3 )
( F_5 = F_3 + F_4 = 2 + 3 = 5 )
( F_6 = F_4 + F_5 = 3 + 5 = 8 )
我们需要找到第20项,( F_{20} )。
继续序列:
( F_7 = F_5 + F_6 = 5 + 8 = 13 )
( F_8 = F_6 + F_7 = 8 + 13 = 21 )
( F_9 = F_7 + F_8 = 13 + 21 = 34 )
( F_{10} = F_8 + F_9 = 21 + 34 = 55 )
( F_{11} = F_9 + F_{10} = 34 + 55 = 89 )
( F_{12} = F_{10} + F_{11} = 55 + 89 = 144 )
( F_{13} = F_{11} + F_{12} = 89 + 144 = 233 )
( F_{14} = F_{12} + F_{13} = 144 + 233 = 377 )
( F_{15} = F_{13} + F_{14} = 233 + 377 = 610 )
( F_{16} = F_{14} + F_{15} = 377 + 610 = 987 )
( F_{17} = F_{15} + F_{16} = 610 + 987 = 1597 )
( F_{18} = F_{16} + F_{17} = 987 + 1597 = 2584 )
( F_{19} = F_{17} + F_{18} = 1597 + 2584 = 4181 )
( F_{20} = F_{18} + F_{19} = 2584 + 4181 = 6765 )
因此,序列的第20个值是 ( boxed{6765} )。
GPT-4o
给定的序列是**斐波那契数列**,其中每个项是前两项的和:
[F(n) = F(n-1) + F(n-2) quad text{当 } n geq 3]
且 ( F(1) = 1 ) 和 ( F(2) = 1 )。
我们需要计算这个序列的**第20个值**。
前几项是:
1. ( F(1) = 1 )
2. ( F(2) = 1 )
3. ( F(3) = 2 )
4. ( F(4) = 3 )
5. ( F(5) = 5 )
6. ( F(6) = 8 )
7. ( F(7) = 13 )
8. ( F(8) = 21 )
9. ( F(9) = 34 )
10. ( F(10) = 55 )
11. ( F(11) = 89 )
12. ( F(12) = 144 )
13. ( F(13) = 233 )
14. ( F(14) = 377 )
15. ( F(15) = 610 )
16. ( F(16) = 987 )
17. ( F(17) = 1597 )
18. ( F(18) = 2584 )
19. ( F(19) = 4181 )
20. ( F(20) = 6765 )
因此,序列中的第20个值是:6765
o1
The given sequence is the Fibonacci sequence, defined by:
[F_1 = 1, quad F_2 = 1, quad text{and} quad F_{n} = F_{n-1} + F_{n-2} text{ for } n > 2.]
To find the 20th term, let's list them out (or recall the known values):
1. ( F_1 = 1 )
2. ( F_2 = 1 )
3. ( F_3 = 2 )
4. ( F_4 = 3 )
5. ( F_5 = 5 )
6. ( F_6 = 8 )
7. ( F_7 = 13 )
8. ( F_8 = 21 )
9. ( F_9 = 34 )
10. ( F_{10} = 55 )
11. ( F_{11} = 89 )
12. ( F_{12} = 144 )
13. ( F_{13} = 233 )
14. ( F_{14} = 377 )
15. ( F_{15} = 610 )
16. ( F_{16} = 987 )
17. ( F_{17} = 1597 )
18. ( F_{18} = 2584 )
19. ( F_{19} = 4181 )
20. ( F_{20} = 6765 )
Therefore, the 20th value in the sequence is: 6765
所有模型都能给出正确答案,但Phi-4的解法适合没有强数学背景的人。得到答案所需的时间差别不大。
让我们尝试解决第二个问题,并在您的聊天机器人中使用这个提示
A bank offers an annual interest rate of 5%, compounded semi-annually.
What is the final amount if 1 million dollar is deposited for 10 years?
Phi-4
To calculate the final amount when interest is compounded semi-annually, we can use the compound interest formula:
[ A = P left(1 + frac{r}{n}right)^{nt} ]
where:
( A ) is the final amount
( P ) is the principal amount (initial deposit)
( r ) is the annual interest rate (in decimal form)
( n ) is the number of times the interest is compounded per year
( t ) is the number of years
For this problem:
( P = 1,000,000 ) dollars
( r = 0.05 ) (5% as a decimal)
( n = 2 ) (compounded semi-annually)
( t = 10 ) years
Plugging the values into the formula:
[ A = 1,000,000 left(1 + frac{0.05}{2}right)^{2 times 10} ]
[ A = 1,000,000 left(1 + 0.025right)^{20} ]
[ A = 1,000,000 times (1.025)^{20} ]
Now, calculate ( (1.025)^{20} ):
[ (1.025)^{20} approx 1.638616 ]
Therefore:
[ A approx 1,000,000 times 1.638616 ]
[ A approx 1,638,616 ]
The final amount after 10 years is approximately $1,638,616.
GPT-4o
要计算复利的最终金额,可以使用以下公式:
[ A = P left(1 + frac{r}{n}right)^{nt} ]
其中:
- ( A ) 是最终金额,
- ( P ) 是本金(初始存款),
- ( r ) 是年名义利率(以小数表示),
- ( n ) 是每年复利的次数,
- ( t ) 是年数。
给定:
- ( P = 1,000,000 ) 美元,
- ( r = 0.05 )(5%),
- ( n = 2 )(因为利息是半年复利),
- ( t = 10 )。
将这些值代入公式:
[ A = 1,000,000 left(1 + frac{0.05}{2}right)^{2 times 10} ]
[ A = 1,000,000 left(1 + 0.025right)^{20} ]
[ A = 1,000,000 times (1.025)^{20} ]
现在计算 ( (1.025)^{20} ):
[ (1.025)^{20} approx 1.6386164403 ]
现在找到最终金额 ( A ):
[ A approx 1,000,000 times 1.6386164403 ]
[ A approx 1,638,616.44 ]
10 年后的最终金额将约为 $1,638,616.44。
o1
要计算一个 $1,000,000 存款在年利率为 5%、每年复利两次的情况下,经过 10 年后的最终金额,可以使用复利公式:
[
A = P left(1 + frac{r}{n}right)^{nt}
]
其中:
- ( A ) = n 年后累积的金额,包括利息。
- ( P ) = 本金 ($1,000,000)。
- ( r ) = 年利率(小数)(5% 或 0.05)。
- ( n ) = 每年复利的次数(每年两次为 2)。
- ( t ) = 投资的年数(10 年)。
代入数值:
[
A = 1,000,000 times left(1 + frac{0.05}{2}right)^{2 times 10} = 1,000,000 times (1.025)^{20}
]
计算 ( (1.025)^{20} ):
[
(1.025)^{20} approx 1.63862
]
现在,将其乘以本金:
[
A approx 1,000,000 times 1.63862 = 1,638,620
]
**最终金额:**经过 10 年,投资将增长到大约 **$1,638,620**。
-
• 所有模型都能够获得正确的结果。O1 的速度显著快于其他模型,仅用 11.38 毫秒完成任务。GPT-4o 和 Phi-4 的速度较慢,其中 Phi-4 的时间稍长于 GPT-4o。
推理
最后,我们将测试几何推理能力的测试。请在您的聊天机器人中使用此提示
If the volume of a rectangular prism is 120 cubic centimetres,
its height is 6 cm, and its width is 4 cm, what is its length?
Phi-4
要找到矩形棱柱的长度,我们可以使用矩形棱柱体积的公式:
[ text{Volume} = text{Length} times text{Width} times text{Height} ]
已知:
体积 = 120 立方厘米
高度 = 6 cm
宽度 = 4 cm
将已知值代入公式:
[ 120 = text{Length} times 4 times 6 ]
简化方程:
[ 120 = text{Length} times 24 ]
要解出长度,将两边都除以 24:
[ text{Length} = frac{120}{24} ]
计算除法:
[ text{Length} = 5 ]
因此,矩形棱柱的长度为 5 cm。
GPT-4o
To find the length of the rectangular prism, you can use the formula for the volume of a rectangular prism:
[ text{Volume} = text{length} times text{width} times text{height} ]
You are given the volume (120 cubic centimeters), the height (6 cm), and the width (4 cm). Plug these values into the formula:
[ 120 = text{length} times 4 times 6 ]
First, calculate (4 times 6):
[ 120 = text{length} times 24 ]
Next, solve for the length by dividing both sides of the equation by 24:
[ text{length} = frac{120}{24} ]
[ text{length} = 5 ]
Thus, the length of the rectangular prism is5 centimeters.
o1
要找到矩形棱柱的**长度**,可以使用矩形棱柱体积的公式:
[
text{体积} = text{长度} times text{宽度} times text{高度}
]
给定:
- **体积 (V)** = 120 立方厘米 (cm³)
- **高度 (h)** = 6 厘米 (cm)
- **宽度 (w)** = 4 厘米 (cm)
**步骤 1:写下包含已知值的公式。**
[
120 = text{长度} times 4 times 6
]
**步骤 2:简化方程以求解长度。**
[
text{长度} = frac{120}{4 times 6}
]
[
text{长度} = frac{120}{24}
]
[
text{长度} = 5 text{ cm}
]
**答案:** 矩形棱柱的长度是**5 厘米**。
所有模型都给出了正确的结果,但O1和Phi-4在推理方面更优秀。它们逐步解决问题,就像人类思考一样。我很惊讶GPT-4o在推理方面不如O1和Phi-4。
结论:
我比较了Phi-4与GPT-4o和O1,发现速度几乎相同。Phi-4是开源的,我更喜欢开源而不是GPT-4o和O1。尽管O1速度更快、性能更好,但我还是选择了Phi-4。我认为Phi-4与其他模型之间没有太大差别,而且Phi-4足够小,可以在我的笔记本电脑上运行,这一点非常重要,因为我没有一台强大的计算机。