小语言模型与 Microsoft Phi-3/3.5 家族:从原理到本地/云端推理实战(generative-ai-for-beginners 第 19 课)
2026/9/7 2:49:35 网站建设 项目流程

小语言模型与 Microsoft Phi-3/3.5 家族:从原理到本地/云端推理实战(generative-ai-for-beginners 第 19 课)

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

本篇基于开源课程 generative-ai-for-beginners 第 19 课《Introduction to Small Language Models》(课程原文位于 19-slm/README.md,本仓库收录的保加利亚语翻译版本位于 translations/bg/19-slm/README.md)展开,系统讲解小语言模型(Small Language Model, SLM)的定义、训练流程与和大语言模型(LLM)的差异,并以 Microsoft Phi-3/3.5 家族为具体案例,给出通过云端 API(Foundry Models/Foundry、NVIDIA NIM)与本地运行时(Hugging Face Transformers、Ollama、Foundry Local、ONNX Runtime GenAI)执行推理的完整实操路径。读完后,你将能够回答“SLM 是什么、它与 LLM 有何区别、Phi-3/3.5 家族包含哪些模型、如何分别用云和本地方式对它们做推理”这四个问题。

一、什么是小语言模型(SLM)

小语言模型(SLM)是大语言模型(LLM)的缩减变体:它沿用 LLM 的诸多架构原则与技术,但具有显著降低的计算开销。SLM 是一类专门用于生成类人文本的语言模型,与 GPT-4 这类大型模型相比,SLM 更紧凑、更高效,因此特别适合计算资源受限的应用场景。尽管体量更小,SLM 仍能完成多种任务——通常它们通过对 LLM 进行压缩(compression)或蒸馏(distillation)来构建,以尽可能保留原始模型的功能与语言能力。模型尺寸的缩减降低了整体复杂度,使 SLM 在内存占用和计算需求两方面都更加高效。

文档明确指出,经过这些优化后,SLM 仍然可以执行广泛的自然语言处理(NLP)任务:

  • 文本生成(Text Generation):生成连贯且上下文相关的句子或段落;
  • 文本补全(Text Completion):基于给定的前文提示预测并补全句子;
  • 翻译(Translation):将文本从一种语言转换为另一种语言;
  • 摘要(Summarization):把长文本浓缩为更短、更易读的摘要。

需要说明的是,与更大的模型相比,SLM 在性能或理解深度上会存在一定的权衡(trade-off)。

二、小语言模型是如何工作的

SLM 在海量文本数据上训练。训练过程中,模型学习语言的模式与结构,从而能够生成既符合语法、又贴合上下文的文本。课程将训练过程拆分为四个阶段:

阶段说明
数据收集(Data Collection)从各种来源汇集大规模文本数据集
预处理(Preprocessing)清洗和组织数据,使其适合训练
训练(Training)使用机器学习算法让模型学会理解并生成文本
微调(Fine-Tuning)调整模型以提升其在特定任务上的表现

SLM 的发展与资源受限环境(如移动设备、边缘计算平台)的部署需求高度契合——在这些环境中,全尺寸 LLM 因资源开销巨大往往不切实际。通过聚焦效率,SLM 在性能与可及性之间取得平衡,使其能更广泛地应用于各个领域。

三、LLM 与 SLM 的关键差异

LLM 与 SLM 都建立在概率机器学习的基础原理之上,在架构设计、训练方法学、数据生成流程与模型评估技术等方面遵循相似的路径,但有几个关键因素使两者产生显著差别。

规模(Size)

LLM 与 SLM 的首要区别在于模型规模。文档给出的量级对比:ChatGPT(GPT-4)估算含约 1.76 万亿(1.76 trillion)参数,而开源 SLM 如 Mistral 7B 仅有约 70 亿参数。这种差距主要源于模型架构与训练流程的差异:例如 ChatGPT 在编码器-解码器框架内使用自注意力机制,而 Mistral 7B 采用滑动窗口注意力(sliding window attention),在纯解码器(decoder-only)模型中实现更高效训练。这种架构差异对模型的复杂度与性能有深远影响。

理解能力(Comprehension)

