构建企业私有RAG大模型: (可商用)Qwen2.5开源模型vLLM摆设及示例 ...

一给  金牌会员 | 2025-2-23 18:21:32 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 966|帖子 966|积分 2898

本章将继续探讨开源大模型的摆设。在 RAG 系统的架构中,大模型扮演着至关紧张的脚色,是整个流程的“末了一环”。知识库的构建、检索,以及知识的排序与整合,都是为了为大模型提供准确、完整的上下文知识。这种知识支持可以显著降低大模型生成过程中的幻觉问题(如生成不可靠或错误答案)。因此,大模型的生成能力直接决定了 RAG 系统的服务质量,特别是在为用户问题生成答案时,精准性与可靠性尤为关键。
现在可商用的开源大模型重要包罗:


  • GLM-4-9B-Chat
  • Qwen2.5-7B
  • DeepSeek-7B-Chat
DeepSeekV3 近期备受瞩目,其多项测试指标超越了其他开源模型,甚至在某些方面达到或高出部门闭源大模型的水平。V3 模型体量巨大,尽管 vLLM、SGLang 和 LMDeploy 等加速框架已支持其摆设,但仍有很多优化空间。此外,摆设所需的 GPU 资源极为庞大,对企业硬件条件提出了较高要求。因此,我们计划在未来合适的时间分享其详细的摆设实践与优化策略。
本篇重要先容阿里Qwen2.5-7B模型的vLLM的摆设与示例。
Qwen2.5先容

Qwen2.5是Qwen眷属的新成员,发布已经几个月了,具有以下特点:


  • 密集、易于利用、仅解码器的语言模型,有0.5B1.5B3B7B14B32B72B巨细以及基本和指示变体。
  • 在我们最新的大规模数据集上进行预训练,涵盖多达18T 个标志。
  • 在指令跟踪、生成长文本(高出 8K 个标志)、明白结构化数据(例如表格)以及生成结构化输出(尤其是 JSON)方面有显著改进。
  • 更能适应系统提示的多样性,加强聊天机器人的脚色扮演实现和条件设定。
  • 上下文长度最多支持128K个token,最多可生成8K个token。
  • 支持高出29种语言,包罗中文、英语、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语等。
vLLM先容

接下来,将详细先容如何通过 vLLM 摆设 Qwen2.5 的详细步骤,以及在vLLM加速下验证聊天接口。
硬件与环境设置发起
企业可根据本钱和业务需求选择硬件设备,以下是推荐设置:

  • GPU发起


  • 发起利用 NVIDIA 3090 或 4090 显卡。
  • 若仅用于功能验证,一块 GPU 即可满足需求;实际摆设可根据业务规模决定 GPU 数量。

  • 操作系统


  • Ubuntu 20.04 或更高版本。

  • CUDA版本


  • 需安装 CUDA 12.1 或更高版本。

  • 深度学习框架


  • PyTorch 2.1.0 或更高版本。

  • Python版本


  • 利用 Python 3.10 或更高版本(推荐利用 Conda 环境管理工具)。
确保环境与硬件兼容,是大模型高效运行的关键。
  1. vLLM的安装
复制代码
  1. 执行以下命令:conda的创建及依赖的安装
复制代码
  1. conda create -n vllm_qwen python=3.10``conda activate vllm_qwen``# 升级pip``python -m pip install --upgrade pip``pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple``   ``pip install vllm``pip install modelscope[framework]
复制代码
  1. 直接安装 vLLM,默认会安装 支持CUDA 12.1及以上版本的vLLM,
复制代码
如果我们需要在 CUDA 11.8 的环境下安装 vLLM,指定 vLLM 版本和 python 版本下载安装。
模型的下载
模型的下载可以利用以下两种方式:


  • 利用ModelScope下载,执行以下下令,将模型下载到/qwen目次下。
  1. git clone https://www.modelscope.cn/Qwen/Qwen2.5-7B-Instruct.git
复制代码


  • 利用HF国内的镜像下载,执行以下下令,将模型下载到/qwen目次下。
  1. git clone https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct
