大家好,我是编程乐趣。
行业诸多大佬一直在说:“
2025年将是AI应用元年
”,虽然说大佬的说法不一定对,但AI趋势肯定没错的。
对于我们程序员来说,储备AI应用开发技能,不管对找工作、接项目、创业肯定是不错的选择。
从今天开始,我将会学习和研究Phi小模型,并基于此模型开发一些小Demo,也作为我的学习笔记,欢迎大家关注收藏!
下面先用C#开发一个调用本地模型的示例,一起来感受下
Phi的魅力。
什么是Phi?
Phi模型是微软推出的一系列小型语言开源模型,刚刚发布了最新版本:Phi-4。
在GPQA研究生水平、MATH数学基准测试中,超过了OpenAI的GPT-4o,也超过了同类顶级开源模型Qwen 2.5 -14B和Llama-3.3-70B。
在美国数学竞赛AMC的测试中phi-4更是达到了91.8分,超过了Gemini Pro 1.5、GPT-4o、Claude 3.5 Sonnet、Qwen 2.5等知名开闭源模型,甚至整体性能可以与4050亿参数的Llama-3.1媲美。
模型下载地址
微软在HuggingFace
开源这款超强的小参数模型,
并且支持MIT许可证下商业用途。
当前最新版本开源地址:
https://huggingface.co/microsoft/phi-4
C#源码开发示例
1、下载ONNX
ONNX(Open Neural Network Exchange)是由微软和Facebook等科技巨头于2017年联合推出的一种开放格式。
ONNX 已经对接了多种深度学习框架和多种推理引擎。因此,ONNX 被当成了深度学习框架到推理引擎的桥梁。
ONNX Runtime提供了简单易用的API,支持Python、C++、C#和Java等多种编程语言,方便开发者将其集成到现有应用中。
微软针对Phi-3版本,已经为我们提供了onnx文件,我们这里下载的是
Phi-3版本的,因为Phi-4还没有onnx文件。
下载地址:
https://huggingface.co/collections/microsoft/phi-3-6626e15e9585a200d2d761e3
onnx提供了CPU、GPU版本,我这边使用的是CPU版本,把以下文件下载到本地。
Microsoft.ML.OnnxRuntimeGenAI
官方为我们提供多个套件,不同套件针对不同的硬件加速需求和环境进行优化,后面在详细介绍,这边我们使用的CPU模型,
安装
Microsoft.ML.OnnxRuntimeGenAI就行。
3、代码示例
using Microsoft.ML.OnnxRuntimeGenAI;
var modelPath = @"F:\Model";
var model = new Model(modelPath);
var tokenizer = new Tokenizer(model);
var systemPrompt = "You are an AI assistant that helps people find information. Answer questions using a direct style. Do not share more information that the requested by the users.";
Console.WriteLine(@"Ask your question. Type an empty string to Exit.");
while (true)
{
Console.WriteLine();
Console.Write(@"Q: ");
var userQ = Console.ReadLine();
if (string.IsNullOrEmpty(userQ))
{
break;
}
Console.Write("Phi3: ");
var fullPrompt = $"{systemPrompt}{userQ}";
var tokens = tokenizer.Encode(fullPrompt);
var generatorParams = new GeneratorParams(model);
generatorParams.SetSearchOption("max_length", 2048);
generatorParams.SetSearchOption("past_present_share_buffer", false);
generatorParams.SetInputSequences(tokens);