smol-course 实战:基于 Transformers Pipeline 的 SmolLM2 推理入门与部署指南 教程人工智能大模型NLP微调【免费下载链接】smol-courseA course on aligning smol models.项目地址https://gitcode.com/gh_mirrors/smo/smol-course点击查看免费下载导读本文是 smol-course 项目v1/7_inference/inference_pipeline.md中基础推理章节的完整技术指南。你将在本教程中掌握 Transformerspipeline抽象的核心原理预处理、模型推理、后处理三阶段、使用HuggingFaceTB/SmolLM2-1.7B-Instruct等小模型完成文本生成的基本流程、各类生成参数与设备配置的实战用法以及如何通过 FastAPI 把推理能力封装成 HTTP 服务。读完本文后你可以独立完成从加载模型生成一段文本到搭建一个可对外提供服务的推理接口的完整链路并理解 pipeline 方案在生产场景下的边界与替代选择。Pipeline 的工作原理自动化推理的三阶段pipeline是 Transformers 提供的高层抽象它屏蔽了模型架构细节与前后处理逻辑让开发者只需关心业务逻辑。它把从原始输入到可读输出的机器学习工作流压缩为三个关键阶段预处理阶段PreprocessingPipeline 首先把原始输入转换为模型可消费的格式这一阶段随输入模态不同而不同文本输入经过 tokenizer 分词tokenization把文本转换为模型友好的 token ID 序列。在 smol-course 的依赖环境中分词由tokenizers0.20.3提供底层实现见 requirements.txt图像输入被缩放resize并归一化normalize以满足视觉模型的要求音频输入通过特征提取feature extraction生成声谱图spectrogram或其他表示形式。模型推理阶段Model Inference在 forward pass 过程中pipeline 负责自动对输入进行批处理batching提升处理效率将计算放置到最优设备上CPU / GPU在支持的条件下应用半精度FP16等性能优化。后处理阶段Postprocessing最后pipeline 把模型的原始输出转换为有用的结果将 token ID 解码回可读文本把 logits 转换为概率分数按具体任务格式化输出例如分类标签、生成文本等。这种抽象让你把精力放在应用逻辑上而把模型推理的技术复杂度交给 pipeline 处理。从 smol-course 的课程脉络看pipeline 甚至能自动处理 chat template——units/en/unit1/2.md 指出使用 pipeline 调用聊天模型时你甚至不需要知道 chat template 格式它会根据模型在 Hub 上的 tokenizer 配置自动套用正确的模板、完成分词与生成、返回带角色信息的结构化输出并管理生成参数与停止条件。基本用法用 pipeline 进行文本生成以下是使用 pipeline 进行文本生成的最基本形式from transformers import pipeline # 使用特定模型创建 pipeline generator pipeline( text-generation, modelHuggingFaceTB/SmolLM2-1.7B-Instruct, torch_dtypeauto, device_mapauto ) # 生成文本 response generator( Write a short poem about coding:, max_new_tokens100, do_sampleTrue, temperature0.7 ) print(response[0][generated_text])要点说明modelHuggingFaceTB/SmolLM2-1.7B-Instruct指向 smol-course 课程围绕的 SmolLM2 系列指令微调模型。该系列包含不同规模如 135M、1.7B其中-Instruct后缀表示经过指令微调、能遵循指令并展开对话的变体而基础版如HuggingFaceTB/SmolLM2-135M只做下一个 token 的预测——这一区分在 v1/1_instruction_tuning/chat_templates.md 中有详细说明torch_dtypeauto让库根据设备能力自动选择合适的浮点精度如 GPU 上自动使用半精度device_mapauto由accelerate库驱动smol-course 环境中accelerate1.1.1见 requirements.txt自动把模型各层分配到可用设备上输出结构response[0][generated_text]是 pipeline 的标准返回格式——response是一个列表每个元素对应一次生成结果其中generated_text为生成文本对聊天模型而言该字段是包含完整对话的列表需取最后一个元素作为助手回复见 units/en/unit1/2.md 中的用法。关键配置选项详解模型加载从 CPU 到自动设备分配pipeline 支持多种设备放置策略你可以按运行环境选择# CPU 推理 generator pipeline(text-generation, modelHuggingFaceTB/SmolLM2-1.7B-Instruct, devicecpu) # GPU 推理0 号 GPU generator pipeline(text-generation, modelHuggingFaceTB/SmolLM2-1.7B-Instruct, device0) # 自动设备放置 generator pipeline( text-generation, modelHuggingFaceTB/SmolLM2-1.7B-Instruct, device_mapauto, torch_dtypeauto )三种方式的适用场景配置适用场景说明devicecpu无 GPU 的本地开发、最小化部署一切计算在 CPU 上完成门槛最低device0单张 GPU显式指定使用 0 号 GPUdevice_mapautotorch_dtypeauto多设备、混合精度由accelerate自动规划层分配并选择精度需要注意device_mapauto依赖accelerate库提供设备映射能力这是 smol-course 环境默认安装的依赖accelerate1.1.1见 requirements.txt如果环境未安装该依赖则需回退到显式指定device的方式。生成参数控制输出质量与多样性生成参数决定模型如何从概率分布中选择下一个 token它们是控制输出质量的关键response generator( Translate this to French:, max_new_tokens100, # 生成文本的最大长度 do_sampleTrue, # 使用采样而非贪心解码 temperature0.7, # 控制随机性越高越随机 top_k50, # 限制候选为概率最高的 k 个 token top_p0.95, # 核采样nucleus sampling阈值 num_return_sequences1 # 生成的不同结果数量 )各参数的作用与建议max_new_tokens限制本次生成新增的 token 数量上限防止无限生成长文本do_sampleFalse默认时使用贪心解码始终选取概率最高的 token输出稳定但缺乏多样性True时开启采样允许模型随机选择 tokentemperature对 logits 做温度缩放后再取 softmax温度越低输出越确定越高越发散典型取值区间在 0.51.0本文示例使用 0.7top_k只保留概率最高的前 k 个 token 参与采样避免低概率 token 干扰top_p核采样阈值累计概率达到该值的 token 集合才参与采样与top_k可组合使用num_return_sequences一次输入生成多少个不同结果适合需要候选答案的场景。在 smol-course 的其他单元中这些参数同样通过generation_config字典以批量方式传给 pipeline例如 units/en/unit1/2.md 中展示了把max_new_tokens、temperature、do_sample、top_p、repetition_penalty等参数打包成字典后用于多轮对话生成的方式这说明生成参数既可逐个传参也可集中配置。处理多输入利用批处理提升效率Pipeline 可以借助批处理batching高效地同时处理多个输入# 准备多个 prompt prompts [ Write a haiku about programming:, Explain what an API is:, Write a short story about a robot: ] # 高效处理所有 prompt responses generator( prompts, batch_size4, # 每次一起处理的 prompt 数量 max_new_tokens100, do_sampleTrue, temperature0.7 ) # 打印结果 for prompt, response in zip(prompts, responses): print(fPrompt: {prompt}) print(fResponse: {response[0][generated_text]}\n)batch_size4表示模型一次前向传播同时处理 4 条输入能显著减少逐条推理带来的调度开销。当输入数量超过batch_size时pipeline 会自动分批完成全部输入的处理。需要注意的是pipeline 层面的批处理是静态批处理——它把已收集的输入打包送入模型这一点与后面提到的生产级连续批处理continuous batching不同。在 smol-course 中pipeline 推理也被广泛用于验证训练成果例如 v1/3_parameter_efficient_finetuning/notebooks/finetune_sft_peft.ipynb 在 LoRA 微调合并模型后正是通过pipeline(text-generation, modelmerged_model, tokenizertokenizer, devicedevice)快速验证微调效果。这印证了 pipeline 作为训练-推理闭环中轻量验证手段的定位。Web Server 集成用 FastAPI 封装推理服务将 pipeline 集成到 FastAPI 应用中即可快速把推理能力暴露为 HTTP 接口from fastapi import FastAPI, HTTPException from transformers import pipeline import uvicorn app FastAPI() # 全局初始化 pipeline进程内只加载一次模型 generator pipeline( text-generation, modelHuggingFaceTB/SmolLM2-1.7B-Instruct, device_mapauto ) app.post(/generate) async def generate_text(prompt: str): try: if not prompt: raise HTTPException(status_code400, detailNo prompt provided) response generator( prompt, max_new_tokens100, do_sampleTrue, temperature0.7 ) return {generated_text: response[0][generated_text]} except Exception as e: raise HTTPException(status_code500, detailstr(e)) if __name__ __main__: uvicorn.run(app, host0.0.0.0, port5000)工程要点模型全局初始化pipeline在模块加载时创建一次避免每次请求都重新加载模型——模型加载涉及权重下载与反序列化是非常昂贵的操作错误处理对空输入返回 400对内部异常返回 500并携带具体错误信息便于客户端诊断同步调用在 async 端点中的注意事项模型推理是 CPU/GPU 密集型的阻塞操作本例为教学演示直接放在 async 端点内在高并发场景下建议改用后台线程池或独立推理进程避免阻塞事件循环启动方式uvicorn.run(app, host0.0.0.0, port5000)监听所有网卡接口的 5000 端口便于容器化部署或远程访问。局限性与生产环境的选择Pipeline 非常适合原型验证prototyping和小规模部署但它存在一些固有局限优化选项有限与专用 serving 方案相比可调的推理优化手段较少缺少高级特性没有内置的动态批处理dynamic batching、连续批处理continuous batching等生产级能力吞吐瓶颈对高吞吐的生产负载可能力不从心不适合大规模在线服务。对于高吞吐要求的生成环境smol-course 建议转向Text Generation InferenceTGI等专用 serving 方案。在 v1/7_inference/text_generation_inference.md 中TGI 提供了三类 pipeline 不具备的关键能力张量并行Tensor Parallelism将模型切分到多张 GPU 上支撑更大模型的 serving连续批处理Continuous Batching动态处理请求、最大化 GPU 利用率并结合 Flash Attention、Paged Attention 等优化显著降低显存占用并提升速度Token 流式输出Token Streaming基于 Server-Sent Events 实时逐 token 返回响应降低首 token 延迟适用于聊天类实时应用。因此一个合理的工程决策路径是开发与原型阶段用 pipeline 快速验证生产部署阶段切换到 TGI 或其他专用 serving 方案。这种由简到繁的两阶段选型思路正是 v1/7_inference/README.md 中模块概述的核心主张。深入阅读v1/7_inference/README.md推理模块总览包含 pipeline 推理与 TGI 生产部署的完整学习路径v1/7_inference/text_generation_inference.mdTGI 生产级部署指南覆盖 REST API、huggingface_hub客户端、OpenAI 兼容接口与模型准备safetensors 转换、4-bit 量化units/en/unit1/2.mdpipeline 与 chat template 的自动化处理机制以及多轮对话与generation_config的高级用法v1/1_instruction_tuning/chat_templates.mdSmolLM2 基础模型与指令微调变体的区别、ChatML 模板结构requirements.txtsmol-course 完整依赖环境transformers4.46.3、torch2.5.1、accelerate1.1.1、tokenizers0.20.3等本文所有代码在该版本组合下运行。赞分享教程人工智能大模型NLP微调【免费下载链接】smol-courseA course on aligning smol models.项目地址https://gitcode.com/gh_mirrors/smo/smol-course点击查看免费下载相关推荐smol-course 推理实战从 Transformers Pipeline 到 Text Generation Inference 的 LLM 部署指南smol course 推理实战从 Transformers Pipeline 到 Text Generation Inference 的 LLM 部署指南教程人工智能大模型NLP微调smol-course 实战指南深入理解 Chat Templates聊天模板与 SmolLM2 指令对齐基础smol course 实战指南深入理解 Chat Templates聊天模板与 SmolLM2 指令对齐基础 Chat Templates聊天模板是教程人工智能大模型NLP微调Qwen3-8B推理实战基于Transformers Pipeline的流式与非流式部署指南Qwen3 8B推理实战基于Transformers Pipeline的流式与非流式部署指南 一、技术背景与模型优势 在大语言模型应用落地的浪潮中阿里巴巴通大模型上一篇OpenDDS实时分布式系统的开源解决方案下一篇Pickle 项目安装与使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考