vllm server 启动的推理框架进行模型调用参数说明

curl -X POST "http://localhost:8000/v1/completions" -H "Content-Type: application/json" --data "{\"model\":\"defog/sqlcoder-70b-alpha\",\"prompt\":\"\\n### Instructions:\\nConvert the following question into a SQL query using the given PostgreSQL database schema.\\n\\nRules:\\n1. **Only output the SQL query**: Do not include any explanations, descriptions, comments, or additional text.\\n2. **The SQL query must be valid and syntactically correct**: It should directly answer the question using the provided schema.\\n3. **For each column in the SELECT statement, use the \AS\ syntax to include Chinese annotations**: Use the \COMMENT\ provided in the schema as the Chinese alias. For example, if the column is \facility_id\, the output should be \facility_id AS '设施ID'\.\\n4. **Ensure that each selected column has a corresponding Chinese alias**: Do not omit any alias.\\n5. **Return only the columns relevant to the question**: Exclude any columns that are not directly requested.\\n\\n### Question:\\n设���ID等于123的设备列表\\n\\n### Schema:\\nCREATE TABLE government_maintenance (facility_id VARCHAR(255) COMMENT '设施ID', type VARCHAR(255) COMMENT '设施类型', installation_date DATE COMMENT '安装日期', lastMaintenance_date DATE COMMENT '最后维护日期', maintenance_content VARCHAR(255) COMMENT '维护描述', maintenance_cost FLOAT(12) COMMENT '维护费用', city VARCHAR(255) COMMENT '城市', district VARCHAR(255) COMMENT '行政区', street VARCHAR(255) COMMENT '街道', detailed_address VARCHAR(255) COMMENT '详细地址') COMMENT = 'c9b2b0b1-bb8b-43d9-9630-75de02efe128';\\n\\n### Response:\\nGenerate the SQL query based on the above question and schema, ensuring that each column in the SELECT statement includes its Chinese alias; Based on your instructions, here is the SQL query I have generated to answer the question '设备ID 等于123的设备列表'\"}"

在使用 vllm server 启动的推理框架进行模型调用时,你可以根据不同的需求和问题,调整多个参数来优化结果的质量和性能。以下是你可以考虑的常用参数:

1. Temperature

  • 作用:控制生成文本的多样性。较低的温度(如0.2)会使模型更保守,生成更确定的输出,而较高的温度(如0.8或1.0)会使输出更具创意和多样性。
  • 适用场景:如果你希望模型生成稳定、标准的SQL查询,温度设置较低(如0.2或0.3)可能更好;如果希望模型生成更多创新或多样化的输出,则可以适当增大温度。

示例

"temperature": 0.3

2. Top-p (Nucleus Sampling)

  • 作用:限制模型的生成空间,确保生成的文本来自于最有可能的概率分布。top_p 是控制生成过程中保留的词汇概率的累积值。例如,设置为0.9表示保留累计概率为90%的词汇。
  • 适用场景:可以与 temperature 配合使用,使生成的文本更加流畅和自然,同时避免过多的随机性。

示例

"top_p": 0.9

3. Top-k

  • 作用:设置从前K个最可能的词汇中进行采样。较小的 top-k 可以使输出更加集中,较大的 top-k 使输出更具多样性。
  • 适用场景:通常与 temperature 配合使用,控制生成的随机性。如果你需要更稳定且准确的SQL生成,可以使用较低的 top-k

示例

"top_k": 40

4. Max Tokens

  • 作用:限制返回的最大令牌数量。控制生成输出的长度。
  • 适用场景:如果你的输出超过了模型的限制,可以设置 max_tokens 来确保生成的内容不会被截断。

示例

"max_tokens": 200

5. Stop Tokens

  • 作用:指定一个或多个停止符号,模型生成到这些符号时会停止输出。这对于截断过长的生成结果或确保输出格式符合要求非常有用。
  • 适用场景:你可以设置停止符号(如"SELECT"";")来确保模型生成的输出是一个完整的SQL查询。

示例

"stop": [";"]

6. Presence Penalty

  • 作用:控制模型是否重复输出相同的词或短语。较高的惩罚值可以减少输出中的重复内容。
  • 适用场景:如果你不希望生成重复的SQL部分,可以增加此参数。

示例

"presence_penalty": 0.6

7. Frequency Penalty

  • 作用:控制模型生成的单词是否频繁出现。此值越高,模型会倾向于避免使用已经在上下文中出现过的单词。
  • 适用场景:适用于减少重复出现的列名、表名等。

示例

"frequency_penalty": 0.5

8. Logprobs

  • 作用:控制返回生成过程中每个词的概率信息。设置为 logprobs 可以帮助了解生成过程中的决策过程。
  • 适用场景:如果你需要检查或分析生成文本的决策过程。

示例

"logprobs": 5

9. Echo

  • 作用:如果设置为 true,则返回的结果中会包含输入的内容(即请求的 prompt)。
  • 适用场景:可以帮助调试,确认模型生成的内容是否符合期望。

示例

"echo": true

10. Stream

  • 作用:控制是否以流模式返回生成的结果。如果设置为 true,模型会逐步返回生成的内容,而不是一次性返回完整的文本。
  • 适用场景:当你希望逐步获得输出结果时,尤其是生成较长的内容时。

