
LitGPT 模型服务化部署指南从 LitServe 推理服务到 OpenAI 兼容 API【免费下载链接】litgpt20 high-performance LLMs with recipes to pretrain, finetune and deploy at scale.项目地址: https://gitcode.com/GitHub_Trending/li/litgpt本指南基于 LitGPT 仓库中的 tutorials/deploy.md 展开系统讲解如何将预训练或微调后的大语言模型部署为可对外提供服务的推理接口。你将掌握三种实战能力使用litgpt serve一键启动基于 LitServe 的最小化可扩展推理服务、通过--stream true开启逐 token 流式响应以及通过--openai_spec true启动 OpenAI 兼容端点无缝接入现有基于 OpenAI API 的应用生态。全文同时结合仓库源码部署服务实现 与 服务端测试深入说明每一个 CLI 参数的底层含义与默认行为。1. 部署架构总览litgpt serve的背后LitGPT 将模型部署收敛为一条命令litgpt serve。在 CLI 入口 中serve子命令被映射到litgpt.deploy.serve.run_server函数该函数基于LitServe可选依赖构建推理服务器同时利用 LitGPT 自身的LLMPython API 完成模型加载与推理调度。值得说明的是run_server的第一个参数是checkpoint_dir但实际执行时会先经过auto_download_checkpoint()见 serve.py因此你既可以传入 Hugging Face 上的模型名如microsoft/phi-2触发自动下载也可以直接传入本地已经转换好的 LitGPT 格式 checkpoint 目录。这也正是「下载预训练模型」与「部署自己微调的模型」两种用法可以共用同一条命令的原因。LitServe 在 litgpt/constants.py 中被声明为可选依赖RequirementCache(litserve)使用前请确保环境已安装pip install litserve根据openai_spec、stream两个开关run_server会选择三种不同的 API 实现类serve.py开关组合使用的 API 类适用场景默认openai_specFalse, streamFalseSimpleLitAPI一次性返回完整回复端点/predict--stream trueStreamLitAPI逐 token 流式返回端点/predict--openai_spec trueOpenAISpecLitAPIOpenAI 兼容端点/v1/chat/completions2. 用 LitServe 部署 phi-2最小可扩展推理服务2.1 启动推理服务以 Microsoft 的 phi-2 模型为例仅需两步即可拉起服务# 1) 下载预训练模型也可以换成你自己微调过的模型 litgpt download microsoft/phi-2 # 2) 启动服务 litgpt serve microsoft/phi-2[!TIP] 使用litgpt serve --help可以查看全部可选参数包括端口port、设备数devices、LLM 采样温度temperature等详见本文第 5 节参数速查表。服务启动后run_server会通过pprint(locals())打印全部运行参数便于核对并默认监听127.0.0.1:8000对外暴露/predict端点。2.2 向推理服务发送请求在另一个 Python 会话中向推理服务发送 POST 请求import requests, json response requests.post( http://127.0.0.1:8000/predict, json{prompt: Fix typos in the following sentence: Example input} ) print(response.json()[output])执行上述代码将得到类似如下输出示例为文档给出的结果Example input.请求体只需一个prompt字段SimpleLitAPI.decode_request会将其原样取出serve.pypredict阶段调用LLM.generate执行采样最终encode_response将生成文本封装为{output: ...}结构返回serve.py。3. 开启流式模式逐 token 返回响应默认的两步流程会一次性返回完整回复。如果希望模型边生成边输出对交互式应用体验更友好只需在启动时加上--stream truelitgpt serve microsoft/phi-2 --stream true对应的查询代码更新为import requests, json response requests.post( http://127.0.0.1:8000/predict, json{prompt: Fix typos in the following sentence: Example input}, streamTrue ) # 逐行读取流式响应 for line in response.iter_lines(decode_unicodeTrue): if line: print(json.loads(line)[output], end)输出示例文档给出Sure, here is the corrected sentence: Example input从源码看流式模式对应StreamLitAPI其predict是一个生成器通过yield from self.llm.generate(..., streamTrue)逐步产出 tokenencode_response同样以生成器逐条封装{output: ...}serve.py。流式服务仍然使用同一个/predict端点仅响应协议变为多行 JSON客户端逐行解析即可。4. 启动 OpenAI 兼容 API无缝对接现有应用LitGPT 提供 OpenAI 兼容端点允许使用 OpenAI SDK 或任意 OpenAI 兼容客户端与模型交互非常适合将 LitGPT 集成到已经基于 OpenAI API 开发的既有应用中而无需改动业务代码。4.1 以 OpenAI 规范启动服务以HuggingFaceTB/SmolLM2-135M-Instruct为例# 1) 下载预训练模型也可以换成你自己微调过的模型 litgpt download HuggingFaceTB/SmolLM2-135M-Instruct # 2) 以 OpenAI 兼容端点启动服务 litgpt serve HuggingFaceTB/SmolLM2-135M-Instruct --openai_spec true[!TIP]--openai_spec true开关使服务暴露/v1/chat/completions端点取代默认的/predict端点。底层实现上OpenAISpecLitAPI会从 checkpoint 目录下的tokenizer_config.json读取chat_template用 Jinja2 渲染多轮对话消息若 tokenizer 配置中没有提供chat_template则回退到一个默认模板serve.py。同时LitServer会挂载OpenAISpec因此还附带/health健康检查等标准端点。4.2 使用 curl 查询curl -X POST http://127.0.0.1:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: SmolLM2-135M-Instruct, messages: [{role: user, content: Hello! How are you?}] }4.3 使用 OpenAI Python SDK 查询from openai import OpenAI # 将客户端指向本地 LitGPT 服务 client OpenAI( base_urlhttp://127.0.0.1:8000/v1, api_keynot-needed # LitGPT 默认不要求认证 ) response client.chat.completions.create( modelSmolLM2-135M-Instruct, messages[ {role: user, content: Hello! How are you?} ] ) print(response.choices[0].message.content)值得注意OpenAI 模式下请求中的temperature、top_p、max_completion_tokens等参数会被请求上下文中的值覆盖未提供的参数则回退到服务启动时设定的默认值serve.py。仓库的 服务端测试 对该模式做了完整验证既覆盖了带chat_template的 SmolLM2-135M-Instruct 的非流式与流式stream: true返回delta.content调用也覆盖了缺失chat_template时的回退逻辑。5. 服务端参数速查litgpt serve完整选项下面表格整理了run_server的全部可配置参数及其默认值信息直接来源于 serve.py 的函数签名与 docstring参数默认值含义与说明checkpoint_dir必填模型 checkpoint 目录或 Hugging Face 模型名自动下载或加载本地权重quantizeNone量化方式bnb.nf4、bnb.nf4-dq、bnb.fp4、bnb.fp4-dq4 位 bitsandbytes 量化或bnb.int88 位可显著降低显存占用precisionNone权重精度默认从 checkpoint 目录的元数据自动推断temperature0.8采样温度大于 1 增加随机性小于 1 降低随机性top_k50候选 token 池大小大于 1 会带来更多新颖但可能更不连贯的文本top_p1.0核采样累积概率阈值取值0 top_p 1采样顺序为 top_k → temperature → top_pmax_new_tokens50生成步数上限devices1使用的 GPU/设备数量大于 1 时默认启用sequential生成策略acceleratorauto加速器类型如auto、cuda、cpu、mpsauto优先使用 GPU否则回退 CPUport8000服务监听端口streamFalse是否流式返回响应openai_specFalse是否启用 OpenAI 兼容端点/v1/chat/completionsaccess_tokenNone访问受权限限制模型时使用的 API tokenapi_path/predict自定义 API 路径例如/my_api/classifytimeout30请求超时时间秒generate_strategyNone生成策略sequential多设备时默认将 Transformer 层按设备切分后顺序执行可运行单卡装不下的模型或tensor_parallel张量并行切分6. 多 GPU 部署与生成策略当模型规模超过单卡显存时可通过--devices N指定多卡并结合--generate_strategy选择分布式推理方式# 顺序切分将 Transformer 块分布到多张卡上顺序执行 litgpt serve model --devices 2 --generate_strategy sequential # 张量并行按张量维度切分模型 litgpt serve model --devices 2 --generate_strategy tensor_parallel从源码看devices 1时若不显式指定generate_strategy服务会自动回退为sequential策略serve.py其实现位于 generate/sequentially.py张量并行实现位于 generate/tp.py。仓库的 服务端测试 分别用sequential1 卡与tensor_parallel2 卡两种策略验证了服务可正常启动与响应。7. 部署自己微调过的模型litgpt serve不只支持开箱即用的预训练模型也支持直接部署微调产物。使用 finetune_lora、finetune_full 或 finetune_adapter 完成微调后checkpoint 会保存在输出目录默认out/model-name/final将其作为litgpt serve的参数即可litgpt serve out/custom-model/final同样地服务端会自动读取该目录下的model_config.yaml与 tokenizer 文件完成模型装配。若模型权重经过量化保存或希望以量化精度部署以节省显存可配合--quantize参数详细的量化方案可参考 tutorials/quantize.md。8. 自动化验证服务端测试给部署的保障仓库在 tests/test_serve.py 中提供了针对litgpt serve的端到端测试可作为部署正确性的参照主要覆盖test_simple最小启动验证检查服务在 8000 端口正常响应test_quantize--quantize bnb.nf4量化部署需 CUDAtest_multi_gpu_serve--devices 2多卡部署需至少 2 张 GPUtest_serve_with_openai_specOpenAI 兼容端点的健康检查、非流式与流式chat.completions调用、chat_template缺失回退test_serve_with_generate_strategysequential与tensor_parallel两种生成策略。这些测试同时说明了服务的通用契约默认GET /返回 200、GET /health返回ok、POST /predict接受{prompt: ...}、POST /v1/chat/completions遵循 OpenAI 请求/响应格式。部署自定义模型前可以参照这些用例先做一次本地自检。9. 补充ChatGPT 风格的 UI 原型如果你希望基于部署好的推理服务进一步开发一个类似 ChatGPT 的 Web UI 原型原文档还指向了基于Chainlit的 UI 构建教程位于 Lightning AI Studio 平台可按文档指引打开对应 Studio 获取完整示例。其核心交互仍然通过本文介绍的/predict或 OpenAI 兼容端点完成因此服务端配置、采样参数与流式开关的理解是搭建 UI 的前提。结语通过 tutorials/deploy.md 与源码的对照可以看到 LitGPT 的部署链路做到了「一条命令、三套协议」默认的/predict简洁直接--stream true提升交互体验--openai_spec true实现生态兼容。结合--quantize、--devices与--generate_strategy的组合从单卡小模型到需要多卡张量并行的大模型都可以在一套命令体系内完成从 checkpoint 到对外服务的转换为将微调成果真正落地为可调用的产品接口提供了低成本的路径。【免费下载链接】litgpt20 high-performance LLMs with recipes to pretrain, finetune and deploy at scale.项目地址: https://gitcode.com/GitHub_Trending/li/litgpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考