ARTICLE DETAIL

资讯详情

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

DB-GPT 接入 vLLM:在 NVIDIA GPU 上实现高吞吐本地模型推理的完整配置指南

DB-GPT 接入 vLLM:在 NVIDIA GPU 上实现高吞吐本地模型推理的完整配置指南 DB-GPT 接入 vLLM在 NVIDIA GPU 上实现高吞吐本地模型推理的完整配置指南【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT本指南以 DB-GPT 开源仓库中的官方文档docs/docs/getting-started/providers/vllm.md为主体系统讲解如何让 DB-GPT 使用 vLLM 在 NVIDIA GPU 上完成高吞吐的本地 LLM 推理。读完本文你将掌握从依赖安装、配置文件编写、模型下载到服务启动与故障排查的完整流程并能基于源码理解 DB-GPT 与 vLLM 引擎的底层对接原理从而根据显存与业务场景灵活调优。前置条件在开始之前请确认你的环境满足以下条件NVIDIA GPU需支持 CUDA 12.1 及以上版本对应依赖安装中的cuda121扩展。足够的显存VRAM以 7B 参数量模型为例通常至少需要 8 GB 显存不同规模模型的具体需求可参考下文「常见模型选择」。已安装带vllm扩展的 DB-GPTvLLM 是 DB-GPT 的可选依赖需要显式安装见下一节。安装依赖通过 uv 安装 vLLM 扩展vLLM 在 DB-GPT 中属于可选依赖官方推荐使用uv工具一次性同步全部所需扩展。执行以下命令uv sync --all-packages \ --extra base \ --extra hf \ --extra cuda121 \ --extra vllm \ --extra rag \ --extra storage_chromadb \ --extra quant_bnb \ --extra dbgpts各扩展的作用可以从 packages/dbgpt-accelerator/dbgpt-acc-auto/pyproject.toml 的依赖声明中得到印证扩展名作用源码依据extra 定义base核心基础依赖torch、torchvision、torchaudio 等dependencies段hfHugging Face Transformers 相关依赖hfextracuda121CUDA 12.1 版本的 torch 系列依赖cuda121 [torch2.2.1; ...]vllmvLLM 推理引擎本体vllm [vllm0.7.0; sys_platform linux]rag检索增强生成相关能力ragextrastorage_chromadbChromaDB 向量存储默认 RAG 存储storage_chromadbextraquant_bnbbitsandbytes 量化能力quant_bnb [bitsandbytes0.39.0; ..., accelerate]dbgptsDB-GPT 智能体插件dbgpts体系dbgptsextra需要特别说明的是vLLM 的 extra 依赖声明为vllm0.7.0; sys_platform linux即当前仓库中 vLLM 仅在 Linux 平台提供 GPU 版本支持Windows 与 macOS 无法通过该 extra 安装。此外DB-GPT 为没有受支持 GPU 的老显卡如 Pascal 架构预留了注释状态的vllm-pascal依赖项说明其 GPU 支持策略与 vLLM 官方保持一致。配置 vLLM 模型编辑本地配置文件DB-GPT 为 vLLM 场景内置了可直接使用的示例配置 configs/dbgpt-local-vllm.toml。该文件完整展示了系统、服务、向量存储与模型配置其中核心的模型配置段如下# Model Configurations [models] [[models.llms]] name DeepSeek-R1-Distill-Qwen-1.5B provider vllm # If not provided, the model will be downloaded from the Hugging Face model hub # uncomment the following line to specify the model path in the local file system # path the-model-path-in-the-local-file-system path models/DeepSeek-R1-Distill-Qwen-1.5B # dtype float32 [[models.embeddings]] name BAAI/bge-large-zh-v1.5 provider hf # If not provided, the model will be downloaded from the Hugging Face model hub # uncomment the following line to specify the model path in the local file system # path the-model-path-in-the-local-file-system path /data/models/bge-large-zh-v1.5配置要点如下provider vllm是接入 vLLM 的关键开关。在 DB-GPT 的模型类型枚举 packages/dbgpt-core/src/dbgpt/model/base.py 中ModelType.VLLM vllm与HF、LLAMA_CPP、PROXY等并列模型适配器 vllm_adapter.py 通过match()方法检查provider ModelType.VLLM来命中 vLLM 适配器。name为模型名称。若同时不指定pathDB-GPT 会自动从 Hugging Face Hub 下载该名称对应的模型。path为本地模型路径。配置文件中同时给出了注释示例与真实示例两种写法——仓库内置的示例配置默认使用本地路径如models/DeepSeek-R1-Distill-Qwen-1.5B将其注释掉则会回退为从 Hub 自动下载。dtype被注释为float32表示默认采用 vLLM 的auto策略FP16/BF16 自动判定如需强制单精度可取消注释详见下文参数详解。嵌入模型除 LLM 外还需配置一个provider hf的嵌入模型示例为BAAI/bge-large-zh-v1.5用于 RAG 知识库的向量化。示例路径/data/models/bge-large-zh-v1.5与models/...均需按你的实际下载目录修改。同目录下的其他示例配置如 configs/dbgpt-local-glm.toml、configs/dbgpt-local-qwen.toml结构与此一致区别仅在于模型名与路径。模型下载说明如果不指定path模型将从 HuggingFace Hub 自动下载。对于大模型官方建议提前下载到本地避免首次启动时长时间等待# 使用 huggingface-cli 预下载 huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local-dir models/DeepSeek-R1-Distill-Qwen-1.5B预下载后将配置中的path指向本地目录即可。若网络受限导致下载失败可配置 HuggingFace 镜像源见「故障排查」。vLLM 参数详解基于源码的调优参考vLLM 适配器的所有配置参数都定义在 VLLMDeployModelParameters 数据类中对应的参数说明文档位于 docs/docs/config-reference/llm/vllm_adapter_vllmdeploymodelparameters_1d4a24.mdx。这些参数既可写入 TOML 配置也可通过extras字段透传给 vLLM 引擎。以下是与显存和性能最相关的核心参数参数默认值说明调优建议dtypeauto权重与激活的数据类型auto对 FP32/FP16 模型用 FP16、对 BF16 模型用 BF16AWQ 量化模型推荐half追求精度与数值范围平衡可用bfloat16显存紧张时避免float32quantizationNone权重量化方法支持awq、gptq、marlin、bitsandbytes、fp8、gguf等二十余种显存不足时结合quant_bnb扩展启用量化gpu_memory_utilization0.90模型执行器可用的 GPU 显存比例0~1显存不足或需同卡多实例时可下调至 0.5tensor_parallel_size1张量并行副本数用于单机多卡切分大模型模型放不进单卡时按卡数增大pipeline_parallel_size1流水线并行阶段数通常保持默认max_model_lenNone模型上下文长度未指定时从模型配置自动推导依据业务最长输入显式设定可节省显存enable_prefix_cachingNone是否启用前缀缓存可显著加速多轮对话与系统提示词重复场景多轮对话场景建议开启swap_space4每 GPU 的 CPU 交换空间GiB用于显存溢出时的 KV cache 换出默认即可cpu_offload_gb0每 GPU 向 CPU 卸载的空间GiB可「虚拟扩容」显存如 24GB GPU 设 10 可近似视为 34GB依赖高速 CPU-GPU 互联谨慎使用block_sizeNoneToken 块大小CUDA 设备仅支持 8/16/32保持默认kv_cache_dtypeautoKV cache 数据类型CUDA 11.8 支持fp8新架构显卡可尝试fp8省显存max_num_batched_tokens/max_num_seqsNone单次迭代的最大批处理 token 数与序列数吞吐调优时调整distributed_executor_backendNone分布式后端ray或mp多进程单机多卡默认自动选择mp跨机用raytrust_remote_codeTrue是否信任模型远程代码使用非标准架构模型时保持开启concurrency100DB-GPT 侧的模型并发上限按推理吞吐需求调整extrasNone额外参数字典原样透传给 vLLM 引擎vLLM 新增参数可从这里传入参数的底层传递机制从源码看to_vllm_params()方法vllm_adapter.py负责把上述参数转换为 vLLM 的AsyncEngineArgs字典若显式指定了path则以解析后的本地路径作为 vLLM 的model参数否则使用name会剔除provider、path、name、extras等 DB-GPT 内部字段保留其余字段直接映射到AsyncEngineArgsextras中的键值对最后合并进参数字典实现任意 vLLM 参数的透传。随后load_from_params() 使用AsyncEngineArgs(**params)构造AsyncLLMEngine并取出其 tokenizer从而完成引擎初始化。整个调用链可以概括为TOML 配置 →VLLMDeployModelParameters→AsyncEngineArgs→AsyncLLMEngine。深入理解DB-GPT 如何驱动 vLLM 生成vLLM 适配器的get_async_generate_stream_function()将流式生成函数指向 packages/dbgpt-core/src/dbgpt/model/llm/llm_out/vllm_llm.py 中的generate_stream()异步生成器其内部实现有几点值得关注采样参数映射将 DB-GPT 侧的temperature、top_p、top_k、presence_penalty、frequency_penalty、max_new_tokens等转换为 vLLM 的SamplingParams并自动追加eos_token_id与停止字符串到 stop 集合。推理模型reasoning model支持通过think_start_token/think_end_token默认_think与/_think识别深度思考模型如 DeepSeek-R1 系列的思考内容借助parse_chat_message()将思考过程与最终答案分离分别填充reasoning_content与content。性能监控与用量统计通过LLMPerformanceMonitor统计 prefill 阶段、每 token 生成耗时等指标并合并到usageprompt_tokens / completion_tokens / total_tokens中返回。Benchmark 模式当环境变量DB_GPT_MODEL_BENCHMARKtrue时会忽略停止条件并强制ignore_eosTrue用于固定长度生成的基准测试。这解释了官方文档中「首次请求较慢后续请求变快」的现象vLLM 在首次运行时会编译 CUDA kernel而 DB-GPT 侧还需要完成引擎启动与 tokenizer 加载这些一次性开销在服务预热后即不再重复。常见模型选择不同规模模型对显存的需求差异很大官方文档给出了四款代表性模型的参考选型模型显存需求说明DeepSeek-R1-Distill-Qwen-1.5B~4 GB小模型适合测试与验证流程GLM-4-9B-Chat~20 GB中英文能力都比较均衡Qwen2.5-7B-Instruct~16 GB综合平衡性好Qwen2.5-Coder-7B-Instruct~16 GB偏向代码生成场景以上显存为官方文档给出的参考值实际占用还受量化方式、上下文长度与并发数影响。若你的显存介于两级之间可通过前文参数表中的dtype、quantization、gpu_memory_utilization等手段进一步压缩占用。vLLM 支持模型的完整清单以其官方支持文档为准。启动 DB-GPT 服务配置完成后使用如下命令启动 Web 服务该命令会在启动时读取配置中的 vLLM 引擎并加载模型uv run dbgpt start webserver --config configs/dbgpt-local-vllm.toml指定 GPU若机器有多张 GPU可通过CUDA_VISIBLE_DEVICES环境变量指定使用哪一张CUDA_VISIBLE_DEVICES0 uv run dbgpt start webserver --config configs/dbgpt-local-vllm.toml将0替换为目标 GPU 的索引即可。多卡场景下还可配合tensor_parallel_size参数将模型切分到多张 GPU 上运行。CUDA_VISIBLE_DEVICES同样支持逗号分隔的多卡列表如0,1。故障排查官方文档归纳了四类高频问题的解决方案问题解决方法CUDA not found安装 CUDA 12.1并用nvidia-smi验证驱动与 CUDA 可用GPU 显存不足Out of GPU memory换用更小的模型或通过quant_bnb扩展启用 bitsandbytes 量化模型下载失败预先下载模型到本地见上文 huggingface-cli 用法或配置 HuggingFace 镜像源首次请求较慢vLLM 首次运行会编译 kernel属正常预热过程后续请求会明显加快此外从配置与源码角度还可补充两个排查点一是确认provider严格为vllm拼写错误会导致适配器无法匹配二是确认path指向的目录结构完整应包含权重文件与config.json否则 vLLM 在load_from_params阶段即会报错。下一步快速开始完整流程 —— 查看 DB-GPT 的完整首次运行步骤vLLM 进阶配置 —— 深入了解 vLLM 推理的进阶用法其他模型提供方 —— 对比并尝试其他模型提供方如本地 llama.cpp、代理 API 等【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表