当前位置: 首页 > news >正文

网站锚点链接怎么做怎么样推广最有效最快速

网站锚点链接怎么做,怎么样推广最有效最快速,温州网站建设培训,做网站怎么做GLMvLLM 部署调用 vLLM 简介 vLLM 框架是一个高效的大型语言模型(LLM)推理和部署服务系统,具备以下特性: 高效的内存管理:通过 PagedAttention 算法,vLLM 实现了对 KV 缓存的高效管理,减少了…

GLM+vLLM 部署调用

vLLM 简介

vLLM 框架是一个高效的大型语言模型(LLM)推理和部署服务系统,具备以下特性:

  • 高效的内存管理:通过 PagedAttention 算法,vLLM 实现了对 KV 缓存的高效管理,减少了内存浪费,优化了模型的运行效率。
  • 高吞吐量:vLLM 支持异步处理和连续批处理请求,显著提高了模型推理的吞吐量,加速了文本生成和处理速度。
  • 易用性:vLLM 与 HuggingFace 模型无缝集成,支持多种流行的大型语言模型,简化了模型部署和推理的过程。兼容 OpenAI 的 API 服务器。
  • 分布式推理:框架支持在多 GPU 环境中进行分布式推理,通过模型并行策略和高效的数据通信,提升了处理大型模型的能力。
  • 开源:vLLM 是开源的,拥有活跃的社区支持,便于开发者贡献和改进,共同推动技术发展。

环境准备

在 一个3090 显卡的ubuntu22.04系统上进行部署。

pip 换源加速下载并安装依赖包

# 升级pip
python -m pip install --upgrade pip
# 更换 pypi 源加速库的安装
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip install modelscope==1.11.0
pip install openai==1.17.1
pip install torch==2.1.2+cu121
pip install tqdm==4.64.1
pip install transformers==4.39.3
# 下载flash-attn 请等待大约10分钟左右~
MAX_JOBS=8 pip install flash-attn --no-build-isolation
pip install vllm==0.4.0.post1

直接安装 vLLM 会安装 CUDA 12.1 版本。

pip install vllm

如果需要在 CUDA 11.8 的环境下安装 vLLM,可以指定 vLLM 版本和 python 版本下载。

export VLLM_VERSION=0.4.0
export PYTHON_VERSION=38
pip install https://github.com/vllm-project/vllm/releases/download/v${VLLM_VERSION}/vllm-${VLLM_VERSION}+cu118-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu118

vLLM 对 torch 版本要求较高,且越高的版本对模型的支持更全,效果更好,所以新建一个全新的镜像。 https://www.codewithgpu.com/i/datawhalechina/self-llm/GLM-4

使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径。

在 /root/model 路径下新建 model_download.py 文件并在其中输入以下内容,粘贴代码后请及时保存文件,如下图所示。并运行 python /root/model/model_download.py 执行下载,模型大小为 14GB。

import torch 
from modelscope import snapshot_download, AutoModel, AutoTokenizer
osmodel_dir = snapshot_download('ZhipuAI/glm-4-9b-chat', cache_dir='/root/model', revision='master')

代码准备

python 文件

在 /root/model 路径下新建 vllm_model.py 文件并在其中输入以下内容,粘贴代码后请及时保存文件。下面的代码有很详细的注释,大家如有不理解的地方,欢迎提出 issue。

首先从 vLLM 库中导入 LLM 和 SamplingParams 类。LLM 类是使用 vLLM 引擎运行离线推理的主要类。SamplingParams 类指定采样过程的参数,用于控制和调整生成文本的随机性和多样性。

vLLM 提供了非常方便的封装,我们直接传入模型名称或模型路径即可,不必手动初始化模型和分词器。

我们可以通过这个 demo 熟悉下 vLLM 引擎的使用方式。被注释的部分内容可以丰富模型的能力,但不是必要的,大家可以按需选择。

