vllm + litellm + langfuse 启动、代理、监控大模型(国内仓库)

前言

vllm 启动大模型默认从https://huggingface.co/ 下载大模型,如果不能上外网则启动不成功,因次本文介绍如何使用国内大模型启动。

说明

本文使用 阿里魔塔 的大模型仓库。

部署大模型 (不使用 --served-model-name 参数)

阿里魔塔托管的Qwen2.5-0.5B-Instruct 为例

1. 使用 modelscope-cli 下载

安装 modelscope-cli 工具

pip install modelscope

创建模型存储目录

mkdir  -p /models/Qwen2.5-0.5B-Instruct

设置模型存储目录环境变量

export model_dir=/models/Qwen2.5-0.5B-Instruct

下载大模型到本地目录

modelscope download --model="Qwen/Qwen2.5-0.5B-Instruct" --local_dir $model_dir

下载完成后的目录结构

ls -l  /model/Qwen2.5-0.5B-Instruct/
total 976196
-rw-r--r-- 1 root root     11343 Mar 20 07:39 LICENSE
-rw-r--r-- 1 root root      4917 Mar 20 07:39 README.md
-rw-r--r-- 1 root root       659 Mar 20 07:39 config.json
-rw-r--r-- 1 root root         2 Mar 20 07:39 configuration.json
-rw-r--r-- 1 root root       242 Mar 20 07:39 generation_config.json
-rw-r--r-- 1 root root   1671839 Mar 20 07:39 merges.txt
-rw-r--r-- 1 root root 988097824 Mar 20 07:39 model.safetensors
-rw-r--r-- 1 root root   7031645 Mar 20 07:39 tokenizer.json
-rw-r--r-- 1 root root      7305 Mar 20 07:39 tokenizer_config.json
-rw-r--r-- 1 root root   2776833 Mar 20 07:39 vocab.json

2. 使用 VLLM 加载本地模型

vllm serve $model_dir \
    --trust-remote-code \
    --max_num_batched_tokens 1024 \
    --max_model_len 1024 \
    --dtype=half \
    --gpu_memory_utilization=0.95 \
    --port 8080

vllm 启动参数解释