示例

"stream": true

例子:添加参数到你的 curl 请求中

假设你想要优化结果的生成,避免过多的重复,增加多样性,并限制最大输出长度。你可以像这样修改 curl 请求:

curl -X POST "http://localhost:8000/v1/completions" \
-H "Content-Type: application/json" \
--data '{
  "model": "defog/sqlcoder-70b-alpha",
  "prompt": "\n### Instructions:\nConvert the following question into a SQL query using the given PostgreSQL database schema.\n\nRules:\n1. **Only output the SQL query**: Do not include any explanations, descriptions, comments, or additional text.\n2. **The SQL query must be valid and syntactically correct**: It should directly answer the question using the provided schema.\n3. **For each column in the SELECT statement, use the `AS` syntax to include Chinese annotations**: Use the `COMMENT` provided in the schema as the Chinese alias. For example, if the column is `facility_id`, the output should be `facility_id AS '设施ID'`.\n4. **Ensure that each selected column has a corresponding Chinese alias**: Do not omit any alias.\n5. **Return only the columns relevant to the question**: Exclude any columns that are not directly requested.\n\n### Question:\n设备ID等于123的设备列表\n\n### Schema:\nCREATE TABLE government_maintenance (\n  facility_id VARCHAR(255) COMMENT '设施ID', type VARCHAR(255) COMMENT '设施类型', installation_date DATE COMMENT '安装日期', lastMaintenance_date DATE COMMENT '最后维护日期', maintenance_content VARCHAR(255) COMMENT '维护描述', maintenance_cost FLOAT(12) COMMENT '维护费用', city VARCHAR(255) COMMENT '城市', district VARCHAR(255) COMMENT '行政区', street VARCHAR(255) COMMENT '街道', detailed_address VARCHAR(255) COMMENT '详细地址') COMMENT = 'c9b2b0b1-bb8b-43d9-9630-75de02efe128';\n\n### Response:\nGenerate the SQL query based on the above question and schema, ensuring that each column in the SELECT statement includes its Chinese alias; Based on your instructions, here is the SQL query I have generated to answer the question '设备ID 等于123的设备列表'",
  "max_tokens": 200,
  "temperature": 0.3
}'

总结

你可以通过调整以上的参数来控制模型生成的结果,包括输出的长度、多样性、准确性等。对于你的场景,建议重点调整 max_tokenstemperaturetop_p 参数,以确保生成有效且合适的SQL查询。

### 本地部署Vllm模型及其API接口调用 #### 创建Python脚本初始化vLLM服务 为了启动vLLM服务,在Python脚本中需导入必要的库来加载预训练的语言模型和对应的分词器。对于GPT-2这样的模型而言,可以利用`transformers`库完成这一操作。 ```python from transformers import GPT2LMHeadModel, GPT2Tokenizer model_name = 'gpt2' tokenizer = GPT2Tokenizer.from_pretrained(model_name) model = GPT2LMHeadModel.from_pretrained(model_name) # 设置模型为评估模式 model.eval() # 此处原输入有误,已修正语法错误[^1] ``` 当无法连接至Hugging Face时,可以通过环境变量配置转向使用ModelScope作为替代方案: ```bash export VLLM_USE_MODELSCOPE=True ``` 接着实例化特定的大规模语言模型对象,比如Qwen系列中的某一款型号,并指定参数以优化性能表现[^2]。 ```python import torch from vllm import LLM llm = LLM( model='Qwen/Qwen2.5-1.5B-Instruct', trust_remote_code=True, dtype=torch.float16 ) ``` #### 构建FastAPI应用程序提供RESTful API服务 通过集成FastAPI框架能够快速搭建起支持HTTP请求处理的服务端程序,从而对外暴露基于vLLM的自然语言处理能力。下面是一个简单的例子展示怎样定义路由处理器函数用于接收POST请求并将文本传递给底层的LLM引擎进行预测分析后再返回响应数据。 ```python from fastapi import FastAPI, Request app = FastAPI() @app.post("/predict/") async def predict(request: Request): body = await request.json() input_text = body.get('text', '') inputs = tokenizer(input_text, return_tensors="pt") outputs = model.generate(**inputs) result = tokenizer.decode(outputs[0], skip_special_tokens=True) return {"prediction": result} ``` 此部分代码片段假设读者已经熟悉了如何安装并运行FastAPI项目;实际开发过程中可能还需要考虑更多细节如异常捕获、日志记录等功能模块的设计实现。 #### 使用Docker容器简化部署流程 针对希望进一步降低运维复杂度的情况,官方提供了预先打包好的Docker镜像文件,其中包含了执行上述功能所需的一切依赖项。只需拉取最新版本的映像并通过命令行启动即可立即获得一个完整的在线推理平台。 ```bash docker pull registry.cn-hangzhou.aliyuncs.com/modelscope/vllm:latest docker run -p 8000:8000 --name=vllm-server \ registry.cn-hangzhou.aliyuncs.com/modelscope/vllm:latest \ python -m vllm.entrypoints.openai.api_server ``` 这使得即使是没有深厚Linux服务器管理经验的技术人员也能轻松上手部署工作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值