赞
踩
在当今的技术领域,大型语言模型的应用日益广泛,而Qwen1.5作为其中的佼佼者,已经得到了多个推理框架的支持。
原生混合精度推理
from transformers import AutoModelForCausalLM, AutoTokenizer import torch # 设置设备为CUDA,如果系统支持的话,并尝试开启FP16计算 device = torch.device("cuda") model = AutoModelForCausalLM.from_pretrained( "/root/autodl-tmp/Qwen1___5-14B-Chat", torch_dtype=torch.float16, # 尝试使用FP16精度 device_map="auto" # 自动映射模型到可用设备 ) tokenizer = AutoTokenizer.from_pretrained("/root/autodl-tmp/Qwen1___5-14B-Chat") # ... (此处省略了消息处理部分,这部分应保持不变) # 将模型转换为FP16半精度模式 model.half() # 注意:通常在转为半精度后,还需要显式地将模型移动到GPU上,但在本例中没有显示调用model.to(device),确保模型已经在CUDA设备上 # 示例提问 prompt = "Give me a short introduction to large language model." messages = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt} ] text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) # 将输入文本编码并转换为FP16格式的张量,再将其移到GPU上 model_inputs = tokenizer([text], return_tensors="pt").to(device) # 使用自动混合精度(AMP)进行推理 with torch.cuda.amp.autocast(): generated_ids = model.generate( model_inputs.input_ids, max_length=512, output_scores=False # 是否返回得分,这里设为False ) # 提取生成的文本ID generated_ids = [ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) ] # 解码生成的文本ID,跳过特殊标记 response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] print(response)
原生混合推理速度及资源占用
速度
资源占用
本文将向大家介绍如何使用vLLM和SGLang这两个框架来部署和使用Qwen1.5。
vLLM部署
首先,我们建议使用vLLM的0.3.0或更高版本来构建与OpenAI兼容的API服务。启动服务器时,选择一个聊天模型,例如Qwen1.5-7B-Chat:
python -m vllm.entrypoints.openai.api_server --served-model-name Qwen1.5-7B-Chat --model Qwen/Qwen1.5-7B-Chat
然后,你可以使用如下所示的聊天API:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen1.5-7B-Chat",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Tell me something about large language models."}
]
}'
在Python中,可以像这样使用:
from openai import OpenAI # 设置OpenAI的API密钥和API基础地址以使用vLLM的API服务器。 openai_api_key = "EMPTY" openai_api_base = "http://localhost:8000/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) chat_response = client.chat.completions.create( model="Qwen1.5-7B-Chat", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Tell me something about large language models."}, ] ) print("Chat response:", chat_response)
SGLang部署
请从源代码安装SGLang。与vLLM类似,你需要启动一个服务器并使用与OpenAI兼容的API服务。首先启动服务器:
python -m sglang.launch_server --model-path Qwen/Qwen1.5-7B-Chat --port 30000
在Python中,你可以这样使用:
from sglang import function, system, user, assistant, gen, set_default_backend, RuntimeEndpoint @function def multi_turn_question(s, question_1, question_2): s += system("You are a helpful assistant.") s += user(question_1) s += assistant(gen("answer_1", max_tokens=256)) s += user(question_2) s += assistant(gen("answer_2", max_tokens=256)) set_default_backend(RuntimeEndpoint("http://localhost:30000")) state = multi_turn_question.run( question_1="What is the capital of China?", question_2="List two local attractions.", ) for m in state.messages(): print(m["role"], ":", m["content"]) print(state["answer_1"])
通过上述步骤,你可以轻松地使用vLLM和SGLang来部署和使用Qwen1.5。无论是进行聊天对话还是复杂的多轮问答,Qwen1.5都能提供高质量的语言模型服务。随着技术的不断进步,我们有理由相信,Qwen1.5将在更多领域大放异彩。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。