ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Qwen小模型本地部署与LoRA微调实战指南:从Ollama到生产级应用

Qwen小模型本地部署与LoRA微调实战指南:从Ollama到生产级应用 在实际项目中引入大语言模型时很多团队都面临一个现实困境云端API调用成本高、延迟不稳定且数据安全存在顾虑。因此将模型部署到本地服务器或边缘设备进行推理已成为企业级应用落地的关键一步。然而动辄数百亿参数的大模型对硬件资源要求苛刻部署和维护成本高昂。此时以Qwen系列为代表的高性能“小模型”开始崭露头角它们凭借更小的参数量、更快的推理速度和对消费级硬件的友好支持正在成为实际生产环境中的主导力量。本文旨在为开发者提供一个从零开始的、可复现的本地Qwen模型部署与微调实战指南。我们将聚焦于一个典型场景如何在有限的硬件资源例如一台配备消费级GPU的PC或一台云服务器上完成一个Qwen小模型的本地部署、基础推理并进一步通过LoRA微调使其适应特定领域任务。整个过程将涵盖环境准备、模型选择、部署工具、推理验证、微调实战以及生产级考量力求让读者能够独立完成一个可运行的本地AI应用原型。1. 理解本地推理与Qwen模型选型在开始动手之前需要先厘清几个核心概念这有助于理解后续每一步操作的目的和背后的技术选型逻辑。1.1 什么是本地推理本地推理指的是将训练好的机器学习模型此处特指大语言模型部署在用户自己的硬件环境如本地服务器、工作站、个人电脑甚至移动设备上并在此环境中直接执行模型的前向计算即根据输入生成输出而无需将数据发送到远程的云端API服务器。为什么选择本地推理数据隐私与安全敏感数据如内部文档、代码、用户信息无需离开本地网络从根本上避免了数据泄露风险。可控性与稳定性服务可用性、延迟和吞吐量完全由本地硬件和网络决定不受云端服务商策略、网络波动或配额限制的影响。成本可控对于中高频调用场景一次性硬件投入可能低于长期支付云端API调用费用。模型量化等技术进一步降低了硬件门槛。定制化可以自由地对模型进行量化、裁剪、微调深度定制以满足特定业务需求。本地推理的挑战硬件要求模型越大对GPU显存、CPU算力和内存的要求越高。部署复杂度涉及模型格式转换、推理引擎集成、服务化封装等步骤。性能优化需要针对特定硬件进行推理引擎优化、量化策略选择等。1.2 Qwen模型家族与“小模型”定义Qwen通义千问是阿里巴巴开源的大语言模型系列。它并非单一模型而是一个覆盖多种参数量级和模态的模型家族。模型尺寸谱系通常在开源社区和实际部署中我们将参数量在70亿7B及以下的模型称为“小模型”将130亿至340亿13B-34B称为“中等模型”700亿70B以上称为“大模型”。Qwen系列提供了从0.5B到72B不等的多种选择。为什么小模型主导实际应用硬件友好一个经过量化的7B模型仅需约4-8GB GPU显存即可流畅运行这使得消费级显卡如NVIDIA RTX 3060 12G, RTX 4060 Ti 16G甚至高性能CPU都能胜任。推理速度快参数少意味着单次推理的计算量小响应延迟低能满足交互式应用的需求。微调成本低对中小模型进行全参数微调或LoRA微调所需的计算资源和时间远少于大模型。性能足够在许多特定任务如代码生成、文本分类、信息抽取、对话上精心微调过的小模型性能可以接近甚至超越未微调的大模型。如何选择Qwen模型对于本地部署入门和大多数垂直场景应用建议从以下模型开始模型名称参数量推荐场景硬件最低要求 (量化后)特点Qwen2.5-0.5B-Instruct0.5B极度资源受限环境、简单文本处理、教学演示CPU / 2GB RAM体积最小速度极快能力基础。Qwen2.5-1.5B-Instruct1.5B移动端/边缘设备部署、轻量级对话助手CPU / 4GB RAM平衡了尺寸与能力是轻量级应用的优选。Qwen2.5-7B-Instruct7B本地部署主力型号、通用聊天、代码辅助、文本分析GPU 8GB显存 / CPU 16GB RAM能力全面社区支持好量化后资源占用与性能平衡最佳。Qwen2.5-14B-Instruct14B对效果要求更高的本地服务、小型企业知识库GPU 16GB显存能力更强需要更好的硬件支持。关于“Instruct”版本-Instruct后缀表示该模型已经过指令微调能更好地理解和遵循人类指令直接用于对话或任务执行。对于本地应用应优先选择-Instruct版本。1.3 核心工具链介绍本地部署离不开高效的推理引擎和工具。以下是当前主流且易用的选择Ollama强烈推荐给初学者和快速原型开发。它提供了开箱即用的模型管理、拉取和运行能力支持多种量化格式命令行交互简单并且内置了简单的API服务器。它封装了底层细节让用户能专注于使用模型。LM Studio图形化界面的本地模型运行工具适合不想接触命令行的用户。可以方便地下载、加载模型并进行聊天式交互。vLLM/Text Generation Inference (TGI)高性能推理服务器适用于生产环境部署支持连续批处理、PagedAttention等优化技术吞吐量高。Transformers (by Hugging Face)最基础的Python库提供了最大的灵活性可以编写自定义的推理脚本但需要自行处理服务化、并发等。对于本教程我们将以Ollama作为核心部署工具因为它极大简化了流程同时其背后使用的也是成熟的推理引擎如llama.cpp。2. 环境准备与Ollama部署我们将在一台安装了NVIDIA GPU的Ubuntu 22.04服务器上进行演示。Windows/macOS用户也可参考Ollama官方文档步骤大同小异。2.1 系统与硬件检查首先确认你的基础环境。# 检查操作系统版本 lsb_release -a # 检查CPU和内存 free -h lscpu # 检查NVIDIA GPU及驱动 (如果有) nvidia-smi确保你的系统有足够的资源。以运行Qwen2.5-7B-Instruct的4位量化版本为例建议GPUNVIDIA GPU显存 8GB如RTX 3070, 4060 Ti 16G等。CPU现代多核CPU如Intel i5/R5及以上。内存 16GB。磁盘至少20GB可用空间用于存放模型。如果只有CPU则需要更大的内存32GB并且推理速度会慢很多。2.2 安装OllamaOllama的安装极其简单。访问其官网获取最新安装命令。# 在Linux/macOS上使用一键安装脚本 curl -fsSL https://ollama.com/install.sh | sh # 安装完成后启动Ollama服务通常安装脚本会自动启动 sudo systemctl start ollama sudo systemctl enable ollama # 设置开机自启 # 检查服务状态 sudo systemctl status ollama安装完成后Ollama会作为一个后台服务运行并提供一个命令行工具ollama。2.3 拉取并运行Qwen模型Ollama集成了模型仓库可以直接拉取预置的模型。Qwen系列模型在Ollama中通常以qwen2.5:7b这样的格式命名。# 拉取Qwen2.5 7B指令微调模型默认会拉取一个推荐的量化版本如Q4_K_M ollama pull qwen2.5:7b # 拉取完成后以交互式对话模式运行模型 ollama run qwen2.5:7b运行后你会进入一个对话界面可以直接输入问题模型会流式输出回答。按CtrlD退出对话。第一次拉取模型时可能遇到的问题网络问题Ollama默认从官方仓库拉取国内网络可能较慢或失败。可以配置镜像源。# 设置环境变量临时 export OLLAMA_HOST0.0.0.0 # 可选使服务在所有网络接口上监听 # 对于网络问题可以考虑使用第三方镜像或手动导入模型文件MODELFILE具体请查阅Ollama社区方案。磁盘空间不足检查~/.ollama/models目录空间。2.4 验证基础推理能力退出交互模式后我们可以通过API方式验证模型服务是否正常。Ollama默认在11434端口提供了兼容OpenAI API格式的接口。# 使用curl调用生成API curl http://localhost:11434/api/generate -d { model: qwen2.5:7b, prompt: 请用Python写一个函数计算斐波那契数列的第n项。, stream: false }如果返回一个包含response字段的JSON且内容是一段Python代码说明模型部署成功。更常用的方式是使用Python脚本测试# test_ollama.py import requests import json def ask_ollama(prompt, modelqwen2.5:7b): url http://localhost:11434/api/generate payload { model: model, prompt: prompt, stream: False, options: { temperature: 0.7, # 控制随机性0-1越高越有创意 num_predict: 512 # 生成的最大token数 } } try: response requests.post(url, jsonpayload) response.raise_for_status() result response.json() return result.get(response, ) except requests.exceptions.RequestException as e: return f请求错误: {e} except json.JSONDecodeError as e: return fJSON解析错误: {e} if __name__ __main__: question 解释一下什么是机器学习。 answer ask_ollama(question) print(问题, question) print(回答, answer)运行这个脚本你应该能得到一个关于机器学习的连贯解释。3. 深入配置与模型管理基础运行只是第一步要满足项目需求还需要了解如何配置模型参数和管理多个模型。3.1 创建自定义模型文件ModelfileOllama允许你通过编写一个Modelfile来创建自定义版本的模型例如指定不同的量化格式、系统提示词或参数。创建一个名为Modelfile.qwen-custom的文件# Modelfile.qwen-custom FROM qwen2.5:7b # 基于哪个模型 # 设置系统提示词用于定义模型的行为角色 PARAMETER system 你是一个专业的Java开发助手回答要简洁、准确优先给出代码示例。 # 设置温度参数默认0.8 PARAMETER temperature 0.3 # 设置上下文窗口大小模型本身支持128K但可根据需要调整 PARAMETER num_ctx 8192 # 指定使用GPU层数-1表示全部可根据显存调整 PARAMETER num_gpu 40 # 模板定义用户和AI消息的格式一般无需修改除非与你的微调数据格式不一致 TEMPLATE {{ .System }} {{ .Prompt }}然后使用这个Modelfile创建并运行自定义模型# 创建名为 my-qwen-java 的模型 ollama create my-qwen-java -f ./Modelfile.qwen-custom # 运行自定义模型 ollama run my-qwen-java现在这个模型就会以“Java开发助手”的角色来回答问题。3.2 管理模型列表与删除# 查看本地已下载的所有模型 ollama list # 显示某个模型的详细信息 ollama show qwen2.5:7b # 复制一个模型 ollama cp qwen2.5:7b my-qwen-backup # 删除一个模型谨慎操作 ollama rm my-qwen-backup3.3 配置Ollama服务生产环境考量对于生产环境你可能需要调整Ollama服务的配置。配置文件通常位于~/.ollama/config.json。// ~/.ollama/config.json (如果不存在可创建) { // 监听所有网络接口允许其他机器访问注意安全 host: 0.0.0.0, // 监听端口 port: 11434, // 模型存储路径 models: /path/to/your/models/dir, // 允许的源CORS用于Web前端调用 origins: [http://localhost:3000, https://your-app.com] }修改配置后需要重启服务sudo systemctl restart ollama注意将服务暴露在0.0.0.0存在安全风险务必在生产环境中配置防火墙规则、API密钥认证或通过反向代理如Nginx添加访问控制。4. 使用LoRA对Qwen小模型进行微调实战预训练模型虽然通用但在特定领域如医疗、法律、金融、公司内部知识上表现可能不佳。微调Fine-tuning是让模型适应特定任务的关键步骤。全参数微调成本高而LoRALow-Rank Adaptation是一种参数高效的微调方法它只训练模型中的一部分低秩矩阵大大减少了训练资源需求。我们将使用 Hugging Face 的peft和transformers库对 Qwen2.5-1.5B-Instruct 模型进行 LoRA 微调。4.1 准备微调环境创建一个新的Python虚拟环境并安装依赖。# 创建并激活虚拟环境 python -m venv qwen-lora-env source qwen-lora-env/bin/activate # Linux/macOS # qwen-lora-env\Scripts\activate # Windows # 安装核心库版本兼容性很重要 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 根据你的CUDA版本调整 pip install transformers4.38.0 pip install peft0.9.0 pip install datasets2.17.0 pip install accelerate0.27.0 pip install trl0.7.11 # 用于SFT训练 pip install scipy sentencepiece tiktoken einops4.2 准备微调数据集微调需要指令-输出对格式的数据。我们以一个简单的“客服问答”数据集为例保存为JSON文件。// data/train.jsonl {instruction: 用户说我的订单还没收到。, input: , output: 非常抱歉给您带来不便。请您提供订单号我立刻为您查询物流状态。} {instruction: 如何修改收货地址, input: , output: 您可以在‘我的账户’-‘地址管理’中修改默认收货地址。如需修改已下单的订单地址请及时联系客服处理。} {instruction: 产品有质量问题怎么办, input: , output: 对于产品质量问题我们深表歉意。请您拍摄问题部位的照片并通过售后渠道提交我们会尽快为您处理退换货。} // ... 更多数据数据量通常需要几百到几千条质量越高越好。4.3 编写LoRA微调脚本创建一个finetune_lora.py文件。# finetune_lora.py import json from datasets import Dataset from transformers import ( AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, DataCollatorForSeq2Seq, ) from peft import LoraConfig, get_peft_model, TaskType import torch # 1. 加载模型和分词器 model_name Qwen/Qwen2.5-1.5B-Instruct # 使用Hugging Face模型ID tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) # 注意Qwen需要设置 pad_token if tokenizer.pad_token is None: tokenizer.pad_token tokenizer.eos_token model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.bfloat16, # 节省显存 device_mapauto, # 自动分配模型层到GPU/CPU trust_remote_codeTrue ) # 2. 配置LoRA lora_config LoraConfig( task_typeTaskType.CAUSAL_LM, # 因果语言模型任务 r8, # LoRA秩影响参数量通常8,16,32 lora_alpha32, # 缩放因子 lora_dropout0.1, # Dropout率 target_modules[q_proj, k_proj, v_proj, o_proj], # 针对Attention模块 biasnone, ) model get_peft_model(model, lora_config) model.print_trainable_parameters() # 打印可训练参数量应该只占原模型很小一部分 # 3. 加载并预处理数据集 def preprocess_function(examples): texts [] for inst, inp, outp in zip(examples[instruction], examples[input], examples[output]): # 构建符合Qwen指令格式的文本 message [ {role: user, content: inst ( if inp else f\n{inp})}, {role: assistant, content: outp} ] text tokenizer.apply_chat_template(message, tokenizeFalse, add_generation_promptFalse) texts.append(text) # 对文本进行tokenize model_inputs tokenizer(texts, max_length512, truncationTrue, paddingmax_length) # 将标签设置为输入ID用于计算损失忽略padding部分 model_inputs[labels] model_inputs[input_ids].copy() return model_inputs # 假设数据已加载为列表 with open(data/train.jsonl, r, encodingutf-8) as f: data [json.loads(line) for line in f] dataset Dataset.from_list(data) tokenized_dataset dataset.map(preprocess_function, batchedTrue) # 4. 设置训练参数 training_args TrainingArguments( output_dir./qwen-1.5b-lora-customer-service, # 输出目录 per_device_train_batch_size4, # 根据GPU显存调整 gradient_accumulation_steps4, # 梯度累积模拟更大batch size num_train_epochs3, # 训练轮数 logging_steps10, save_steps100, learning_rate2e-4, # LoRA学习率可以稍大 fp16True, # 混合精度训练节省显存 remove_unused_columnsFalse, push_to_hubFalse, # 不上传到Hugging Face Hub report_tonone, # 不报告到wandb等 ) # 5. 创建Trainer并开始训练 trainer Trainer( modelmodel, argstraining_args, train_datasettokenized_dataset, data_collatorDataCollatorForSeq2Seq(tokenizertokenizer, paddingTrue), ) trainer.train() # 6. 保存LoRA权重和模型 model.save_pretrained(./qwen-1.5b-lora-customer-service-lora) tokenizer.save_pretrained(./qwen-1.5b-lora-customer-service-lora) print(LoRA微调完成权重已保存。)4.4 运行微调脚本并合并模型# 运行微调脚本 python finetune_lora.py训练完成后你会得到LoRA权重文件。要使用微调后的模型需要将LoRA权重与基础模型合并或者使用peft在推理时动态加载。方式一动态加载LoRA权重推理时# inference_lora.py from transformers import AutoTokenizer, AutoModelForCausalLM from peft import PeftModel import torch base_model_name Qwen/Qwen2.5-1.5B-Instruct lora_path ./qwen-1.5b-lora-customer-service-lora tokenizer AutoTokenizer.from_pretrained(base_model_name, trust_remote_codeTrue) base_model AutoModelForCausalLM.from_pretrained( base_model_name, torch_dtypetorch.bfloat16, device_mapauto, trust_remote_codeTrue ) model PeftModel.from_pretrained(base_model, lora_path) model.eval() # 推理 input_text 用户说我收到的商品颜色不对。 messages [{role: user, content: input_text}] text tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) inputs tokenizer(text, return_tensorspt).to(model.device) with torch.no_grad(): outputs model.generate(**inputs, max_new_tokens150) response tokenizer.decode(outputs[0], skip_special_tokensTrue) print(response)方式二将LoRA权重合并到基础模型并导出用于Ollama# merge_lora.py from transformers import AutoTokenizer, AutoModelForCausalLM from peft import PeftModel import torch base_model_name Qwen/Qwen2.5-1.5B-Instruct lora_path ./qwen-1.5b-lora-customer-service-lora save_path ./qwen-1.5b-merged-customer-service tokenizer AutoTokenizer.from_pretrained(base_model_name, trust_remote_codeTrue) base_model AutoModelForCausalLM.from_pretrained( base_model_name, torch_dtypetorch.bfloat16, device_mapauto, trust_remote_codeTrue ) # 加载LoRA权重并合并 model PeftModel.from_pretrained(base_model, lora_path) merged_model model.merge_and_unload() # 关键步骤合并 # 保存合并后的完整模型 merged_model.save_pretrained(save_path, safe_serializationTrue) tokenizer.save_pretrained(save_path) print(f合并模型已保存至{save_path})合并后的模型可以像原始模型一样通过转换格式加载到Ollama中使用。5. 生产部署与性能优化当模型微调完毕并通过测试后就需要考虑如何将其稳定、高效地部署到生产环境。5.1 使用vLLM部署高性能推理服务Ollama适合轻量级和原型对于高并发生产场景推荐使用vLLM。# 安装vLLM pip install vllm # 启动一个vLLM服务加载我们合并后的模型 python -m vllm.entrypoints.openai.api_server \ --model ./qwen-1.5b-merged-customer-service \ --served-model-name qwen-customer-service \ --max-model-len 8192 \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9 \ --port 8000vLLM服务提供了与OpenAI完全兼容的API接口。# 测试vLLM API from openai import OpenAI client OpenAI( api_keytoken-abc123, # vLLM默认不需要key但需要设置一个 base_urlhttp://localhost:8000/v1 ) completion client.chat.completions.create( modelqwen-customer-service, messages[ {role: system, content: 你是一个专业的客服助手。}, {role: user, content: 我的订单号是12345还没发货吗} ], temperature0.3, max_tokens256 ) print(completion.choices[0].message.content)5.2 模型量化以进一步降低资源占用量化是将模型权重从高精度如FP16转换为低精度如INT8, INT4的过程能显著减少内存占用和提升推理速度但可能会轻微损失精度。使用auto-gptq进行量化以Qwen2.5-7B为例pip install auto-gptq optimum# quantize_gptq.py from transformers import AutoTokenizer, AutoModelForCausalLM from optimum.gptq import GPTQQuantizer, load_quantized_model model_name Qwen/Qwen2.5-7B-Instruct quant_path ./qwen2.5-7b-instruct-gptq-4bit tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) quantizer GPTQQuantizer(bits4, datasetc4, model_seqlen8192) quantized_model load_quantized_model( AutoModelForCausalLM, model_name, quantizerquantizer, device_mapauto ) quantized_model.save_pretrained(quant_path) tokenizer.save_pretrained(quant_path)量化后的模型可以直接被vLLM或transformers加载使用。5.3 部署清单与监控在生产环境中部署模型服务除了模型本身还需要考虑以下方面组件考虑事项建议方案服务化如何提供稳定、可扩展的API使用vLLM/TGI作为推理引擎并用FastAPI/Flask封装业务逻辑层。并发与负载均衡如何应对高并发请求使用多个vLLM实例通过Nginx进行负载均衡。监控如何监控服务健康状态和性能集成Prometheus监控vLLM内置指标使用Grafana展示。监控QPS、延迟、错误率、GPU利用率。日志如何记录请求和推理过程结构化日志JSON格式记录请求ID、模型、输入/输出长度、耗时、错误信息。配置管理如何管理模型路径、参数等配置使用环境变量或配置文件如YAML与代码分离。版本与回滚如何更新模型蓝绿部署或金丝雀发布。保留旧版本模型和代码便于快速回滚。安全如何防止滥用和攻击API密钥认证、请求频率限制、输入内容过滤防Prompt注入。6. 常见问题排查与优化建议在实际操作中你可能会遇到以下问题。6.1 部署与运行问题问题现象可能原因排查步骤解决方案ollama run报错Error: model not found1. 模型名称拼写错误。2. 模型未成功拉取。1.ollama list确认模型是否存在。2. 检查网络连接和磁盘空间。1. 使用正确的模型名。2. 重新执行ollama pull。推理速度极慢1. 未使用GPU。2. 模型量化程度低或未量化。3. 系统内存/显存不足触发交换。1. 运行nvidia-smi查看GPU使用情况。2. 检查Ollama日志确认运行设备。3. 使用htop或watch -n 1 free -h监控内存。1. 确保CUDA和驱动正确安装。2. 使用量化版本模型如qwen2.5:7b-q4_K_M。3. 增加硬件资源或使用更小模型。服务启动后API请求返回Connection refused1. Ollama服务未运行。2. 防火墙阻止了端口。3. 服务绑定到了127.0.0.1。1.sudo systemctl status ollama。2.netstat -tlnp | grep 11434。3. 检查Ollama配置host项。1. 启动服务。2. 开放防火墙端口或检查绑定地址。模型输出乱码或胡言乱语1. 系统提示词或模板设置错误。2. 温度(temperature)参数过高。3. 模型本身在特定任务上能力不足。1. 检查Modelfile中的system和TEMPLATE。2. 降低temperature如设为0.1。3. 用标准Prompt测试基础模型。1. 修正提示词和模板。2. 调整生成参数。3. 考虑对模型进行微调。6.2 微调相关问题问题现象可能原因排查步骤解决方案训练时GPU显存不足OOM1.batch_size或max_length设置过大。2. 未使用梯度累积或混合精度训练。3. 模型太大。1. 逐步减小per_device_train_batch_size。2. 检查fp16True是否设置。3. 尝试更大的gradient_accumulation_steps。1. 调整超参数使用更小的batch和序列长度。2. 启用fp16/bf16和梯度检查点。3. 使用参数更小的模型或LoRA。微调后模型效果变差或“失忆”1. 学习率过高。2. 训练数据量太少或质量差。3. 训练轮数过多过拟合。4. LoRAtarget_modules设置不当。1. 检查训练损失曲线是否震荡或飙升。2. 评估原始模型在任务上的表现。3. 在验证集上评估。1. 降低学习率如从2e-4降到1e-5。2. 增加高质量数据。3. 早停Early Stopping。4. 尝试不同的target_modules组合。合并LoRA权重后模型无法加载1. 基础模型与LoRA权重不匹配。2. 合并时代码错误或版本不兼容。1. 确认基础模型名称和版本完全一致。2. 检查merge_and_unload()是否成功执行。1. 使用相同的基础模型重新进行微调。2. 确保transformers和peft库版本兼容。6.3 性能优化建议选择合适的量化级别q4_K_M在精度和速度上是一个很好的平衡点。对速度要求极高且可接受一定精度损失可选q4_0或q3_K_M。调整上下文长度在Ollama或vLLM启动时通过num_ctx或max_model_len参数设置合理的上下文长度。更长的上下文会消耗更多内存和计算时间。使用批处理vLLM支持连续批处理能显著提高GPU利用率和吞吐量。在API服务器配置中调整max_num_batched_tokens等参数。硬件选择对于7B模型RTX 4060 Ti 16G是性价比之选。对于14B/32B模型建议使用RTX 4090 24G或专业卡如A100。纯CPU推理优先考虑大内存和高主频CPU。预热模型在服务启动后先发送一些预热请求让模型加载到GPU显存中避免第一次请求延迟过高。通过以上步骤你应该能够成功地在本地部署并定制一个Qwen小模型并将其应用于实际场景中。从快速验证的Ollama到高效生产的vLLM再到针对特定任务的LoRA微调这条路径平衡了易用性、灵活性和性能是小模型主导的实际应用落地的典型实践。
返回列表