ARTICLE DETAIL

资讯详情

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

腾讯科恩实验室 一面 三

腾讯科恩实验室 一面 三 一、主流 LLM 开发框架对比围绕“开发—部署—应用”三个层次几款主流框架的定位如下框架定位核心优势适用场景Ollama本地轻量化部署一键加载、内置Web UI、极简上手个人本地实验、快速原型验证vLLM高性能推理PagedAttention、超高并发吞吐生产级 API 服务、高并发场景OpenLLM灵活多模型部署开源可定制、支持混合部署深度定制化LLM部署Hugging Face Transformers全生态基础框架模型丰富、社区强大、接口灵活学术研究、快速原型Dify应用开发平台工具集成、可视化编排应用开发者、快速构建LLM应用Coze扣子零代码平台可视化搭建、跨平台发布无代码基础、业务人员搭建 AI 应用Ollama本地部署与轻量化框架。极简的本地部署方案一键加载模型并集成友好的 Web 界面是个人用户做快速原型验证和本地实验的首选。vLLM高性能推理框架。基于革新性的 PagedAttention 架构在超高并发场景下实现吞吐量倍增与显存优化适合千亿级参数模型的规模化部署。OpenLLM灵活部署与多模型支持框架。开源且高度可定制广泛支持各类模型架构与混合部署模式适合需要深度定制的场景。Hugging Face Transformers生态最完善的基础框架。模型资源极其丰富、社区支持强大广泛用于学术研究与快速原型部署方式灵活。Dify开发者友好型框架。集成多种工具为快速构建和部署 LLM 应用提供极大便利适合应用开发者与快速原型设计。Coze扣子零代码创新开发平台。无需编程即可通过可视化界面构建智能对话、图像生成等 AI 应用并支持一键发布到微信、钉钉等生态打通业务系统。二、Qwen 系列模型部署实战以阿里通义千问Qwen系列模型如 Qwen-7B-Chat、Qwen-14B-Chat、Qwen-72B-Chat为例部署需要结合硬件资源、业务流量与性能需求选择方案。下面给出本地原生部署、高并发 vLLM 部署、Docker 快速部署TGI与量化轻量化部署四种方案覆盖从开发测试到生产级服务的全场景。2.1 部署前准备硬件要求Qwen 的显存需求与模型规模、量化方式强相关模型规模原生FP16部署4bit量化部署8bit量化部署Qwen-7B-Chat≥16GB显存≥8GB显存≥12GB显存Qwen-14B-Chat≥32GB 显存≥12GB 显存≥20GB 显存Qwen-72B-Chat≥192GB显存多卡≥40GB显存多卡≥80GB显存多卡推荐 GPUNVIDIA T4 / V100 / A10 / A100 / H100需支持 CUDA算力 ≥ 7.5若无 GPU可用 CPU 部署仅测试推理速度极慢。软件环境配置步骤 1安装 CUDA 和 cuDNN推荐 CUDA 11.7 / 12.0cuDNN 8.8需与 CUDA 版本匹配验证安装nvcc -V。步骤 2创建 Python 虚拟环境conda create -n qwen-deploy python3.10conda activate qwen-deploy步骤 3安装核心依赖#基础依赖原生部署/量化部署pip install torch2.1.0 torchvision0.16.0 torchaudio2.1.0 #建议按CUDA版本从PyTorch官网获取对应安装命令pip install transformers4.37.2 datasets accelerate sentencepiece protobuf#量化依赖4/8bit量化pip install bitsandbytes0.41.1# vLLM部署依赖高并发pip install vllm0.2.7# TGI部署依赖Docker使用镜像无需手动安装下载 Qwen 模型模型可从 Hugging Face Hub 直接下载推荐使用 huggingface-hub 工具国内用户建议配置 HF 镜像export HF_ENDPOINT镜像地址如官方镜像 hf-mirror.com。2.2 方案一Transformers 原生部署适合测试 / 小流量基于 Hugging Face Transformers 框架适合开发调试与低流量场景能直观控制推理流程**重点需遵循 Qwen 的对话模板**否则生成效果会异常。核心代码Qwen-7B-Chat 对话推理创建 qwen_transformers_deploy.pyfrom transformers import AutoModelForCausalLM, AutoTokenizerimport torch# 1.加载模型和Tokenizermodel_path ./models/qwen-7b-chattokenizer AutoTokenizer.from_pretrained(model_path, trust_remote_codeTrue)model AutoModelForCausalLM.from_pretrained(model_path,trust_remote_codeTrue,torch_dtypetorch.float16, # FP16推理节省显存device_mapauto #自动分配模型到GPU/CPU)# 2.构建Qwen对话模板必须遵循否则生成混乱def build_qwen_prompt(messages):messages格式[{role: user, content: 问题}, {role: assistant, content: 回答}, ...]prompt tokenizer.apply_chat_template(messages,tokenizeFalse,add_generation_promptTrue #追加生成提示符让模型继续回答)return prompt# 3.推理函数def generate_response(messages, temperature0.7, top_p0.9):prompt build_qwen_prompt(messages)inputs tokenizer([prompt], return_tensorspt).to(model.device)outputs model.generate(**inputs,max_new_tokens512, #生成最大长度temperaturetemperature, #随机性top_ptop_p,do_sampleTrue, #采样生成非贪心repetition_penalty1.1, #重复惩罚eos_token_idtokenizer.eos_token_id)response tokenizer.decode(outputs[0][len(inputs[input_ids][0]):], skip_special_tokensTrue)return response# 4.测试对话if __name__ __main__:messages [{role: user, content: 介绍一下通义千问}]response generate_response(messages)print(助手回答, response)#多轮对话示例messages.append({role: assistant, content: response})messages.append({role: user, content: 它和GPT有什么区别})response2 generate_response(messages)print(助手回答, response2)**运行与测试**python qwen_transformers_deploy.py输出示例助手回答通义千问是阿里巴巴达摩院研发的大语言模型...助手回答通义千问与GPT的区别主要体现在训练数据、技术路线、应用场景等方面...2.3 方案二vLLM 高并发部署生产级推荐vLLM 是当前 LLM 推理性能最优的框架之一基于 PagedAttention 优化 KV Cache吞吐量比原生 Transformers 高 10~20 倍适合高并发的 API 服务场景。启动 vLLM OpenAI 兼容服务python -m vllm.entrypoints.openai.api_server \--model ./models/qwen-7b-chat \--trust-remote-code \--dtype float16 \--port 8000 \--host 0.0.0.0 \--max-num-batched-tokens 4096 #批处理最大token数根据显存调整--dtype量化方式可选 float16 / bfloat16 / auto--gpu-memory-utilization 0.9显存利用率默认 0.9若为 14B / 72B 模型需加 --tensor-parallel-size 2多卡张量并行按 GPU 数量调整。测试 API 服务vLLM 启动后提供 OpenAI 兼容的 /v1/chat/completions 接口可通过 curl 或 Python 调用。方式 1curl 调用curl http://localhost:8000/v1/chat/completions \-H Content-Type: application/json \-d {model: Qwen-7B-Chat,messages: [{role: user, content: 如何学习LLM部署}],temperature: 0.7,max_tokens: 512}方式 2Python 调用OpenAI SDKfrom openai import OpenAI#配置vLLM服务地址client OpenAI(base_urlhttp://localhost:8000/v1,api_keydummy_key # vLLM无需真实key填任意值即可)completion client.chat.completions.create(modelQwen-7B-Chat,messages[{role: user, content: 如何学习LLM部署}],temperature0.7,max_tokens512)print(completion.choices[0].message.content)性能优势单卡 A1024GB部署 Qwen-7B-ChatvLLM 可支持 **50 并发请求**延迟控制在 100ms 以内原生 Transformers 仅支持 5~10 并发延迟超 500ms。2.4 方案三TGI Docker 快速部署开箱即用Hugging Face 的 Text Generation InferenceTGI 提供 Docker 镜像无需手动配置环境一键部署 Qwen 模型适合快速原型验证与中小流量服务。启动 TGI 容器docker run -d \--gpus all \-p 8080:8080 \-v ./models/qwen-7b-chat:/data \-e MODEL_ID/data \-e TRUST_REMOTE_CODEtrue \-e MAX_BATCH_SIZE32 \ghcr.io/huggingface/text-generation-inference:1.4 \--dtype float16 \--port 8080--gpus all使用所有 GPU-v将本地模型目录挂载到容器内MAX_BATCH_SIZE最大批处理数按显存调整若需量化添加 --quantize bitsandbytes-nf4NF4 量化。测试 TGI 服务TGI 提供 /generate 与 /chat/completions 接口示例调用import requestsAPI_URL http://localhost:8080/v1/chat/completionsheaders {Content-Type: application/json}data {model: Qwen-7B-Chat,messages: [{role: user, content: 用Python写一个快速排序}],temperature: 0.7,max_tokens: 512}response requests.post(API_URL, headersheaders, jsondata)print(response.json()[choices][0][message][content])2.5 方案四量化轻量化部署显存不足场景若 GPU 显存不足如单卡 8GB 部署 Qwen-7B-Chat可通过 4bit / 8bit 量化减少显存占用牺牲少量精度换取部署可行性。4bit 量化原生部署修改方案一的代码添加 load_in_4bit 配置from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig#配置4bit量化bnb_config BitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_use_double_quantTrue, #双量化进一步节省显存bnb_4bit_quant_typenf4, # NF4量化类型适合LLMbnb_4bit_compute_dtypetorch.float16)#加载量化模型model AutoModelForCausalLM.from_pretrained(./models/qwen-7b-chat,trust_remote_codeTrue,quantization_configbnb_config,device_mapauto)8GB 显存的 GPU如 RTX 3070可流畅运行 4bit 量化的 Qwen-7B-Chat。vLLM 量化部署vLLM 支持 GPTQ 量化的 Qwen 模型需先下载 GPTQ 量化版如 Qwen/Qwen-7B-Chat-GPTQ再启动服务python -m vllm.entrypoints.openai.api_server \--model ./models/qwen-7b-chat-gptq \--trust-remote-code \--quantization gptq \--port 80002.6 部署调优与常见问题推理性能调优**调整批处理参数**vLLM / TGI 的 max-num-batched-tokens / MAX_BATCH_SIZE 越大吞吐量越高需匹配显存**KV Cache 优化**vLLM 默认开启 PagedAttention无需手动配置原生部署可通过 cache_implementationstatic 减少显存碎片*推理参数调优事实性任务设 temperature0.5创意任务设 temperature1.0避免重复设 repetition_penalty1.1~1.3。常见问题报错 Trust remote code is required需添加 trust_remote_codeTrueQwen 使用自定义代码显存溢出OOM降低 max_new_tokens、开启量化、增加 tensor-parallel-size多卡生成内容混乱未遵循 Qwen 的对话模板需使用 tokenizer.apply_chat_template 构建 prompt国内下载模型慢配置 HF 镜像 export HF_ENDPOINT镜像地址。2.7 生产级部署补充建议服务封装用 FastAPI / Flask 封装 vLLM / TGI 接口添加鉴权、限流、日志负载均衡多实例部署时用 Nginx 做负载均衡监控告警通过 Prometheus Grafana 监控 GPU 利用率、推理延迟、并发数模型更新采用蓝绿部署避免服务中断。三、总结以上是 Qwen 系列模型的核心部署方案可根据业务场景测试 / 生产、低并发 / 高并发、显存充足 / 不足灵活选择。如果需要针对 Qwen-72B 的多卡分布式部署或端侧部署MLC-LLM的细节欢迎在评论区交流。
返回列表