复制代码
下载完成后可以看到目次结构如下:
  1. qwen/Qwen2.5-7B-Instruct/``|-- LICENSE``|-- README.md``|-- config.json``|-- configuration.json``|-- generation_config.json``|-- merges.txt``|-- model-00001-of-00004.safetensors``|-- model-00002-of-00004.safetensors``|-- model-00003-of-00004.safetensors``|-- model-00004-of-00004.safetensors``|-- model.safetensors.index.json``|-- tokenizer.json``|-- tokenizer_config.json````-- vocab.json `
复制代码
代码准备
简单示例Python文件

在/qwen目次下创建vllm-run.py,创建完目次结构如下:
  1. /qwen/``|-- Qwen2.5-7B-Instruct``|   |-- LICENSE``|   |-- README.md``|   |-- config.json``|   |-- configuration.json``|   |-- generation_config.json``|   |-- merges.txt``|   |-- model-00001-of-00004.safetensors``|   |-- model-00002-of-00004.safetensors``|   |-- model-00003-of-00004.safetensors``|   |-- model-00004-of-00004.safetensors``|   |-- model.safetensors.index.json``|   |-- tokenizer.json``|   |-- tokenizer_config.json```|   `-- vocab.json`````-- vllm_run.py `
复制代码
vllm_run代码如下,通过示例代码可以快速熟悉 vLLM 引擎的利用方式。
  1. from transformers import AutoTokenizer``from vllm import LLM, SamplingParams``   ``max_model_len, tp_size = 2048, 1``model_name = "./Qwen2.5-7B-Instruct"``prompt = [{"role": "user", "content": "你好,讲讲你是谁?"}]``   ``tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)``llm = LLM(`    `model=model_name,`    `tensor_parallel_size=tp_size,`    `max_model_len=max_model_len,`    `trust_remote_code=True,`    `enforce_eager=True,`    `enable_chunked_prefill=True,`    `max_num_batched_tokens=2048``)``stop_token_ids = [151329, 151336, 151338]``sampling_params = SamplingParams(temperature=0.95, max_tokens=1024, stop_token_ids=stop_token_ids)``   ``inputs = tokenizer.apply_chat_template(prompt, tokenize=False, add_generation_prompt=True)``outputs = llm.generate(prompts=inputs, sampling_params=sampling_params)``   ``print(outputs[0].outputs[0].text)
复制代码
执行以下下令:
  1. # export CUDA_VISIBLE_DEVICES=3 ,如果不指定卡号,默认使用0卡``python vllm-run.py
复制代码
执行结果:
  1. INFO 01-11 04:21:12 model_runner.py:1099] Loading model weights took 14.2487 GB``INFO 01-11 04:21:13 worker.py:241] Memory profiling takes 0.69 seconds``INFO 01-11 04:21:13 worker.py:241] the current vLLM instance can use total_gpu_memory (23.64GiB) x gpu_memory_utilization (0.90) = 21.28GiB``INFO 01-11 04:21:13 worker.py:241] model weights take 14.25GiB; non_torch_memory takes 0.12GiB; PyTorch activation peak memory takes 1.40GiB; the rest of the memory reserved for KV Cache is 5.51GiB.``INFO 01-11 04:21:13 gpu_executor.py:76] # GPU blocks: 6443, # CPU blocks: 4681``INFO 01-11 04:21:13 gpu_executor.py:80] Maximum concurrency for 2048 tokens per request: 50.34x``INFO 01-11 04:21:17 llm_engine.py:431] init engine (profile, create kv cache, warmup model) took 4.89 seconds``Processed prompts: 100%|█████████████████████████████████████████| 1/1 [00:00<00:00,  1.01it/s, est. speed input: 36.52 toks/s, output: 53.76 toks/s]``你好!我是Qwen,我是由阿里云开发的一种超大规模语言模型。我被设计用来回答问题、提供信息、参与对话,旨在帮助用户获得所需的知识和信息。如果你有任何问题或需要帮助,都可以尝试和我交流。``   
复制代码
构建与 OpenAI 兼容的 API 服务

利用 vLLM 来构建与 OpenAI 兼容的 API 服务,包罗工具利用支持。利用聊天模型启动服务器。
例如:在/qwen目次下执行以下下令:
  1. export CUDA_VISIBLE_DEVICES=3 //指定GPU默是0卡``vllm serve Qwen2.5-7B-Instruct
复制代码
通过 curl 下令查看当前API Server的模型列表。
  1. curl http://localhost:8000/v1/models
复制代码
查看结果如下:
  1. {`        `"object": "list",`        `"data": [{`                `"id": "Qwen2.5-7B-Instruct",`                `"object": "model",`                `"created": 1736570004,`                `"owned_by": "vllm",`                `"root": "Qwen2.5-7B-Instruct",`                `"parent": null,`                `"max_model_len": 32768,`                `"permission": [{`                        `"id": "modelperm-62acae496e714754b5d8866fff32f0cb",`                        `"object": "model_permission",`                        `"created": 1736570004,`                        `"allow_create_engine": false,`                        `"allow_sampling": true,`                        `"allow_logprobs": true,`                        `"allow_search_indices": false,`                        `"allow_view": true,`                        `"allow_fine_tuning": false,`                        `"organization": "*",`                        `"group": null,`                        `"is_blocking": false`                `}]`        `}]``}
复制代码
聊天对话接口,curl利用prompt调用
  1. curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{`    `"model": "Qwen2.5-7B-Instruct",`    `"messages": [`        `{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},`        `{"role": "user", "content": "告诉我一些关于大型语言模型的事情。"}`    `],`    `"temperature": 0.7,`    `"top_p": 0.8,`    `"repetition_penalty": 1.05,`    `"max_tokens": 512``}'
复制代码
查看结果如下:
  1. {`        `"id": "chatcmpl-c774bbba1c5c47579a77dec6ef87d987",`        `"object": "chat.completion",`        `"created": 1736570396,`        `"model": "Qwen2.5-7B-Instruct",`        `"choices": [{`                `"index": 0,`                `"message": {`                        `"role": "assistant",`                        `"content": "当然,我很乐意为您介绍一些关于大型语言模型的知识!\n\n大型语言模型是一种深度学习模型,它通过处理大量的文本数据来学习人类语言的结构和规律。这些模型通常包含数以亿计甚至更多参数,因此被称为“大型”。它们能够生成连贯的文本、回答问题、翻译语言、创作故事等多种任务。\n\n### 1. 应用领域\n\n- **自然语言处理**:包括机器翻译、情感分析、文本分类等。\n- **对话系统**:如智能客服、虚拟助手等。\n- **内容生成**:包括文章写作、故事创作、诗歌生成等。\n- **代码生成**:帮助编程人员生成代码片段或完成代码补全。\n- **教育辅助**:提供个性化学习建议和教学材料。\n\n### 2. 技术原理\n\n大型语言模型主要基于神经网络架构,如Transformer模型。这些模型通过训练大量文本数据来学习语言模式,并使用复杂的算法优化其性能。训练过程需要大量的计算资源和时间,但现代云计算技术使得这一过程变得可行。\n\n### 3. 挑战与限制\n\n尽管大型语言模型在许多方面表现出色,但也存在一些挑战和限制:\n\n- **偏见问题**:模型可能会反映出训练数据中的偏见。\n- **安全性问题**:不当使用可能导致隐私泄露或生成有害信息。\n- **能耗问题**:训练和运行这些模型消耗大量能源。\n- **解释性不足**:模型内部的工作机制难以完全理解或解释。\n\n### 4. 发展趋势\n\n随着技术的进步,研究人员正在努力改进大型语言模型,使其更加高效、安全和可靠。这包括开发新的训练方法、优化模型结构以及增强对模型输出的控制能力。\n\n希望这些信息能帮助您更好地了解大型语言模型!如果您有任何具体的问题或需要更详细的信息,请随时告诉我。",`                        `"tool_calls": []`                `},`                `"logprobs": null,`                `"finish_reason": "stop",`                `"stop_reason": null`        `}],`        `"usage": {`                `"prompt_tokens": 37,`                `"total_tokens": 424,`                `"completion_tokens": 387,`                `"prompt_tokens_details": null`        `},`        `"prompt_logprobs": null``}
复制代码
利用vLLM加速后模型的性能如下:

图片泉源于网络
从这个性能对比中可以看到,vllm加速的能力相称可以,基本可以提升30%多。
写在末了
开源模型在应对 RAG 生成任务时表现不错,单卡 4090 足以支持单企业的多人并发 RAG 问答需求。如果业务量较大,可以采用多 GPU 摆设,并联合 vLLM 提供的 Nginx 方案实现高效负载平衡。
然而,现在开源模型在知识图谱辨认能力上仍有局限。对于 RAG 系统中知识图谱的建建功能,发起引入各大模型厂商的 API 服务进行调用,如许可以或许显著提升效果,确保数据更精准地满足业务需求。
紧张说明:这些开源大模型还可以支持企业内部各种应用的接入,Qwen2.5典型的应用包罗:客服聊天、文案生成、ppt文案生成等。
零底子如何学习AI大模型

领取方式在文末
为什么要学习大模型?

学习大模型课程的紧张性在于它可以或许极大地促进个人在人工智能范畴的专业发展。大模型技术,如自然语言处理和图像辨认,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以把握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增长,把握这一技术将有助于提高就业竞争力,并为未来的创新创业提供结实的底子。
大模型典型应用场景

AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
AI+金融:智能投顾和风险管理系统资助投资者做出更明智的决策,并实时监控金融市场,辨认潜在风险。
AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备猜测性维护,减少停机时间。

这些案例表明,学习大模型课程不仅可以或许提升个人技能,还能为企业带来实际效益,推动行业创新发展。
学习资料领取

如果你对大模型感兴趣,可以看看我整合而且整理成了一份AI大模型资料包,需要的小同伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给各人发


部门资料展示

一、 AI大模型学习路线图

整个学习分为7个阶段


二、AI大模型实战案例

涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研职员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。



三、视频和册本PDF合集

从入门到进阶这里都有,跟着老师学习事半功倍。



四、LLM口试题



五、AI产物经理口试题


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表