news 2026/4/18 10:03:04

【llm】——计算llm的ppl损失

作者头像

张小明

前端开发工程师

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

代码:

# 浮点结果计算+ppl计算fromtransformersimportAutoModelForCausalLM,AutoTokenizerimportjsonfromtqdmimporttqdmimporttorchfromtorch.nnimportCrossEntropyLoss model_name="/data1/huf/Qwen3-0.6B"json_file="/data1/05_ax/01_eval/ppl/qnn/gsm8k_17d799.json"out_json_file="/data1/05_ax/01_eval/ppl/qnn/gsm8k_17d799_qwen3_0.6B_pred.json"num_samples=100device="cuda:7"# load the tokenizer and the modeltokenizer=AutoTokenizer.from_pretrained(model_name)model=AutoModelForCausalLM.from_pretrained(model_name,torch_dtype=torch.float32,device_map=device).to(device)deffind_subsequence(tensor,subsequence):len_tensor=len(tensor)len_subsequence=len(subsequence)foriinrange(len_tensor-len_subsequence+1):iftorch.equal(tensor[i:i+len_subsequence],subsequence):returnireturn-1# 如果没有找到子序列,返回 -1withopen(json_file,'r')asf:datas=json.loads(f.read())template="<|im_start|>user\n{}<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n"loss=0.0num_batches=0forkey,itemintqdm(datas.items()):withtorch.no_grad():prompt=item['origin_prompt'][0]['prompt']prompt=template.format(prompt)inputs=tokenizer(prompt,return_tensors="pt").to(model.device)## 浮点模型输出generated_ids=model.generate(**inputs,max_new_tokens=128)output_ids=generated_ids[0][len(inputs.input_ids[0]):].tolist()try:index=len(output_ids)-output_ids[::-1].index(151668)exceptValueError:index=0thinking_content=tokenizer.decode(output_ids[:index],skip_special_tokens=True).strip("\n")content=tokenizer.decode(output_ids[index:],skip_special_tokens=True).strip("\n")## 将浮点结果写回jsonitem['prediction']=content# 计算浮点模型的pplnew_prompt=prompt+content new_inputs=tokenizer(new_prompt,return_tensors="pt").to(model.device)input_ids=new_inputs['input_ids']index=find_subsequence(input_ids[0],torch.tensor([151644,77091,198]).to(device))index=index+3+4## 将编码写入jsonitem['input_ids']=input_ids[0].cpu().numpy().tolist()item['gen_index']=index item['origin_prompt'][0]['new_prompt']=new_prompt outputs=model(input_ids)shift_logits=outputs.logits[...,index:-1,:].contiguous().to(dtype=torch.float32)shift_labels=input_ids[...,index+1:].contiguous().to(shift_logits.device)loss_fct=CrossEntropyLoss()ce_loss=loss_fct(shift_logits.view(-1,shift_logits.size(-1)),shift_labels.view(-1)).detach()loss+=ce_lossprint(f"ce_loss:{ce_loss:3f}, ppl:{ce_loss.exp():3f}")num_batches+=1ifnum_batches>=num_samples:breakloss=loss/num_batches ppl=loss.exp()print(f"ppl loss:{ppl:3f}")# 保存jsonwithopen(out_json_file,'w')asf:json.dump(datas,f,indent=4)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 19:49:54

被椰树独宠了十几年的长公主徐冬冬大婚!60亿票房作品成亮眼陪嫁

在这个万物皆可营销的时代&#xff0c;一场婚礼能玩出多少花样&#xff1f;想知道答案就来看看徐冬冬和尹子维的“椰树牌”婚礼。当印有“新婚幸福&#xff0c;早生龙凤”的椰汁罐铺满货架&#xff0c;当“椰历38年&#xff0c;椰树公主大婚”的梗刷屏全网&#xff0c;人们才惊…

作者头像 李华
网站建设 2026/3/13 16:43:50

打破传输瓶颈:替代国外FTP的工具有哪些新选择

信创战略深化落地&#xff0c;数据安全合规要求愈发严苛&#xff0c;国外 FTP 工具的安全漏洞、信创适配缺失等短板愈发凸显&#xff0c;已难以匹配企业数字化转型的传输需求。越来越多企业开始探寻国产化替代方案&#xff0c;替代国外 FTP 的工具有哪些&#xff1f;成为政企搭…

作者头像 李华
网站建设 2026/4/18 5:46:19

降重省心了!专科生专用的降AI率工具 —— 千笔·降AIGC助手

在AI技术迅速发展的今天&#xff0c;越来越多的专科生开始借助AI工具辅助论文写作&#xff0c;以提升效率和内容质量。然而&#xff0c;随之而来的AI率超标问题也日益突出&#xff0c;成为影响论文通过的重要障碍。随着查重系统对AI生成内容的识别能力不断提升&#xff0c;许多…

作者头像 李华
网站建设 2026/4/18 3:46:53

想成为“白帽子”?这8个网络安全学习网站,你必须收藏!

想成为“白帽子”&#xff1f;这8个网络安全学习网站&#xff0c;你必须收藏&#xff01; 在这个信息爆炸的时代&#xff0c;人人都想成为“黑客”大佬。但是&#xff0c;在对计算机和网络安全的基础知识一无所知之前&#xff0c;这可不是闹着玩的。对于初学者来说&#xff0c…

作者头像 李华
网站建设 2026/4/16 19:06:41

现在投最快!中科院3区升1区Top,1个月录用!

&#x1f525; &#x1f525; &#x1f525; &#x1f525; 《Science China-Materials》&#xff08;《中国科学&#xff1a;材料科学&#xff08;英文版&#xff09;》&#xff09;是中国材料科学领域的旗舰级英文学术期刊&#xff0c;由中国科学院主管、中国科学杂志…

作者头像 李华