SLM 通常针对特定领域优化,高度专业化,但跨多个知识领域提供广泛上下文理解的能力可能受限。相反,LLM 旨在更高层次地模拟类人智能:基于庞大、多样的数据集训练,设计目标是跨领域良好表现,具备更强的通用性与适应性,因而更适合 NLP、编程等更广泛的下游任务。

计算资源(Computing)

LLM 的训练与部署是资源密集型过程,常需要包括大规模 GPU 集群在内的显著计算基础设施——从零训练 ChatGPT 级别的模型可能需要数千块 GPU 运行相当长的时间。相比之下,参数量更小的 SLM 在计算资源上更可及:Mistral 7B 这类模型可以在配备中等 GPU 的本地机器上训练和运行,尽管训练仍需多 GPU 数小时。

偏见(Bias)

偏见是 LLM 的已知问题,根源主要在训练数据的性质:这些模型常依赖网络上原始、公开可得的数据,其中可能低估或错误呈现某些群体、引入错误标签,或反映受方言、地域差异、语法规则影响的语言偏见;此外,LLM 架构的复杂性可能在无意中放大这些偏见,若不加仔细微调可能难以察觉。另一方面,SLM 基于更受限、领域特定的数据集训练,从内在对这类偏见的敏感性更低(但并非完全免疫)。

推理(Inference)

SLM 的减小体量带来显著的推理速度优势:可以在本地硬件上高效生成输出,无需大规模并行处理。而 LLM 由于体量与复杂度,往往需要大量并行计算资源才能达到可接受的推理时延;多用户并发还会进一步拖慢 LLM 的响应时间,尤其在大规模部署时。

课程在此还列出 SLM 的典型应用面:聊天机器人(以客户支持等对话方式与用户交互)、内容创作(帮助写作者生成想法甚至整篇文章草稿)、教育(辅助学生完成写作任务或学习新语言)、无障碍(为残障人士创建工具,如文本转语音系统)。

小结:LLM 与 SLM 共享机器学习基础,但在模型规模、资源需求、上下文理解、偏见易感性与推理速度上差异显著。LLM 更通用但更重资源;SLM 以更低的计算代价提供更专业的领域效率。

课程在此提示:本课题以 Microsoft Phi-3 / 3.5 作为讲解 SLM 的具体例子。

四、Phi-3 / Phi-3.5 家族概览

Phi-3 / 3.5 家族主要面向**文本、视觉与 Agent(MoE)**三类应用场景。

4.1 Phi-3 / 3.5 Instruct(文本指令模型)

主要用于文本生成、聊天补全、从内容中提取信息等场景。

Phi-3-mini:3.8B 参数语言模型,可通过 Microsoft Azure AI Studio、Hugging Face 和 Ollama 获取。文档指出 Phi-3 系列在关键基准上显著超越同等乃至更大规模的语言模型(数值越大越好):Phi-3-mini 超越两倍于其尺寸的模型,Phi-3-small 与 Phi-3-medium 则超越更大的模型,包括 GPT-3.5。

Phi-3-small & medium:Phi-3-small 仅 7B 参数,即在多种语言、推理、编码与数学基准上超过 GPT-3.5T;Phi-3-medium 以 14B 参数延续这一趋势,超过 Gemini 1.0 Pro。

Phi-3.5-mini:可视为 Phi-3-mini 的升级版。参数量不变(3.8B),但改进了多语言能力(支持 20+ 种语言:阿拉伯语、中文、捷克语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希伯来语、匈牙利语、意大利语、日语、韩语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语),并增加更强的长上下文支持。3.8B 参数的 Phi-3.5-mini 超越同尺寸语言模型,表现与两倍尺寸模型相当。

4.2 Phi-3 / 3.5 Vision(视觉模型)

可以把 Phi-3/3.5 的 Instruct 模型理解为 Phi 的“理解能力”,而 Vision 模型则是给 Phi 装上“眼睛”,让它能看懂世界。

Phi-3-Vision:仅 4.2B 参数,在通用视觉推理、OCR 以及表格与图表理解任务上超越 Claude-3 Haiku、Gemini 1.0 Pro V 等更大模型。

Phi-3.5-Vision:Phi-3-Vision 的升级版,新增多图像支持——不仅“看”单张图片,还能处理多帧(相当于理解视频)。它在 OCR、表格与图表理解任务上超越 Claude-3.5 Sonnet 和 Gemini 1.5 Flash 等更大模型,在通用视觉知识推理任务上与之持平;支持多帧输入,即对多张输入图像进行推理。

