news 2026/5/11 19:55:10

【VLM】——vlm计算ppl损失

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【VLM】——vlm计算ppl损失

计算vlm模型的ppl损失。

代码:

fromtransformersimportQwen2VLForConditionalGeneration,AutoProcessorimporttorchfromtorch.nnimportCrossEntropyLossfromPILimportImage# 配置DEVICE="cuda:0"MODEL_NAME="/data1/chenjun/huf/Qwen2-VL-2B-Instruct"IMAGE_SIZE=384defresize_image(path,max_side=384):"""调整图片大小,保持宽高比"""image=Image.open(path).convert("RGB")width,height=image.sizeifwidth>height:new_width=max_side new_height=int(height*(max_side/width))else:new_height=max_side new_width=int(width*(max_side/height))return[image.resize((new_width,new_height),Image.Resampling.LANCZOS)]defmain():# 加载模型和处理器model=Qwen2VLForConditionalGeneration.from_pretrained(MODEL_NAME,dtype=torch.float32,device_map=DEVICE)processor=AutoProcessor.from_pretrained(MODEL_NAME)# 构建消息file='outputs/ppl_vlm_qwen3-vl-2b-axera-384/vit/0000.png'messages=[{"role":"user","content":[{"type":"image","image":file},{"type":"text","text":"描述这张图片"},],}]# 应用chat模板text=processor.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)# 处理图片image_inputs=resize_image(file,IMAGE_SIZE)inputs=processor(text=[text],images=image_inputs,return_tensors="pt").to(DEVICE)gen_idx=inputs['input_ids'].shape[1]# 生成文本generated_ids=model.generate(**inputs,max_new_tokens=256)generated_ids_trimmed=[out_ids[len(in_ids):]forin_ids,out_idsinzip(inputs.input_ids,generated_ids)]output_text=processor.batch_decode(generated_ids_trimmed,skip_special_tokens=True,clean_up_tokenization_spaces=False)[0]# 计算PPLtext_with_response=text+output_text image_inputs=resize_image(file,IMAGE_SIZE)inputs2=processor(text=[text_with_response],images=image_inputs,return_tensors="pt").to(DEVICE)withtorch.no_grad():outputs=model(**inputs2,max_new_tokens=1)logits=outputs.logits# 计算交叉熵损失shift_labels=inputs2['input_ids'][...,gen_idx+1:].contiguous().to(DEVICE)shift_logits=logits[...,gen_idx:-1,:].contiguous().to(dtype=torch.float32)loss_fct=CrossEntropyLoss()ce_loss=loss_fct(shift_logits.view(-1,shift_logits.size(-1)),shift_labels.view(-1))print(f"ce_loss:{ce_loss:.3f}, ppl:{ce_loss.exp():.3f}")if__name__=="__main__":main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 19:54:52

如何解决管家婆云财工贸ERP打印报错问题

在管家婆云财工贸ERP中打印报表或单据时会遇到个别提示,如:端口占用、打印功能无法使用等。今天来和小编一起学习下如何解决管家婆云财工贸ERP打印报错问题吧! 这些问题一般是由于打印服务没有启动、打印端口被占用、防护软件拦截了打印服务启…

作者头像 李华
网站建设 2026/5/11 5:46:54

真的太省时间!千笔,断层领先的AI论文平台

你是否曾为论文选题而焦虑不已?是否在深夜面对空白文档无从下笔?是否反复修改却总对表达不满意?论文写作不仅是学术能力的考验,更是时间与精力的消耗战。对于自考学生而言,既要兼顾工作与学习,又要应对繁重…

作者头像 李华
网站建设 2026/5/10 18:20:45

如何部署PHP应用到生产环境?

摘要 本报告旨在为PHP开发者、DevOps工程师及系统管理员提供一份在2026年背景下,关于如何将PHP应用程序部署到生产环境的全面、现代化且具备实践指导意义的研究报告。报告深入探讨了从传统的服务器基础架构搭建到当前主流的容器化与编排技术,全面覆盖了…

作者头像 李华
网站建设 2026/5/10 15:51:11

python元宇宙平台的房屋租赁管理系统

目录 元宇宙房屋租赁管理系统摘要核心功能模块技术架构安全机制 开发技术路线结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 元宇宙房屋租赁管理系统摘要 该系统基于Python开发,旨在构建一个虚拟与现实结合的房屋租赁管…

作者头像 李华
网站建设 2026/5/10 18:14:55

多核 DMA 性能损耗

核心就 3 条根因:CPU 缓存一致性(CCE/coherency)冲突缓存抖动、反复 flush/invalidate 造成 “空跑周期”总线争用、内存带宽瓶颈、跨 NUMA 访问这些在单核基本不明显,多核高并发 DMA 会被剧烈放大。最核心损耗:Cache …

作者头像 李华