由于近期代码微调以及测试都是在远程服务器上,因此LLamafactory-cli webui 以及vLLM的ui均无法使用,因此不断寻求解决方案,我提供一个解决方案,LLamafactory微调完成的模型需要合并为一个完整模型后再使用vLLM进行代码推理测试微调模型的结果。
由于chat启动的终端互动模式均无法上传图像进行交互,因此需要代码或者参数来上传图像进行理解。
这个链接里有vLLM支持的多模态大模型不同的函数对prompt的处理
我在这里提供一个使用vLLM对Qwen2-VL的多模态图像理解的python代码
python
from vllm import LLM, SamplingParams
from PIL import Image
def run_qwen2_vl(questions: str, image_path: str):
# 模型初始化配置
llm = LLM(
model="Qwen/Qwen2-VL-Lora_Sft",
max_model_len=4096,
max_num_seqs=5,
dtype="half"
)
# 多模态数据加载
image = Image.open(image_path)
question = "What is the content of this image?"
# 提示词构造
prompt_template = [(
"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n"
"<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>"
f"{question}<|im_end|>\n"
"<|im_start|>assistant\n") for question in questions]
print(prompt_template[0])
sampling_params = SamplingParams(
max_tokens=1024,
temperature=0.8,
top_p=0.95,
frequency_penalty=0.2,
presence_penalty=0.3,
stop=["<|im_end|>"]
)
# 生成请求
outputs = llm.generate({
"prompt": prompt_template[0],
"multi_modal_data": {"image": image},
}, sampling_params=sampling_params)
# 结果解析
return [output.outputs[0].text for output in outputs]
# 使用示例
if __name__ == "__main__":
response = run_qwen2_vl(
questions=["请使用中文描述下这个图像并给出中文诊断结果"],
image_path="aaaa.jpg"
)
print("模型输出:", response[0])