入门实战:以 Microsoft Phi-3/3.5 家族为范例的推理指南)
小语言模型SLM入门实战以 Microsoft Phi-3/3.5 家族为范例的推理指南【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners小语言模型Small Language ModelSLM是大语言模型LLM的精简变体在保留核心语言能力的同时大幅降低计算与内存开销是边缘设备、移动端和资源受限场景下的理想选择。本指南以微软 Phi-3/3.5 家族为具体范例系统讲解 SLM 的核心概念、与 LLM 的差异、Phi-3/3.5 各型号定位以及从云端 API 到本地推理的完整部署路径帮助读者在真实项目中快速选型并跑通推理。什么是小语言模型SLMSLM 是语言模型的一个子集设计目标是生成类人文本。与 GPT-4 这类庞大的同类相比SLM 更加紧凑高效非常适合计算资源受限的应用场景。通常SLM 通过**压缩或蒸馏distillation**大型语言模型来构建力求保留原始模型的大部分功能与语言能力。模型规模的缩减降低了整体复杂度使 SLM 在内存占用和计算需求上更加高效同时仍能执行多种自然语言处理NLP任务文本生成生成连贯、上下文相关的句子或段落文本补全根据给定提示预测并补全后续内容翻译将文本从一种语言转换为另一种语言摘要将长文本压缩为更短、更易读的摘要。当然与更大的模型相比SLM 在性能或理解深度上会有所取舍。SLM 的发展契合了业界对可在资源受限环境部署的模型的持续需求——例如移动设备、边缘计算平台在这些场景下全尺寸 LLM 因资源消耗过高而难以落地。通过聚焦效率SLM 在性能与可及性之间取得平衡得以在更多领域广泛应用。SLM 是如何工作的SLM 在大规模文本数据上训练。训练期间模型学习语言的模式与结构从而能够生成语法正确、语境恰当的内容。其训练流程通常包含数据收集从多种来源汇集大规模文本数据集预处理清洗并整理数据使其适合训练训练使用机器学习算法教模型理解并生成文本微调调整模型以提升其在特定任务上的表现。LLM 与 SLM 的核心差异LLM 与 SLM 都建立在概率机器学习的基础原理之上在架构设计、训练方法、数据生成过程和模型评估技术上遵循相似路线但两者在多个关键维度存在显著区别。规模SizeLLM 与 SLM 的首要区别在于模型的量级。LLM如 ChatGPT/GPT-4参数规模估算达1.76 万亿而开源 SLM如 Mistral 7B参数量显著更少约为70 亿。这种差距主要源于模型架构与训练过程的差异。例如 ChatGPT 在编码器-解码器框架内使用自注意力机制而 Mistral 7B 使用滑动窗口注意力sliding window attention能够在仅解码器decoder-only模型中实现更高效的训练。架构差异对模型复杂度与性能有着深远影响。理解能力ComprehensionSLM 通常针对特定领域进行优化高度专精但在跨学科知识的广泛语境理解上可能受限。相反LLM 旨在更全面地模拟人类智能在海量、多样化的数据集上训练擅长跨领域任务通用性与适应性更强更适合自然语言处理、编程等更广泛的下游任务。计算资源ComputingLLM 的训练与部署是资源密集型工程往往需要大规模 GPU 集群等重型算力基础设施。例如从头训练一个类似 ChatGPT 的模型可能需要数千块 GPU 并持续很长时间。而 SLM 参数量更小在计算资源上更亲民——像 Mistral 7B 这样的模型可在配备中等 GPU 的本地机器上训练和运行尽管训练仍需要在多块 GPU 上耗时数小时。偏见Bias偏见是 LLM 的已知问题主要源于训练数据本身。LLM 常使用互联网上未经筛选的公开数据其中某些群体可能被欠代表或错误呈现并可能引入方言、地域差异和语法规则带来的语言偏见复杂的 LLM 架构还可能无意间放大偏见若缺乏细致的微调则难以察觉。相比之下SLM 在更受约束、领域特定的数据集上训练天然对这类偏见不那么敏感但并非完全免疫。推理速度Inference更小的体量使 SLM 在推理速度上具备显著优势可在本地硬件上高效产出结果无需大规模并行处理。而 LLM 因其体积与复杂度通常需要大量并行计算资源才能达到可接受的推理延迟在规模化部署且多用户并发时响应时间会进一步变慢。典型应用场景SLM 应用范围广泛包括聊天机器人提供客户支持与用户进行对话式交互内容创作帮助写作者生成灵感甚至起草整篇文章教育辅助学生完成写作作业或学习新语言无障碍为残障人士打造工具例如文本转语音系统。注本课以 Microsoft Phi-3 / 3.5 为例来介绍 SLM。Phi-3 / Phi-3.5 家族全景Phi-3/3.5 家族主要覆盖文本Instruct、**视觉Vision与智能体/混合专家MoE**三大应用场景。与 LLM 不同Phi-3/3.5-mini 或 Phi-3/3.5-Vision 可以直接部署到边缘设备上。Phi-3 / 3.5 Instruct文本指令模型Instruct 系列主要用于文本生成、对话补全和内容信息抽取等任务。Phi-3-mini3.8B 参数的语言模型可在 Azure AI Foundry原 Foundry 模型目录、Hugging Face 与 Ollama 上获取。Phi-3 模型在关键基准测试上显著优于同规模甚至更大规模的语言模型基准数值越大越好。Phi-3-mini 超越了两倍体量的模型而 Phi-3-small 与 Phi-3-medium 则超越包括 GPT-3.5 在内的更大模型。Phi-3-small medium仅 7B 参数的 Phi-3-small 在语言、推理、编码和数学的多种基准上击败 GPT-3.5T14B 参数的 Phi-3-medium 延续这一趋势超越了 Gemini 1.0 Pro。Phi-3.5-mini可视为 Phi-3-mini 的升级版。参数量未变但提升了多语言支持能力支持 20 种语言阿拉伯语、中文、捷克语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希伯来语、匈牙利语、意大利语、日语、韩语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语并加入更强的长上下文支持。Phi-3.5-mini 以 3.8B 参数超越同规模模型并与两倍体量模型持平。Phi-3 / 3.5 Vision视觉模型可以把 Phi-3/3.5 的 Instruct 模型理解为理解能力而 Vision 则是赋予 Phi 观察世界的眼睛。Phi-3-Vision仅 4.2B 参数在通用视觉推理、OCR光学字符识别、表格与图表理解任务上超越 Claude-3 Haiku、Gemini 1.0 Pro V 等更大的模型。Phi-3.5-VisionPhi-3-Vision 的升级版新增多图像支持不仅可以看图还能处理视频。它在 OCR、表格与图表理解任务上超越 Claude-3.5 Sonnet、Gemini 1.5 Flash 等更大模型在通用视觉知识与推理上与之持平支持多帧输入即基于多张输入图像进行推理。Phi-3.5-MoE混合专家模型混合专家Mixture of ExpertsMoE使模型能够以远低于稠密模型的算力完成预训练——这意味着在相同算力预算下可以大幅扩展模型或数据集规模。特别是MoE 模型在预训练期间应能比稠密对应模型更快达到同等质量。Phi-3.5-MoE 由16×3.8B 专家模块组成仅6.6B 激活参数就能达到与更大模型相当的推理、语言理解和数学水平。仓库中的 phi35_moe_demo.ipynb 加载模型后打印出的PhiMoEForCausalLM结构即为该架构的源码级证据模型包含 32 层PhiMoEDecoderLayer每层由一个PhiMoESparseMoeBlock组成——其中gate是一个输出维度为 16 的线性层对应 16 个专家experts是 16 个PhiMoEBlockSparseTop2MLP专家模块即每 token 由门控网络路由到 Top-2 专家从而实现稀疏激活、稠密容量。云端推理通过 API 调用 Phi-3/3.5GitHub Models / Microsoft Foundry ModelsGitHub Models 是最直接的入门方式可快速通过模型目录访问 Phi-3/3.5-Instruct 模型。结合 Azure AI Inference SDK / OpenAI SDK即可通过代码访问 API 并完成 Phi-3/3.5-Instruct 调用也可以在 Playground 中测试不同效果。下面是一组中文场景下 Phi-3-mini 与 Phi-3.5-mini 的效果对比演示。图中可以看到面对长沙在哪里这一问题时Phi-3-mini 的回答存在事实性错误将湖南省误写为浙江省而 Phi-3.5-mini 给出了正确回答长沙是中国湖南省的省会——直观体现了模型迭代在事实准确性上的改进注GitHub Models 将于 2026 年 7 月底停止服务Microsoft Foundry Models 是其直接替代方案。如需使用视觉与 MoE 模型同样可以通过 Microsoft Foundry 完成调用。NVIDIA NIM除云端的模型目录外还可以使用 NVIDIA NIM 完成 Phi-3/3.5 家族的 API 调用。NVIDIA NIMNVIDIA Inference Microservices是一组加速推理微服务帮助开发者跨云端、数据中心和工作站等环境高效部署 AI 模型。其关键特性包括部署简单一条命令即可部署 AI 模型便于集成到现有工作流性能优化基于 NVIDIA 预优化推理引擎如 TensorRT、TensorRT-LLM保证低延迟与高吞吐可扩展性支持在 Kubernetes 上自动扩缩容有效应对不同负载安全可控组织可自托管 NIM 微服务对自有数据和应用保持控制标准 API提供行业标准 API易于构建聊天机器人、AI 助手等应用。NIM 是 NVIDIA AI Enterprise 的一部分旨在简化 AI 模型的部署与运营确保其在 NVIDIA GPU 上高效运行。仓库中的 Phi-3-Vision-Nividia-NIM.ipynb 展示了完整的调用流程将图片读取后经 base64 编码小于 180KB 直接内联更大图片需走 assets API以https://ai.api.nvidia.com/v1/vlm/microsoft/phi-3-vision-128k-instruct为端点在请求头携带Authorization: Bearer 你的 NIM API Key通过requests.post发送包含messages、max_tokens、temperature、top_p、stream字段的 payload返回结果从response.json()[choices][0][message][content]中取出再从 Markdown 代码块中切分出模型生成的 Python 代码。这套图片 指令的 payload 结构是调用视觉模型的标准范式。本地推理在自有硬件上运行 Phi-3/3.5推理Inference指的是模型根据输入生成响应或预测的过程。当向 Phi-3 提供提示或问题时它利用训练好的神经网络分析训练数据中的模式与关系推断出最可能、最相关的回答。使用 Hugging Face TransformersHugging Face Transformers 是为 NLP 及其他机器学习任务设计的强大库要点包括预训练模型提供数千个预训练模型覆盖文本分类、命名实体识别、问答、摘要、翻译和文本生成等任务框架互操作支持 PyTorch、TensorFlow、JAX 等多个深度学习框架可在一种框架中训练、在另一种框架中使用多模态能力除 NLP 外还支持计算机视觉图像分类、目标检测与音频处理语音识别、音频分类任务易用性提供便捷的模型下载与微调 API初学者与专家均可上手社区与资源拥有活跃的社区与详尽的文档、教程和指南。这是最常用的推理方式但同样需要 GPU 加速——Vision 和 MoE 场景计算量大若不量化在 CPU 上会非常慢。仓库中提供了三个基于 Transformers 的完整演示phi35-instruct-demo.ipynb调用 Phi-3.5-Instruct。核心流程是AutoModelForCausalLM.from_pretrained加载模型device_mapcuda、torch_dtypeauto、trust_remote_codeTrueAutoTokenizer加载分词器按 Phi 的聊天模板构造消息|system|...|end||user|...|end||assistant|再用pipeline(text-generation)配合生成参数max_new_tokens1024、temperature0.3、do_sampleFalse产出中文回答。phi35-vision-demo.ipynb调用 Phi-3.5-Vision 的多帧推理。先用 OpenCV 从视频中按直方图相似度cv2.compareHist相似度 0.9抽取关键帧通过AutoProcessornum_crops4处理文本与图像apply_chat_template生成提示占位符按|image_n|逐个插入最终model.generate对 21 帧图像做Summarize the video视频摘要——这正是 Phi-3.5-Vision 多帧输入能力的落地示例。phi35_moe_demo.ipynb调用 Phi-3.5-MoE 构建工具调用式智能体。以bfloat16精度加载模型device_mapauto通过instruction_format函数拼装 system/user/assistant 提示让模型以 JSON 格式输出agentid、tool_name、input、output字段实现Blog 写作 Translate 翻译的多步 Agent 工作流示例输出会先生成英文博客内容再翻译为中文。使用 Ollama 本地一键运行Ollama 是一个让你在本地电脑上轻松运行 LLM 的平台支持 Llama 3.1、Phi 3、Mistral、Gemma 2 等众多模型。它将模型权重、配置和数据打包为单一分发包方便用户自定义与创作自己的模型支持 macOS、Linux 和 Windows。若不想依赖云服务来实验或部署 LLMOllama 是最直接的方式——只需执行一条命令ollama run phi3.5使用 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 中使用 SDKpip install foundry-local-sdkfrom foundry_local import FoundryLocalManager manager FoundryLocalManager(phi-3.5-mini) print(manager.endpoint, manager.api_key)使用 ONNX Runtime for GenAIONNX Runtime 是一个开源项目支持高性能的机器学习模型推理支持 ONNXOpen Neural Network Exchange格式的模型兼容 PyTorch、TensorFlow/Keras 等深度学习框架以及 scikit-learn、LightGBM、XGBoost 等经典机器学习库并针对不同硬件、驱动与操作系统提供图优化与变换以获得最佳性能。ONNX Runtime for Generative AIGENAI在此基础上扩展出生成式 AI 能力核心特性包括平台支持广泛覆盖 Windows、Linux、macOS、Android、iOS模型支持丰富支持 LLaMA、GPT-Neo、BLOOM 等流行生成式模型性能优化针对 NVIDIA GPU、AMD GPU 等多种硬件加速器做了优化使用简单提供高层generate()方法也可在循环中逐 token 迭代并动态调整生成参数解码策略完善内置 greedy/beam search 与 TopP、TopK 采样以及重复惩罚等 logits 处理还可方便地添加自定义评分。安装与最小示例pip install onnxruntime pip install onnxruntime-genaiimport 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)调用 Phi-3.5-Vision多模态通过model.create_multimodal_processor()创建多模态处理器按|user|\n|image_1|\n{text}|end|\n|assistant|组装提示og.Images.open打开图片GeneratorParams设置输入与搜索选项示例中max_length3072随后循环执行compute_logits/generate_next_token/get_next_tokens并用流式解码逐 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, imagesimage) params og.GeneratorParams(model) params.set_inputs(inputs) params.set_search_options(max_length3072) 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, flushTrue)其他本地推理方案除 ONNX Runtime、Ollama 和 Foundry Local 外还可依据各家厂商的模型引用方式完成量化模型的推理例如基于 Apple Metal 的 Apple MLX 框架、基于 NPU 的 Qualcomm QNN、基于 CPU/GPU 的 Intel OpenVINO 等更多内容可参考 Phi-3 Cookbook 获取。小结从本课可以看出SLM 与 LLM 共享机器学习的底层基础但在模型规模、资源需求、语境理解、偏见敏感度与推理速度上差异显著LLM 更通用但资源开销大SLM 则以更低的计算需求提供领域化效率。以 Phi-3/3.5 家族为例Instruct 负责文本、Vision 负责视觉、MoE 负责高性价比稀疏推理三者既可经由 GitHub Models / Foundry / NVIDIA NIM 等云端 API 快速接入也可借助 Hugging Face Transformers、Ollama、Foundry Local 与 ONNX Runtime for GenAI 在本地乃至边缘设备上落地。仓库内四个可直接运行的 notebookInstruct、Vision、MoE、NVIDIA NIM提供了从环境准备到生成结果的全流程参考可在此基础上按需替换模型与提示快速搭建自己的 SLM 应用。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考