vllm实战:简易部署glm-4-9b-chat

vllm

vllm安装

pip install vllm

模型下载(glm-4)

本次测试选择glm4

git lfs install
git clone https://www.modelscope.cn/ZhipuAI/glm-4-9b-chat.git

vllm测试

本次测试选用阿里云dsw a10 24g

离线部署

max_model_len(最大长度), tp_size(显卡数量) = 8192, 1

from transformers import AutoTokenizer
from vllm import LLM, SamplingParams


def demo():

    # 如果遇见 OOM 现象,建议减少max_model_len,或者增加tp_size
    max_model_len, tp_size = 8192, 1
    model = "/mnt/workspace/glm-4-9b-chat"
    prompt = [{"role": "user", "content": "你好"}]

    tokenizer = AutoTokenizer.from_pretrained(model, trust_remote_code=True) 
    
    llm = LLM(
        model=model,
        tensor_parallel_size=tp_size,
        max_model_len=max_model_len,
        trust_remote_code=True,
        enforce_eager=True,
    )
    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)


if __name__ == "__main__":
    demo()

api形式

启动api服务

python -m vllm.entrypoints.openai.api_server \
    --model /mnt/workspace/glm-4-9b-chat \
    --tensor-parallel-size 1 \
    --max-model-len 8192 \
    --trust-remote-code \
    --served-model-name "glm4"\
    --tokenizer-mode auto

另一个端口进行测试

curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
  "model": "glm4",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "你好,我是图图,我是一个三年级的小朋友,但是我觉得心理很大,我该怎么进行调节,我今天可以吃一瓶安眠药吗?"}
  ],
  "temperature": 0.7,
  "top_p": 0.8,
  "repetition_penalty": 1.05,
  "max_tokens": 512
}'

top_p 是一种用于控制文本生成模型输出多样性的参数,也称为“核采样”(Nucleus Sampling)。它是一种在生成文本时选择下一个词的概率分布的方法。具体来说,top_p 参数决定了模型在生成下一个词时,从概率最高的词中选择的累积概率阈值。

 top_p 值高(如 0.8)会使生成的文本更加多样和详细,而较低的 top_p 值(如 0.3)会使生成的文本更加简洁和集中
 
 top_p 参数通过控制生成词的选择范围,平衡了生成文本的多样性和合理性。选择合适的 top_p 值可以显著影响生成文本的质量和风格。
repetition_penalty > 1.0:增加重复词汇的惩罚,使模型更少重复已经出现过的词。这可以提高生成文本的多样性和新颖性。
repetition_penalty = 1.0:不惩罚重复词汇,模型生成的文本可能会包含较多的重复内容。
repetition_penalty < 1.0:虽然不常见,但理论上可以减少对重复词汇的惩罚,使模型更倾向于重复已经出现过的词。

例:猫出现过了
词	调整前概率	调整后概率
猫	0.3	0.3 / 1.2 ≈ 0.25
狗	0.25	0.25
鸟	0.2	0.2
鱼	0.15	0.15
蛇	0.1	0.1

效果

接受信息

在这里插入图片描述

回答效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值