邯郸企业做网站推广,近期舆情热点事件,重庆网络公司流程,网上商城推广文案目录 vLLM 安装与模型下载离线批量推理OpenAI 兼容服务器 参考资料#xff1a;
vLLM GitHub首页
vLLM 官方文档
vLLM 安装与模型下载
vLLM 安装#xff1a;直接 pip install 即可
我选取了 OpenChat-3.5-0106 模型#xff0c;这个模型是由 mistralai/Mistral-7B-v0.1 微… 目录 vLLM 安装与模型下载离线批量推理OpenAI 兼容服务器 参考资料
vLLM GitHub首页
vLLM 官方文档
vLLM 安装与模型下载
vLLM 安装直接 pip install 即可
我选取了 OpenChat-3.5-0106 模型这个模型是由 mistralai/Mistral-7B-v0.1 微调得到的参数量为 7B 模型下载链接
openchat/openchat-3.5-0106 · Hugging Face
大家可以选取自己喜欢的模型进行下载。
离线批量推理
首先展示一个使用 vLLM 对数据集进行离线批量推理的示例即使用 vLLM 为输入提示列表生成文本。
需要导入两个使用 vLLM 引擎运行离线推理的主要类LLM, SamplingParams
SamplingParams 可以设置 temperature, top_p, top_k 等各种参数这些参数和模型的生成方式有关关于这些参数的详细可以看源代码 其中 temperature 越大生成结果的随机性越强top_p 也可以改变模型生成的随机性。
更详细的讲解可以看这篇 huggingface 里面的博客
如何生成文本通过 Transformers 用不同的解码方法生成文本
离线批量推理的代码如下注意把我这里 LLM 构造方法里面 model 的路径替换成你下载好的模型的路径
from vllm import LLM, SamplingParams
prompts [Hello, my name is,The president of the United States is,The capital of France is,The future of AI is,
]
sampling_params SamplingParams(temperature0.8, top_p0.95)
llm LLM(model/root/autodl-tmp/kdy/models/openchat-3.5-0106)
outputs llm.generate(prompts, sampling_params)# Print the outputs.
for output in outputs:prompt output.promptgenerated_text output.outputs[0].textprint(fPrompt: {prompt!r}, Generated text: {generated_text!r})代码的输出结果如下
把 temperature 调高一点就会发现结果变得很不通顺说明随机性大大增强了。 OpenAI 兼容服务器
vLLM 可以为 LLM 服务进行部署提供了一个示例 FastAPI 服务器可以检查 vllm/entrypoints/api_server.py 以获取服务器实现。
在这里我们不演示了直接将 vLLM 部署为模仿 OpenAI API 协议的服务器这使得 vLLM 可以用作使用 OpenAI API 的应用程序的直接替代品。
可以输入python -m vllm.entrypoints.openai.api_server --help 查看命令行参数的详细信息。 我们输入以下命令启动服务器–model 为本地模型的路径–served-model-name 是模型在服务器中的别名这里我们取简称 openchat其他都是默认值当然也可以自己设置。
具体实现的详情可参考 vllm/vllm/entrypoints/openai/api_server.py at main · vllm-project/vllm (github.com)
python -m vllm.entrypoints.openai.api_server \--model /root/autodl-tmp/kdy/models/openchat-3.5-0106 \--served-model-name openchat \终端输出如下服务器启动成功 OpenAI 提供了 Completions 和 ChatCompletions 两个相关的 API两个 API 很相似你可以使用其中的任意一个。
Completions 的文档如下
Completions 说明
服务器启动成功后我们可以在 shell 中发送一个请求进行测试该请求使用了 OpenAI Chat API 查询模型请求内容如下
curl http://localhost:8000/v1/completions \-H Content-Type: application/json \-d {model: openchat,prompt: San Francisco is a,max_tokens: 7,temperature: 0}-d 里面是请求的参数可以自己设置。temperature 为 0代表每次模型的回答都相同不具有随机性你可以自由调整参数来满足你的需求
可以看到返回了如下结果其中我框住的是模型为我们续写的内容。 当然你也可以试一试 ChatCompletions 格式的请求ChatCompletions API 的请求内容如下两种的格式还是有一些区别的。
curl http://localhost:8000/v1/chat/completions \-H Content-Type: application/json \-d {model: openchat,messages: [{role: system, content: You are a helpful assistant.},{role: user, content: Who won the world series in 2020?}]}输出结果如下 这里更建议使用 ChatCompletions 格式因为经过多次测试Completions API 的回答有时候会出现一些问题例如模型反复重复一句话。
如果想通过代码来完成服务器的查询需要下载 python 包 openai我这里将 OpenAI ChatCompletions API 与 vLLM 结合使用。
代码内容如下注意这段代码必须在启动服务器后运行
from openai import OpenAI# Modify OpenAIs API key and API base to use vLLMs API server.
openai_api_key EMPTY
openai_api_base http://localhost:8000/v1
client OpenAI(api_keyopenai_api_key,base_urlopenai_api_base,
)
chat_response client.chat.completions.create(modelopenchat,messages[{role: system, content: You are a helpful assistant.},{role: user, content: Tell me a joke.},]
)
print(chat_response)输出结果如下它为我们讲了一个很冷的笑话。 如果只想看输出结果把最后一行代码修改为如下代码即可。
print(chat_response.choices[0].message.content)可以看到现在只有输出结果了依然是一个人类理解不了的笑话。 这样我们就完成了本地 LLM 的部署大家快来尝试一下吧