modelscope://qwen/Qwen-7B: 指定从阿里 ModelScope 下载 Qwen-7B 模型(不支持)
/models/Qwen-7B 指定从本地目录 /models/Qwen-7B 加载大模型(提前下载好)
–trust-remote-code: 允许从 ModelScope 加载自定义代码(Qwen 需要
–enable-chunked-prefill: 优化大 batch 处理,减少显存占用
–max_num_batched_tokens 1024: 限制批处理的最大 token 数
–max_model_len 1024: 模型最大输入长度
–dtype=half: 使用 FP16 进行推理,减少显存占用
–gpu_memory_utilization=0.95: 最大化 GPU 显存利用率
–port 8080: VLLM API 监听端口

启动输出

INFO 03-20 07:42:12 __init__.py:190] Automatically detected platform cuda.
INFO 03-20 07:42:13 api_server.py:840] vLLM API server version 0.7.2
INFO 03-20 07:42:13 api_server.py:841] args: Namespace(subparser='serve', model_tag='/model/Qwen2.5-0.5B-Instruct', config='', host=None, port=8080, uvicorn_log_level='info', allow_credentials=False, allowed_origins=['*'], allowed_methods=['*'], allowed_headers=['*'], api_key=None, lora_modules=None, prompt_adapters=None, chat_template=None, chat_template_content_format='auto', response_role='assistant', ssl_keyfile=None, ssl_certfile=None, ssl_ca_certs=None, ssl_cert_reqs=0, root_path=None, middleware=[], return_tokens_as_token_ids=False, disable_frontend_multiprocessing=False, enable_request_id_headers=False, enable_auto_tool_choice=False, enable_reasoning=False, reasoning_parser=None, tool_call_parser=None, tool_parser_plugin='', model='/model/Qwen2.5-0.5B-Instruct', task='auto', tokenizer=None, skip_tokenizer_init=False, revision=None, code_revision=None, tokenizer_revision=None, tokenizer_mode='auto', trust_remote_code=True, allowed_local_media_path=None, download_dir=None, load_format='auto', config_format=<ConfigFormat.AUTO: 'auto'>, dtype='half', kv_cache_dtype='auto', max_model_len=1024, guided_decoding_backend='xgrammar', logits_processor_pattern=None, model_impl='auto', distributed_executor_backend=None, pipeline_parallel_size=1, tensor_parallel_size=1, max_parallel_loading_workers=None, ray_workers_use_nsight=False, block_size=None, enable_prefix_caching=None, disable_sliding_window=False, use_v2_block_manager=True, num_lookahead_slots=0, seed=0, swap_space=4, cpu_offload_gb=0, gpu_memory_utilization=0.95, num_gpu_blocks_override=None, max_num_batched_tokens=1024, max_num_seqs=None, max_logprobs=20, disable_log_stats=False, quantization=None, rope_scaling=None, rope_theta=None, hf_overrides=None, enforce_eager=False, max_seq_len_to_capture=8192, disable_custom_all_reduce=False, tokenizer_pool_size=0, tokenizer_pool_type='ray', tokenizer_pool_extra_config=None, limit_mm_per_prompt=None, mm_processor_kwargs=None, disable_mm_preprocessor_cache=False, enable_lora=False, enable_lora_bias=False, max_loras=1, max_lora_rank=16, lora_extra_vocab_size=256, lora_dtype='auto', long_lora_scaling_factors=None, max_cpu_loras=None, fully_sharded_loras=False, enable_prompt_adapter=False, max_prompt_adapters=1, max_prompt_adapter_token=0, device='auto', num_scheduler_steps=1, multi_step_stream_outputs=True, scheduler_delay_factor=0.0, enable_chunked_prefill=None, speculative_model=None, speculative_model_quantization=None, num_speculative_tokens=None, speculative_disable_mqa_scorer=False, speculative_draft_tensor_parallel_size=None, speculative_max_model_len=None, speculative_disable_by_batch_size=None, ngram_prompt_lookup_max=None, ngram_prompt_lookup_min=None, spec_decoding_acceptance_method='rejection_sampler', typical_acceptance_sampler_posterior_threshold=None, typical_acceptance_sampler_posterior_alpha=None, disable_logprobs_during_spec_decoding=None, model_loader_extra_config=None, ignore_patterns=[], preemption_mode=None, served_model_name=None, qlora_adapter_name_or_path=
<think>好的,我现在需要帮助用户了解vLLM与RAGFlow的集成方法或相关信息。首先,我应该确认自己对这两个工具的理解是否正确。 vLLM是一个专注于高效推理和服务大规模语言模型的开源库,特别优化了吞吐量和内存管理,适合高并发场景。而RAGFlow是一个结合检索增强生成(RAG)的工作流框架,用于构建基于文档检索的智能问答系统。用户可能希望将两者结合,利用vLLM的高效推理能力来提升RAGFlow的性能。 接下来,我需要考虑它们可能的集成方式。通常,集成不同的工具可以通过API调用、模型替换或工作流嵌入来实现。例如,RAGFlow在处理生成部分时,可能默认使用某个LLM,用户可能希望用vLLM替换原有的模型,以提高生成速度。这需要检查RAGFlow是否支持自定义模型加载,或者是否有扩展接口。 另外,API集成也是一种常见方法。如果vLLM部署为独立的服务,提供API端点,RAGFlow可以通过HTTP请求调用vLLM的推理服务。需要确认vLLM是否支持RESTful或gRPC接口,以及如何在RAGFlow中配置外部模型API。 资源方面,我应该查找官方文档或社区讨论是否有现有的集成案例。比如,RAGFlow的文档中是否有提及vLLM,或者vLLM的示例是否包含与RAG框架的结合使用。用户提到的参考引用是关于Kettle的数据集成工具,这可能不相关,但需要确保不引用无关内容。 可能还需要考虑性能优化点,比如vLLM的批处理能力和内存优化如何与RAGFlow的检索步骤协同工作,减少整体延迟。此外,两者的版本兼容性、依赖库是否冲突也是需要注意的问题。 最后,用户可能需要具体的步骤或示例代码,但由于信息有限,可能需要建议他们查阅各自的文档,或者提供一般性的集成方法,如修改配置文件和API调用示例。同时,生成相关问题帮助用户深入探索,比如询问优化方法、部署配置或性能对比等。</think>### vLLM与RAGFlow集成方法 #### 1. **vLLM与RAGFlow的核心功能** - **vLLM**:专注于大规模语言模型(LLM)的高效推理与服务,通过内存优化和动态批处理提升吞吐量[^1]。 - **RAGFlow**:基于检索增强生成(RAG)的框架,用于构建结合文档检索与文本生成的智能问答系统。 #### 2. **集成场景分析** - **目标**:将vLLM作为RAGFlow的推理引擎,替代默认LLM(如Hugging Face模型),以提升生成速度与并发能力。 - **关键步骤**: 1. **模型部署**:将vLLM部署为独立服务(如通过其REST API或gRPC接口)。 2. **接口调用**:在RAGFlow中修改生成模块的调用逻辑,指向vLLM服务。 3. **数据格式对齐**:确保输入输出与RAGFlow的文档检索结果兼容。 #### 3. **具体实现示例** - **vLLM服务启动**: ```bash # 启动vLLM服务(假设使用LLAMA2模型) python -m vllm.entrypoints.api_server --model meta-llama/Llama-2-7b-chat-hf --port 8000 ``` - **RAGFlow调用适配**: ```python # 替换原有生成代码,调用vLLM API import requests def generate_with_vllm(prompt): response = requests.post( "http://localhost:8000/generate", json={"prompt": prompt, "max_tokens": 200} ) return response.json()["text"] ``` #### 4. **性能优化建议** - **批处理**:利用vLLM的动态批处理特性,将多个检索结果合并为单次推理请求。 - **缓存机制**:对频繁检索的文档片段缓存生成结果,减少重复计算。 - **硬件协同**:为vLLM配置GPU集群,同时为RAGFlow的检索模块分配独立CPU资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空无限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值