4.3 Phi-3.5-MoE(混合专家模型)

混合专家(Mixture of Experts, MoE)让模型能以少得多的计算完成预训练:意味着在相同于稠密(dense)模型的计算预算下,可以大幅提升模型或数据集规模;具体而言,MoE 模型在预训练阶段就能比其稠密对应物更快地达到同等质量。Phi-3.5-MoE 由16 个 3.8B 专家模块构成,仅 6.6B 激活参数就达到了与远大于它的模型相近的推理、语言理解与数学能力。

与 LLM 不同,Phi-3/3.5-mini 或 Phi-3/3.5-Vision 可以部署在边缘设备上——这正是 SLM 的核心价值所在。

五、使用云端 API 进行推理

课程演示了对比 Phi-3-mini 与 Phi-3.5-mini 在中文场景下的推理效果(第二张对比截图见 19-slm/img/gh2.png),其云端接入方式有三种:

Microsoft Foundry Models(原文档早期版本称 GitHub Models)

这是最直接的接入方式:可以快速访问 Phi-3/3.5-Instruct 模型,配合 Azure AI Inference SDK / OpenAI SDK,通过代码发起 API 调用完成 Phi-3/3.5-Instruct 推理,也可以通过 Playground 交互式测试不同效果。需要特别留意仓库英文原文中的更新说明(见 19-slm/README.md):GitHub Models 将于 2026 年 7 月底退役,Microsoft Foundry Models 是其直接替代,即模型目录、SDK 调用与 Playground 演示对应的官方入口已迁移至 Microsoft Foundry。

Microsoft Foundry(原 Azure AI Studio)

如果需要使用视觉(Vision)或 MoE 模型,可以通过 Microsoft Foundry 完成调用。课程建议读者参考微软官方的 Phi-3 Cookbook 学习如何通过该平台调用 Phi-3/3.5 Instruct、Vision 与 MoE 模型。

NVIDIA NIM

除云端模型目录外,也可使用 NVIDIA NIM(NVIDIA Inference Microservices)完成相关调用——这是一组加速推理微服务,帮助开发者在云、数据中心与工作站等多种环境中高效部署 AI 模型。课程列出的关键特性包括:

  • 部署便捷:一条命令即可部署 AI 模型,易于集成进现有工作流;
  • 性能优化:利用 NVIDIA 预优化推理引擎(TensorRT、TensorRT-LLM)保证低时延与高吞吐;
  • 可扩展性:支持在 Kubernetes 上自动扩缩容,有效应对波动负载;
  • 安全与控制:组织可以在自管基础设施上自托管 NIM 微服务,掌控数据与应用;
  • 标准 API:提供业界标准 API,便于构建聊天机器人、AI 助手等应用并快速集成。