from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
import os
import json# 自动下载模型时,指定使用modelscope。不设置的话,会从 huggingface 下载
# os.environ['VLLM_USE_MODELSCOPE']='True'def get_completion(prompts, model, tokenizer=None, max_tokens=512, temperature=0.8, top_p=0.95, max_model_len=2048):stop_token_ids = [151329, 151336, 151338]# 创建采样参数。temperature 控制生成文本的多样性,top_p 控制核心采样的概率sampling_params = SamplingParams(temperature=temperature, top_p=top_p, max_tokens=max_tokens, stop_token_ids=stop_token_ids)# 初始化 vLLM 推理引擎llm = LLM(model=model, tokenizer=tokenizer, max_model_len=max_model_len,trust_remote_code=True)outputs = llm.generate(prompts, sampling_params)return outputsif __name__ == "__main__":    # 初始化 vLLM 推理引擎model='/root/model/ZhipuAI/glm-4-9b-chat' # 指定模型路径# model="THUDM/glm-4-9b-chat" # 指定模型名称,自动下载模型tokenizer = None# tokenizer = AutoTokenizer.from_pretrained(model, use_fast=False) # 加载分词器后传入vLLM 模型,但不是必要的。# 修改后的文本内容text = ["请描述一下大型语言模型的最新进展。","提供一些提高编程技能的建议。"]outputs = get_completion(text, model, tokenizer=tokenizer, max_tokens=512, temperature=1, top_p=1, max_model_len=2048)# 输出是一个包含 prompt、生成文本和其他信息的 RequestOutput 对象列表。# 打印输出。for output in outputs:prompt = output.promptgenerated_text = output.outputs[0].textprint(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

结果如下:

Prompt: '给我介绍一下大型语言模型。', Generated text: '大型语言模型是自然语言处理领域的一项突破性技术,它们通过分析和理解大量文本数据,学习如何生成和理解自然语言。这些模型通常具有数十亿甚至数万亿的参数,能够处理和理解复杂的语言结构,包括语法、语义和上下文关系。大型语言模型在多个领域有广泛的应用,包括文本生成、机器翻译、情感分析、问答系统和聊天机器人等。它们能够生成连贯的文本,提供准确的翻译,理解用户的查询,并生成相关的回答。这些模型的训练需要大量的计算资源和海量的数据。随着技术的进步,模型的规模和性能都在不断提高,使得它们在自然语言处理任务中的表现越来越接近人类水平。然而,它们也面临着一些挑战,包括偏见、泛化和解释性问题。未来,大型语言模型可能会在更多领域发挥作用,包括教育、医疗和创意产业等。它们有望成为人们日常生活和工作中不可或缺的一部分,提供更加智能和便捷的语言交互体验。'

部署兼容 OpenAI API 的 vLLM 服务器

GLM4 模型与 OpenAI API 协议兼容,因此我们可以利用 vLLM 快速搭建一个符合 OpenAI API 标准的服务器。此服务器默认在 http://localhost:8000 上启动,并且一次只能服务一个模型。它支持模型列表查询、文本补全(completions)和对话补全(chat completions)等接口。

  • 文本补全(completions):适用于基础的文本生成任务,模型会在给定提示后生成文本。常用于撰写文章、故事、邮件等。
  • 对话补全(chat completions):专用于对话场景,模型需理解和生成对话内容。适用于开发聊天机器人或对话系统。
    在部署服务器时,我们可以自定义多种参数,如模型名称、路径、聊天模板等。
  • --host--port 用于指定服务器的地址和端口。
  • --model 指定模型的路径。
  • --chat-template 用于指定对话的模板。
  • --served-model-name 设置服务中模型的名称。
  • --max-model-len 限制模型的最大处理长度。
    由于 GLM4-9b-Chat 模型的最大长度较长(128K),为了避免 vLLM 初始化缓存时消耗过多资源,这里我们将 --max-model-len 设置为 2048。
python -m vllm.entrypoints.openai.api_server \--model /root/autodl-tmp/ZhipuAI/glm-4-9b-chat \--served-model-name glm-4-9b-chat \--max-model-len=2048 \--trust-remote-code

