ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

生成式AI入门第19课:小型语言模型(SLM)与微软 Phi-3/3.5 家族实战指南

生成式AI入门第19课:小型语言模型(SLM)与微软 Phi-3/3.5 家族实战指南 生成式AI入门第19课小型语言模型SLM与微软 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本篇文章取材于 generative-ai-for-beginners 课程仓库中的第 19 课19-slm/README.md系统讲解小型语言模型SLM的核心概念、与大型语言模型LLM的差异并围绕微软 Phi-3 / Phi-3.5 家族展开从云端 API 到本地部署的完整推理实战。读完本文你将掌握 SLM 的选型思路并能通过 GitHub Models / Foundry、Azure AI Studio、NVIDIA NIM、Hugging Face Transformers、Ollama 与 ONNX Runtime GenAI 等六种主流途径实际跑通 Instruct、Vision、MoE 三类模型的推理调用。什么是小型语言模型SLM生成式人工智能Generative AI是一个专注于让系统生成全新内容的人工智能领域其产物可以是文本、图片、音乐甚至是完整的虚拟环境。而在语言模型这个最引人注目的分支中小型语言模型Small Language Model, SLM是相对于大型语言模型LLM的一类缩小型变体——它复用了 LLM 的大部分架构原理与训练技术却把计算足迹computational footprint大幅压缩。SLM 是语言模型的子集专门用于生成接近人类水平的文本。与 GPT-4 这类庞然大物相比SLM 更加紧凑、高效非常适合计算资源受限的场景。尽管体积更小它们仍然能够胜任多种自然语言处理NLP任务文本生成生成连贯且上下文相关的句子或段落文本补全根据给定提示预测并补全后续内容翻译将文本从一种语言转换为另一种语言摘要把长文本压缩成更易消化的简短总结。当然这一切以一定程度的性能或理解深度折中为代价。SLM 通常通过对 LLM 进行压缩或蒸馏distill构建而来目标是在保留原始模型大部分功能与语言能力的同时降低整体复杂度使内存占用与计算需求都更为经济。SLM 是如何工作的SLM 的训练过程与 LLM 一脉相承都在海量文本数据上学习语言的模式与结构从而生成语法正确、上下文恰当的文本。完整训练流程包含四个阶段数据收集Data Collection从多种来源汇集大规模文本数据集预处理Preprocessing清洗并组织数据使其适合训练训练Training利用机器学习算法教会模型理解并生成文本微调Fine-Tuning针对特定任务调整模型提升下游表现。SLM 的发展与资源受限环境部署的需求高度契合——在移动设备、边缘计算平台等场景下完整规模的 LLM 往往因资源需求过大而不可行。SLM 通过聚焦效率在性能与可及性之间取得平衡从而让 AI 应用能够覆盖更广泛的领域。SLM 与 LLM 的五大核心差异LLM 与 SLM 都建立在概率机器学习的基础原理之上在架构设计、训练方法、数据生成流程与评估技术上遵循相近思路。但以下五个关键因素将二者显著区分开来维度LLMSLM模型规模参数可达万亿级如 GPT-4 约 1.76 万亿参数通常为数十亿参数如 Mistral 7B 约 70 亿理解能力追求类人智能跨多领域表现良好通用性与适应性更强面向特定领域优化高度专精但泛化理解可能受限计算资源训练与部署极其消耗资源往往需要大规模 GPU 集群参数更少可在具备中等 GPU 能力的本地机器上训练与运行偏见倾向依赖互联网原始数据易引入代表性偏差、错误标注与语言偏见数据集更受约束、更聚焦领域天然对偏见不敏感但并非免疫推理速度体积大、复杂度高常需大量并行计算资源并发用户多时响应变慢体积小可在本地硬件上高效推理无需高强度并行处理以架构为例ChatGPT 采用编码器-解码器框架内的自注意力self-attention机制而 Mistral 7B 使用滑动窗口注意力sliding window attention使得纯解码器decoder-only模型的训练更加高效——这种架构差异对模型的复杂度与性能影响深远。总而言之LLM 更全能但更耗资源SLM 则以更低的计算需求换取领域化的高效。SLM 的典型应用场景聊天机器人Chatbot提供客户支持并以对话方式与用户互动内容创作Content Creation辅助写作者生成灵感甚至草拟整篇文章教育Education帮助学生完成写作作业或学习新语言无障碍Accessibility为残障人士构建工具如文本转语音系统。注本课程以Microsoft Phi-3 / Phi-3.5作为 SLM 的讲解范例下文所有实操均围绕该模型家族展开。认识 Phi-3 / Phi-3.5 模型家族Phi-3 / Phi-3.5 家族主要覆盖三类应用场景文本Instruct、视觉Vision与Agent / 混合专家MoE。课程文档将其形象地概括为Instruct 模型是 Phi 的理解力而 Vision 则给了 Phi 一双看懂世界的眼睛。Phi-3 / Phi-3.5 Instruct文本方向主要面向文本生成、对话补全与内容信息抽取等任务。Phi-3-mini3.8B 参数的语言模型可在 Microsoft Foundry、Hugging Face 与 Ollama 上获取。根据课程文档引用的基准数字数值越高越好Phi-3 模型在关键基准上显著优于同尺寸甚至更大尺寸的语言模型Phi-3-mini 超越两倍于其体量的模型Phi-3-small / medium仅 7B 参数的 Phi-3-small 在语言、推理、编程与数学等多项基准上超越了 GPT-3.5T14B 参数的 Phi-3-medium 则延续这一趋势在基准上超过了 Gemini 1.0 ProPhi-3.5-mini可视为 Phi-3-mini 的升级版。参数规模不变但能力增强——支持20 种语言阿拉伯语、中文、捷克语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希伯来语、匈牙利语、意大利语、日语、韩语、挪威语、波兰语、葡萄牙语、俄语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语等并对长上下文long context提供更强支持。3.8B 参数的 Phi-3.5-mini 超越同尺寸模型与两倍尺寸的模型持平。Phi-3 / Phi-3.5 Vision视觉方向Phi-3-Vision仅 4.2B 参数在通用视觉推理、OCR光学字符识别以及表格、图表理解等任务上超越了 Claude-3 Haiku 与 Gemini 1.0 Pro V 等更大模型Phi-3.5-VisionPhi-3-Vision 的升级版新增多图multi-image输入支持不仅看得懂图片还能处理视频多帧输入、对多张输入图像进行推理。在 OCR、表格与图表理解任务上优于 Claude-3.5 Sonnet 与 Gemini 1.5 Flash在通用视觉知识推理上与之持平。Phi-3.5-MoE混合专家方向混合专家Mixture of Experts, MoE的核心思想是以远低于稠密dense模型的计算量完成预训练即用相同的计算预算大幅扩展模型或数据集规模MoE 模型在预训练阶段应比其稠密对应物更快达到同等质量。Phi-3.5-MoE 由16 × 3.8B 专家模块构成仅 6.6B 激活参数active parameters就能在推理、语言理解与数学能力上达到与远大于它的模型相近的水平。得益于这样的设计与 LLM 不同你完全可以把 Phi-3/3.5-mini 或 Phi-3/3.5-Vision 部署到**边缘设备edge devices**上。如何调用 Phi-3 / Phi-3.5 家族云端 API 路线GitHub Models最直接的云端方式GitHub Models 是上手最快的方式通过模型目录即可快速访问 Phi-3/3.5-Instruct配合 Azure AI Inference SDK 或 OpenAI SDK 用代码完成 API 调用也可以在 Playground 中先行测试不同参数下的效果。关于服务更替的说明课程英文原版文档19-slm/README.md提示GitHub Models 将于 2026 年 7 月底退役Microsoft Foundry ModelsAzure AI Foundry 的模型目录是其直接替代品——你同样可以基于 OpenAI 兼容接口在代码中完成 Instruct 系列模型的调用。课程中给出了一组直观的中文场景对比 Demo在相同中文提问下比较 Phi-3-mini 与 Phi-3.5-mini 的回答差异以下两张截图来自仓库 19-slm/img 目录展示两种模型的真实输出效果观察这两张截图可以直观体会到模型输出质量尤其是多语言、地理知识类内容会随版本迭代而变化实际效果需要以你运行时的模型版本与温度为准确认。Azure AI Studio / Microsoft Foundry如果需要使用 Vision 与 MoE 模型可以改用 Azure AI Studio现整合进 Microsoft Foundry完成调用。更详细的 Instruct、Vision、MoE 调用步骤可参考 Phi-3 Cookbook 中的 QuickStart 章节。NVIDIA NIMNVIDIA 推理微服务除云厂商模型目录外还可以通过NVIDIA NIMNVIDIA Inference Microservices完成 Phi-3/3.5 家族的 API 调用。NIM 是一组加速推理微服务帮助开发者在云、数据中心与工作站等多种环境中高效部署 AI 模型其核心特性包括易于部署Ease of Deployment单条命令即可部署 AI 模型易于集成进既有工作流性能优化Optimized Performance基于 NVIDIA 预优化推理引擎TensorRT、TensorRT-LLM保证低延迟、高吞吐可扩展性Scalability在 Kubernetes 上支持自动扩缩容有效应对波动负载安全与控制Security and Control组织可在自管基础设施上自托管 NIM 微服务保持对数据与应用的控制权标准 APIStandard APIs提供行业标准 API便于构建聊天机器人、AI 助手等应用。NIM 隶属于 NVIDIA AI Enterprise旨在简化 AI 模型的部署与运营确保模型高效运行在 NVIDIA GPU 上。仓库中提供了使用 NVIDIA NIM 调用 Phi-3.5-Vision API 的完整演示笔记本19-slm/python/Phi-3-Vision-Nividia-NIM.ipynb。其核心调用逻辑为import requests, base64 invoke_url https://ai.api.nvidia.com/v1/vlm/microsoft/phi-3-vision-128k-instruct # 读取图片并转为 base64 with open(./img/demo.png, rb) as f: image_b64 base64.b64encode(f.read()).decode() # 小于 180KB 的图片可直接内联在请求中 assert len(image_b64) 180_000, \ To upload larger images, use the assets API (see docs) headers { Authorization: Bearer Your Nvidia NIM API Key, Accept: application/json } payload { messages: [ { role: user, content: fPlease create Python code for image, and use plt to save the new picture under imgs/ and name it phi-3-vision.jpg. img srcdata:image/png;base64,{image_b64} / } ], max_tokens: 1024, temperature: 0.6, top_p: 1.0, stream: False } response requests.post(invoke_url, headersheaders, jsonpayload)请求以 OpenAI 兼容的消息格式发送图片以data:image/png;base64,...形式内嵌在用户消息中模型返回的代码片段可通过提取python与之间的内容进一步解析复用。在本地运行 Phi-3 / Phi-3.5所谓推理Inference指的是模型根据输入生成响应或预测的过程当你向 Phi-3 输入提示词或问题时它利用训练好的神经网络通过分析训练数据中学到的模式与关系推断出最可能且最相关的回答。下面介绍几种主流的本地运行方式。方式一Hugging Face TransformersHugging Face Transformers 是专为 NLP 及其他机器学习任务设计的强大库核心要点如下预训练模型提供数千个开箱即用的预训练模型覆盖文本分类、命名实体识别、问答、摘要、翻译与文本生成等任务框架互操作支持 PyTorch、TensorFlow 与 JAX 等多种深度学习框架可在一种框架中训练、在另一种框架中使用多模态能力除 NLP 外还支持计算机视觉图像分类、目标检测与音频处理语音识别、音频分类易用性提供便捷 API 与工具下载、微调模型对新手和专家同样友好社区与资源拥有活跃社区与丰富的文档、教程和指南。需要注意的是这是最常用的方式但通常需要 GPU 加速——Vision 与 MoE 场景计算量很大若不做量化在 CPU 上运行会非常缓慢。仓库19-slm/python/目录下提供了三个配套 Demo 笔记本完整可运行代码见Instruct 演示phi35-instruct-demo.ipynb——加载模型并构造聊天模板后完成中文对话import torch from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline torch.random.manual_seed(0) model AutoModelForCausalLM.from_pretrained( ../phi-3-instruct, # 本地模型目录也可以传 Hugging Face 模型 ID device_mapcuda, # 加载到 GPU torch_dtypeauto, # 自动选择精度 trust_remote_codeTrue, # 信任远程自定义代码Phi 系列需要 ) tokenizer AutoTokenizer.from_pretrained(../phi-3-instruct) # Phi 系列使用 |system| / |user| / |assistant| 与 |end| 标记构造消息 messages |system|\n 你是我的人工智能助手协助我用中文解答问题.\n|end||user|\n 你知道长沙吗 \n|end||assistant| pipe pipeline(text-generation, modelmodel, tokenizertokenizer) generation_args { max_new_tokens: 1024, # 最多生成的新 token 数 return_full_text: False, temperature: 0.3, do_sample: False, # 关闭采样使用贪心解码 } output pipe(messages, **generation_args) print(output[0][generated_text])Vision 演示phi35-vision-demo.ipynb——演示了多帧视觉推理的完整链路先用 OpenCV 从视频中按直方图相似度阈值 0.9抽取关键帧再用PIL读取为图片列表并构造|image_1|、|image_2|等占位符from transformers import AutoModelForCausalLM, AutoProcessor model_id ../Phi3Vision model AutoModelForCausalLM.from_pretrained( model_id, device_mapcuda, trust_remote_codeTrue, torch_dtypeauto, _attn_implementationflash_attention_2 ) processor AutoProcessor.from_pretrained(model_id, trust_remote_codeTrue, num_crops4) # 21 帧关键帧 占位符构成多帧输入 messages [{role: user, content: placeholder Summarize the video.}] prompt processor.tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) inputs processor(prompt, images, return_tensorspt).to(cuda:0) generation_args {max_new_tokens: 1000, temperature: 0.0, do_sample: False} generate_ids model.generate(**inputs, eos_token_idprocessor.tokenizer.eos_token_id, **generation_args) generate_ids generate_ids[:, inputs[input_ids].shape[1]:] # 去掉输入部分 response processor.batch_decode(generate_ids, skip_special_tokensTrue, clean_up_tokenization_spacesFalse)[0]MoE 演示phi35_moe_demo.ipynb——从笔记本输出的模型结构可以看到 MoE 架构的源码级细节PhiMoEForCausalLM包含 32 层PhiMoEDecoderLayer其中block_sparse_moe模块由一个输出维度为 16 的gate门控层和16 个PhiMoEBlockSparseTop2MLP专家组成每个专家含 w1/w2/w3 三个 Linear 与 SiLU 激活维度 4096→6400→4096。加载与调用示例如下from torch import bfloat16 import transformers model_id ../Phi3MOE model transformers.AutoModelForCausalLM.from_pretrained( model_id, trust_remote_codeTrue, torch_dtypebfloat16, device_mapauto, # 自动分配设备GPU/CPU offload ) model.eval() tokenizer transformers.AutoTokenizer.from_pretrained(model_id) # 以 Agent 风格构造指令要求模型输出 JSON 格式的工具调用 def instruction_format(sys_message: str, query: str): return f|system| {sys_message} |end|\n|user| {query} |end|\n|assistant| pipe transformers.pipeline(text-generation, modelmodel, tokenizertokenizer) generation_args {max_new_tokens: 512, return_full_text: False, temperature: 0.3, do_sample: False} output pipe(instruction_format(sys_msg, query), **generation_args) print(output[0][generated_text])该演示还展示了一个有趣的玩法通过 system 提示词把 MoE 模型装扮成 Agent要求其以tool_name/input/output的 JSON 结构分步输出写博客 → 翻译成中文的规划结果——这正是 17-ai-agents 课程中 Agent 概念的一种轻量落地形态。方式二OllamaOllama 是一个让 LLM 在本地机器上运行更简单的平台支持 Llama 3.1、Phi 3、Mistral、Gemma 2 等多种模型通过把模型权重、配置与数据打包成一个包来简化流程支持 macOS、Linux 与 Windows。若想摆脱云服务做实验或部署这是最直接的方式——只需一条命令ollama run phi3.5方式三Foundry Local离线设备端运行时如果你追求完全离线运行不需要 Azure 订阅、API Key 或网络连接可以选用微软的Foundry Local——它在你自己的硬件上运行 Phi 类模型自动选择当前可用的最佳执行提供方NPU、GPU 或 CPU并暴露 OpenAI 兼容端点因此既有openai/Azure AI Inference SDK 代码几乎无需改动即可接入详见 19-slm/README.mdwinget 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 GENAI则在 ONNX Runtime 之上扩展了对生成式 AI 模型的支持为 ONNX 模型提供完整的生成式 AI 循环generative AI loop包括 ONNX Runtime 推理、logits 处理、搜索与采样、以及 KV 缓存管理。其主要特性广泛平台支持Windows、Linux、macOS、Android、iOS模型支持LLaMA、GPT-Neo、BLOOM 等流行生成式模型性能优化针对 NVIDIA GPU、AMD GPU 等不同硬件加速器做了优化易用性提供高度封装的 API以极少量代码生成文本、图像等内容用户既可以调用高层generate()方法也可以逐 token 循环运行模型的每次迭代并在循环内按需更新生成参数解码策略内置贪心/束搜索greedy/beam search与 TopP、TopK 采样以及重复惩罚repetition penalty等 logits 处理还支持自定义评分。快速上手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)调用 Phi-3.5-Vision 的多模态示例同样来自课程 Demoimport 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 GenAI 的逐 token 流式生成模式GeneratorParams负责配置搜索选项如max_lengthGenerator在循环中不断compute_logits()与generate_next_token()并通过tokenizer_stream边生成边打印——这种模式特别适合实现流式输出效果的聊天界面。其他厂商的量化推理方案除上述方式外还可以基于各厂商的模型推理方法完成量化模型的推理例如Apple MLX框架 Apple Metal苹果设备Qualcomm QNN NPU高通芯片Intel OpenVINO CPU/GPU英特尔平台。这些方案的共同目标都是让 SLM 在端侧设备上以更小的显存/内存占用、更低的功耗跑起来。进一步学习通过本课你已经掌握了 SLM 的基础知识、Phi-3/3.5 家族的型号矩阵以及云端与本地两大类的六种推理接入方式。若想深入学习 SLM 的更多细节如模型微调、量化、评测等推荐继续阅读本课程的其余章节00-course-setup/README.md环境准备、18-fine-tuning/README.md微调、16-open-source-models/README.md开源模型选型仓库中的配套演示笔记本目录19-slm/python包含 Instruct、Vision、MoE 与 NVIDIA NIM 四个完整可运行示例课程英文原版 19-slm/README.md 中关于 Foundry Models 替换 GitHub Models、Foundry Local 离线运行的更新说明可作为本文内容的时效性补充。现在选择一条适合你硬件条件的路线用 Phi-3.5 跑通你的第一个 SLM 应用吧。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表