NIM 是 NVIDIA AI Enterprise 的一部分,目标是简化 AI 模型的部署与运营,确保其在 NVIDIA GPU 上高效运行。仓库提供了用 NIM 调用 Phi-3.5-Vision API 的完整演示 notebook(19-slm/python/Phi-3-Vision-Nividia-NIM.ipynb):其做法是把本地图片读取为 Base64 后嵌入消息体(以data:image/png;base64,...形式写入 user 消息),通过requests.post携带Authorization: Bearer <NIM API Key>头与包含max_tokenstemperaturetop_pstream的 payload 发起调用,并可从返回 JSON 的choices[0].message.content中提取(必要时从```python代码块中)解析生成的代码。

六、在本地运行 Phi-3/3.5

与 Phi-3(或 GPT-3 等任意语言模型)相关的“推理(Inference)”指:基于模型接收的输入生成响应或预测的过程。当你向 Phi-3 提供提示或问题时,它利用训练好的神经网络,通过分析训练数据中的模式与关联,推断出最可能、最相关的回答。本地运行有四条主要路径。

6.1 Hugging Face Transformers

Hugging Face Transformers 是面向 NLP 及其他机器学习任务的强大库,课程概括了五个要点:

  1. 预训练模型:提供数千个预训练模型,可用于文本分类、命名实体识别、问答、摘要、翻译、文本生成等任务;
  2. 框架互操作性:支持 PyTorch、TensorFlow、JAX 等多个深度学习框架,可在一个框架训练、在另一个框架使用;
  3. 多模态能力:除 NLP 外,还支持计算机视觉(图像分类、目标检测)与音频处理(语音识别、音频分类)任务;
  4. 易用性:提供下载与微调模型的 API 和工具,对初学者与专家都友好;
  5. 社区与资源:有活跃的社区和大量文档、教程、指南。

这是最常用的本地方法,但需要 GPU 加速——Vision 与 MoE 等场景计算量大,若不做量化,在 CPU 上会非常慢。仓库提供了三个可直接运行的演示 notebook:

  • 19-slm/python/phi35-instruct-demo.ipynb:用 Transformers 调用 Phi-3.5-Instruct;
  • 19-slm/python/phi35-vision-demo.ipynb:用 Transformers 调用 Phi-3.5-Vision;
  • 19-slm/python/phi35_moe_demo.ipynb:用 Transformers 调用 Phi-3.5-MoE。

从这些 notebook 的源码结构看,Instruct 推理的标准模式是:

import torch from transformers import AutoModelForCausalLM, AutoTokenizer torch.random.manual_seed(0) model = AutoModelForCausalLM.from_pretrained( "../phi-3-instruct", # 本地模型目录 device_map="cuda", # 使用 GPU torch_dtype="auto", trust_remote_code=True, # Phi 系列需要远程自定义代码 ) tokenizer = AutoTokenizer.from_pretrained("../phi-3-instruct")

Vision 演示则展示了多帧输入的典型写法:先批量打开关键帧图片并拼接<|image_1|><|image_2|>……占位符,再用AutoProcessor.from_pretrained(model_id, trust_remote_code=True, num_crops=4)创建处理器,用apply_chat_template(messages, tokenize=False, add_generation_prompt=True)渲染对话模板,以temperature=0.0, do_sample=False, max_new_tokens=1000等参数执行model.generate(...)后批量解码。MoE 演示则使用bfloat16精度加载模型,并通过transformers.pipeline("text-generation", ...)配合temperature=0.3max_new_tokens=512等生成参数,演示了让 MoE 模型以 JSON 工具调用格式(tool_name/input)驱动多 Agent 任务的提示工程。

6.2 Ollama

Ollama 是一个让大语言模型在本地机器上更易运行的平台,支持 Llama 3.1、Phi 3、Mistral、Gemma 2 等多种模型。它把模型权重、配置与数据打包为一个整体,简化了自定义与创建模型的过程,覆盖 macOS、Linux 与 Windows,是无需依赖云服务即可实验或部署 LLM 的工具。课程称其为“最直接的方式”,只需执行:

ollama run phi3.5

6.3 Foundry Local

仓库英文原文还补充了Foundry Local:微软官方的离线、设备端运行时,可完全在自有硬件上运行 Phi 等模型——无需 Azure 订阅、API Key 或网络连接。它会自动选择最优执行提供器(NPU、GPU 或 CPU),并暴露 OpenAI 兼容端点,使现有openai/Azure AI Inference SDK 代码只需少量改动即可指向它:

winget install Microsoft.FoundryLocal foundry model run phi-3.5-mini

也可以在 Python 中直接通过 SDK 使用:

pip install foundry-local-sdk
from foundry_local import FoundryLocalManager manager = FoundryLocalManager("phi-3.5-mini") print(manager.endpoint, manager.api_key)

6.4 ONNX Runtime for GenAI

ONNX Runtime 是跨平台的机器学习推理与训练加速器;ONNX Runtime for GenAI 则帮助你跨平台高效运行生成式 AI 模型。

什么是 ONNX Runtime?它是一个开源项目,支持 Open Neural Network Exchange(ONNX)格式(机器学习模型表示标准)的高性能推理。它同时支持来自 PyTorch、TensorFlow/Keras 等深度学习框架以及 scikit-learn、LightGBM、XGBoost 等经典机器学习库的模型,兼容不同硬件、驱动与操作系统,并在适用时利用硬件加速器与图优化/变换提供最优性能。

GenAI 库做什么?生成式 AI 指能基于训练数据生成文本、图像、音乐等新内容的 AI 系统(如 GPT-3、Stable Diffusion)。ONNX Runtime for GenAI 库为 ONNX 模型提供完整的生成式 AI 循环,包括 ONNX Runtime 推理、logits 处理、搜索与采样、KV 缓存管理。关键特性:

  • 广泛平台支持:Windows、Linux、macOS、Android、iOS;
  • 模型支持:LLaMA、GPT-Neo、BLOOM 等众多流行生成式模型;
  • 性能优化:针对 NVIDIA GPU、AMD GPU 等硬件加速器的优化;
  • 易用性:提供便于集成的 API,少量代码即可生成文本、图像等内容;
  • 灵活控制:既可调用高层generate()方法,也可在循环中逐 token 执行模型迭代,并在循环内动态更新生成参数;
  • 内置搜索与采样:支持贪心/束搜索、TopP、TopK 采样,内置重复惩罚等 logits 处理,也方便加入自定义打分。

上手步骤——先安装运行时与 GenAI 扩展:

pip install onnxruntime pip install onnxruntime-genai

最简单的调用示例:

import onnxruntime_genai as og model = og.Model('path_to_your_model.onnx') tokenizer = og.Tokenizer(model) input_text = "Hello, how are you?" input_tokens = tokenizer.encode(input_text) output_tokens = model.generate(input_tokens) output_text = tokenizer.decode(output_tokens) print(output_text)

课程还给出了用 ONNX Runtime GenAI 调用 Phi-3.5-Vision 的多模态完整示例,它展示了create_multimodal_processor流式解码、自定义对话模板(<|user|><|image_1|><|end|><|assistant|>标记)、GeneratorParamsset_search_options(max_length=3072)的配置,以及逐 token 生成循环:

import onnxruntime_genai as og model_path = './Your Phi-3.5-vision-instruct ONNX Path' img_path = './Your Image Path' model = og.Model(model_path) processor = model.create_multimodal_processor() tokenizer_stream = processor.create_stream() text = "Your Prompt" prompt = "<|user|>\n" prompt += "<|image_1|>\n" prompt += f"{text}<|end|>\n" prompt += "<|assistant|>\n" image = og.Images.open(img_path) inputs = processor(prompt, images=image) params = og.GeneratorParams(model) params.set_inputs(inputs) params.set_search_options(max_length=3072) generator = og.Generator(model, params) while not generator.is_done(): generator.compute_logits() generator.generate_next_token() new_token = generator.get_next_tokens()[0] output = tokenizer_stream.decode(new_token) print(tokenizer_stream.decode(new_token), end='', flush=True)

6.5 其他量化部署路径

除 ONNX Runtime、Ollama 与 Foundry Local 外,课程还指出可以基于各厂商提供的模型参考方案完成量化部署,例如:Apple MLX 框架(配合 Apple Metal)、Qualcomm QNN(配合 NPU)、Intel OpenVINO(配合 CPU/GPU)等。更深入的 SLM 内容可参考微软官方的 Phi-3 Cookbook(仓库原文档给出的延伸阅读资源)。

七、小结与学习要点

回顾课程设定的学习目标,本篇覆盖了对应的全部答案:

  • SLM 是什么:LLM 的压缩/蒸馏变体,以更小计算足迹保留核心语言能力,可执行文本生成、补全、翻译、摘要等 NLP 任务;
  • SLM 与 LLM 的区别:在规模(3.8B~14B 级 vs 万亿级)、领域专精 vs 通用、训练/部署资源、偏见敏感性与推理速度五个维度上形成差异;
  • Phi-3/3.5 家族:Instruct(3.8B/7B/14B,含 20+ 语言的 Phi-3.5-mini)、Vision(4.2B,3.5 版支持多帧)、MoE(16×3.8B 专家、6.6B 激活参数)三条产品线;
  • 如何推理:云端走 Microsoft Foundry Models/Foundry 或 NVIDIA NIM;本地走 Hugging Face Transformers(需 GPU)、Ollama(ollama run phi3.5)、Foundry Local(离线端侧)或 ONNX Runtime GenAI(跨平台、逐 token 可控)。

配套实践材料集中在 19-slm/python/ 目录:Instruct/Vision/MoE 三个 Transformers 演示 notebook 与 NVIDIA NIM 的 Vision 调用 notebook,可逐一复现以验证本文各节的推理路径。

【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询