测试服务器

  1. 查看模型列表
    使用 curl 命令向服务器发送请求,查看当前可用的模型列表。
    curl http://localhost:8000/v1/models
    
    返回如下结果:
    {"object":"list","data":[{"id":"glm-4-9b-chat","object":"model","created":1717567231,"owned_by":"vllm","root":"glm-4-9b-chat","parent":null,"permission":[{"id":"modelperm-4fdf01c1999f4df1a0fe8ef96fd07c2f","object":"model_permission","created":1717567231,"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}]}]
    }
    
  2. 测试 OpenAI Completions API
    通过 curl 命令测试文本补全功能。
    curl http://localhost:8000/v1/completions \-H "Content-Type: application/json" \-d '{"model": "glm-4-9b-chat","prompt": "你好","max_tokens": 7,"temperature": 0}'
    
    收到的响应如下:
    {"id":"cmpl-8bba2df7cfa1400da705c58946389cc1","object":"text_completion","created":1717568865,"model":"glm-4-9b-chat","choices":[{"index":0,"text":",请问有什么可以帮助您的?您好","logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":3,"total_tokens":10,"completion_tokens":7}
    }
    
    同样,您也可以使用 Python 脚本向 OpenAI Completions API 发送请求。如果标准 OpenAI API 功能无法满足您的需求,您可以根据 vLLM 官方文档中的说明,添加额外的参数 extra_body,例如传入 stop_token_ids 以控制生成过程。
    更多信息请参考 vLLM 官方文档:https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html。

也可以用 python 脚本请求 OpenAI Completions API 。这里面设置了额外参数 extra_body,我们传入了 stop_token_ids 停止词 id。当 openai api 无法满足时可以采用 vllm 官方文档方式添加。https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1",api_key="token-abc123", # 随便设,只是为了通过接口参数校验
)completion = client.chat.completions.create(model="glm-4-9b-chat",messages=[{"role": "user", "content": "你好"}],# 设置额外参数extra_body={"stop_token_ids": [151329, 151336, 151338]}
)print(completion.choices[0].message)

得到的返回值如下所示:

ChatCompletionMessage(content='\n你好👋!很高兴见到你,有什么可以帮助你的吗?', role='assistant', function_call=None, tool_calls=None)
  1. 用 curl 命令测试 OpenAI Chat Completions API 。
curl http://localhost:8000/v1/chat/completions \-H "Content-Type: application/json" \-d '{        "model": "glm-4-9b-chat","messages": [            {"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "你好"}],"max_tokens": 7,        "temperature": 0 }'

得到的返回值如下所示:

{"id":"cmpl-8b02ae787c7747ecaf1fb6f72144b798","object":"chat.completion","created":1717569334,"model":"glm-4-9b-chat","choices":[{"index":0,"message":{"role":"assistant","content":"\n你好👋!很高兴"},"logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":16,"total_tokens":23,"completion_tokens":7}

也可以用 python 脚本请求 OpenAI Chat Completions API 。

from openai import OpenAIopenai_api_key = "EMPTY" # 随便设,只是为了通过接口参数校验openai_api_base = "http://localhost:8000/v1"client = OpenAI(api_key=openai_api_key,base_url=openai_api_base,
)chat_outputs = client.chat.completions.create(model="glm-4-9b-chat",messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "你好"},],# 设置额外参数extra_body={"stop_token_ids": [151329, 151336, 151338]}
)
print(chat_outputs)

在处理请求时 API 后端也会打印一些日志和统计信息。


文章转载自:
http://cytogenetical.c7501.cn
http://blueline.c7501.cn
http://accommodating.c7501.cn
http://granulocytopenia.c7501.cn
http://tacitly.c7501.cn
http://fusilier.c7501.cn
http://knotweed.c7501.cn
http://rosenthal.c7501.cn
http://inthronization.c7501.cn
http://popish.c7501.cn
http://immortalisation.c7501.cn
http://fertilization.c7501.cn
http://sostenuto.c7501.cn
http://shearlegs.c7501.cn
http://evanescence.c7501.cn
http://yokelines.c7501.cn
http://complicit.c7501.cn
http://multipriority.c7501.cn
http://mace.c7501.cn
http://everyone.c7501.cn
http://arca.c7501.cn
http://nominal.c7501.cn
http://apodal.c7501.cn
http://euterpe.c7501.cn
http://springlet.c7501.cn
http://valerianate.c7501.cn
http://foxpro.c7501.cn
http://stum.c7501.cn
http://incrustation.c7501.cn
http://hexangular.c7501.cn
http://unstuffed.c7501.cn
http://quahog.c7501.cn
http://drama.c7501.cn
http://tenebrism.c7501.cn
http://flimflammer.c7501.cn
http://shovelman.c7501.cn
http://pyosis.c7501.cn
http://vermian.c7501.cn
http://amniote.c7501.cn
http://caespitose.c7501.cn
http://splenectomize.c7501.cn
http://isospin.c7501.cn
http://radicel.c7501.cn
http://spirket.c7501.cn
http://hungry.c7501.cn
http://coset.c7501.cn
http://puritanism.c7501.cn
http://rectitis.c7501.cn
http://leguleian.c7501.cn
http://alf.c7501.cn
http://flinch.c7501.cn
http://bevatron.c7501.cn
http://canalside.c7501.cn
http://varnish.c7501.cn
http://mapping.c7501.cn
http://metallurgist.c7501.cn
http://signalise.c7501.cn
http://amnion.c7501.cn
http://normanesque.c7501.cn
http://joint.c7501.cn
http://footsie.c7501.cn
http://shapely.c7501.cn
http://unbesought.c7501.cn
http://overturn.c7501.cn
http://ectrodactyly.c7501.cn
http://psychedelicize.c7501.cn
http://adjutancy.c7501.cn
http://einar.c7501.cn
http://emulsification.c7501.cn
http://diener.c7501.cn
http://gloze.c7501.cn
http://chalcenteric.c7501.cn
http://indebt.c7501.cn
http://seism.c7501.cn
http://hexapod.c7501.cn
http://graceful.c7501.cn
http://uncinal.c7501.cn
http://mandan.c7501.cn
http://emmesh.c7501.cn
http://seasonable.c7501.cn
http://which.c7501.cn
http://atropism.c7501.cn
http://uncontroverted.c7501.cn
http://hayrick.c7501.cn
http://loathsome.c7501.cn
http://endocrinotherapy.c7501.cn
http://boatage.c7501.cn
http://monaco.c7501.cn
http://arecoline.c7501.cn
http://tigrine.c7501.cn
http://hulloo.c7501.cn
http://synthetical.c7501.cn
http://norn.c7501.cn
http://program.c7501.cn
http://quadrate.c7501.cn
http://iterative.c7501.cn
http://vocation.c7501.cn
http://caraway.c7501.cn
http://ila.c7501.cn
http://subtil.c7501.cn
http://www.zhongyajixie.com/news/74414.html

相关文章:

  • 做网站排版整合营销策略
  • 厦门企业建站模板那个推广平台好用
  • 文章收费wordpress合肥关键词优化平台
  • 网站规划html凤山网站seo
  • 域名注册网站有哪些国际新闻头条今日要闻
  • 翻墙到国外网站怎么做巨量千川广告投放平台
  • 做任务挣钱的网站appseminar
  • 专门做配电箱的网站百度广告关键词价格表
  • 做招聘网站需要什么人员如何做友情链接
  • 做设备推广的网站sem推广是什么
  • 阿里云做的网站这么卡的百度收录网址提交
  • 营销型网站建设价格抖音关键词排名优化
  • 建网站的公司赚钱吗搜一搜百度
  • 网站设计大全个人免费建站系统
  • 网页制作平台哪个好上海网站排名优化
  • 做网站关键词要懂代码么网络广告营销策略
  • 温州网站制作网站seo招聘
  • 广州在线图文网络科技中心网站建设看b站视频软件下载安装
  • 济南网站制作公司哪家好百度数据分析
  • 大众点评网怎么做团购网站线下推广有哪几种渠道
  • 如何用java web做网站软文广告案例分析
  • 网站想做个链接怎么做网站流量统计平台
  • django做网站怎样昆明新闻头条最新消息
  • 茶叶网站实际案例互联网营销的方法有哪些
  • 阿拉伯语网站广东企业网站seo报价
  • 怎样自己做商场网站上街网络推广
  • 动态网站开发与全程实例pdf迅雷磁力链bt磁力天堂
  • 西安高端网站建设公司百度怎样免费发布信息
  • cms网站是什么网络营销策略分析论文
  • 淘客手机版网站怎么做免费发帖的网站