LLM自動化評測

使用的數據集:ceval-exam

import requests
from datasets import load_dataset, concatenate_datasets
import re
from tqdm import tqdm
import re, time, tiktoken, ollama
from ollama import ChatResponse
from ollama import Optionsdef llm(model, query, temperature=0.6, stream=False, encoding=tiktoken.encoding_for_model("gpt-4"), max_tokens=None):# return "A"options = Options(temperature=temperature,num_gpu=0, # num_gpu=0即使用CPU計算# num_thread=32,# num_ctx=4096, # 上下文窗口大小)# 流式輸出response = ollama.chat(model=model,messages=[{"role": "system","content": "你是一個做題專家。請完成下列單項選擇題。\n\n## output format\n只能輸出一個選項編號字母,不要有解析等其他任何內容。",},{"role": "user","content": query,},],options=options,stream=stream,keep_alive=0)if stream:chunks = ""# 逐塊打印響應內容for chunk in response:chunks += chunk["message"]["content"]# print(chunk["message"]["content"], end="", flush=True)if max_tokens != None and len(encoding.encode(chunks)) > max_tokens:breakresponse = chunkselse:# print(response["message"]["content"])response = response["message"]["content"]# stream=True時無效# with open("tmp.txt", "a", encoding="utf-8") as f:#     f.write(response + "\n"+ 100*'*' + '\n')if '<think>' in response and '</think>' in response:response = re.sub(r'<think>.*?</think>', '', response, flags=re.DOTALL)return response.strip()task_list = ["computer_network","operating_system","computer_architecture","college_programming","college_physics","college_chemistry","advanced_mathematics","probability_and_statistics","discrete_mathematics","electrical_engineer","metrology_engineer","high_school_mathematics","high_school_physics","high_school_chemistry","high_school_biology","middle_school_mathematics","middle_school_biology","middle_school_physics","middle_school_chemistry","veterinary_medicine","college_economics","business_administration","marxism","mao_zedong_thought","education_science","teacher_qualification","high_school_politics","high_school_geography","middle_school_politics","middle_school_geography","modern_chinese_history","ideological_and_moral_cultivation","logic","law","chinese_language_and_literature","art_studies","professional_tour_guide","legal_professional","high_school_chinese","high_school_history","middle_school_history","civil_servant","sports_science","plant_protection","basic_medicine","clinical_medicine","urban_and_rural_planner","accountant","fire_engineer","environmental_impact_assessment_engineer","tax_accountant","physician",
]
task_chinese_name_list = ["計算機網絡","操作系統","計算機架構","大學編程","大學物理","大學化學","高等數學","概率與統計","離散數學","電氣工程師","計量工程師","高中數學","高中物理","高中化學","高中生物學","中學數學","中學生物學","中學物理","中學化學","獸醫學","大學經濟學","工商管理","馬克思主義","毛澤東思想","教育科學","教師資格","高中政治","高中地理","中學政治","中學地理","現代中國史","思想道德修養","邏輯","法律","漢語與文學","藝術研究","專業旅游指南","法律專業","高中漢語","高中歷史","中學歷史","公務員","體育科學","植物保護","基礎醫學","臨床醫學","城市與農村規劃","會計","消防工程師","環境影響評估工程師","稅務會計","醫生",
]def test_split(model_name):encoding = tiktoken.encoding_for_model("gpt-4")model_name_write = model_name.replace(":", "_").replace("/", "_")# with open(f"{model_name_write}.txt", "w", encoding="utf-8") as f:#     f.write(f"")# 加載數據集sum_total = 0sum_correct = 0for i in range(26, len(task_list)):try:dataset_tmp = load_dataset(r"ceval/data", name=task_list[i])dataset = concatenate_datasets([dataset_tmp["dev"], dataset_tmp["val"]])print(f"\nNo.{i}: {task_list[i]}({task_chinese_name_list[i]})數據集加載完成, len(dataset)={len(dataset)}")except:print(f"\nNo.{i}: {task_list[i]}({task_chinese_name_list[i]})數據集加載失敗")continue# 初始化統計變量correct = 0total = len(dataset)for item in tqdm(dataset, desc=f"No.{i}: Processing"):# for item in dataset:try:# 構造完整問題user_prompt = f"{item['question']}\nA. {item['A']}\nB. {item['B']}\nC. {item['C']}\nD. {item['D']}\n答案:"# 調用Ollama APImodel_answer = llm(model_name, user_prompt, stream=True, encoding=encoding, max_tokens=4096)# 提取并驗證答案"""從模型輸出中提取答案選項(A/B/C/D)"""match = re.search(r"[A-D]", model_answer.upper())extracted = match.group(0) if match else Noneif extracted and extracted == item["answer"]:correct += 1except:print("\nerror.")# 輸出結果sum_total += totalsum_correct += correctprint(f"No.{i}: {task_list[i]}({task_chinese_name_list[i]})數據集準確率: {correct}/{total} = {correct/total:.2%}")with open(f"{model_name_write}.txt", "a", encoding="utf-8") as f:f.write(f"No.{i}: {task_list[i]}({task_chinese_name_list[i]})數據集準確率: {correct}/{total} = {correct/total:.2%}\n\n")with open(f"{model_name_write}.txt", "a", encoding="utf-8") as f:f.write(f"總準確率: {sum_correct}/{sum_total} = {sum_correct/sum_total:.2%}\n\n")print(f"總準確率: {sum_correct}/{sum_total} = {sum_correct/sum_total:.2%}")# huihui_ai/qwen2.5-abliterate:7b-instruct-q4_K_M    
# qwen2.5:3b-instruct-q8_0                           
# qwen2.5:7b-instruct-q5_K_M                         
# deepseek-r1-7b:latest 
# test_split(model_name="qwen2.5:3b-instruct-q8_0")
# test_split(model_name="qwen2.5:7b-instruct-q5_K_M")
# test_split(model_name="huihui_ai/qwen2.5-abliterate:7b-instruct-q4_K_M")
# test_split(model_name="qwen2.5:1.5b")
# test_split(model_name="qwen2.5:1.5b-instruct-fp16")
# test_split(model_name="qwen2.5:3b")
# test_split(model_name="gemma3:4b")
# test_split(model_name="qwen2.5:7b")
# test_split(model_name="gemma3:4b-it-q8_0")
# test_split(model_name="qwen2.5:0.5b-instruct-fp16")
# test_split(model_name="qwen2.5:0.5b")test_split(model_name="deepseek-r1:1.5b")
# test_split(model_name="deepseek-r1:1.5b-qwen-distill-fp16")
# test_split(model_name="deepseek-r1:7b")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898278.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898278.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898278.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python IP解析器 ip2region使用

說明&#xff1a;最近需要在python項目內使用IP定位所在城市的需求&#xff0c;沒有采用向外部ISP服務商API請求獲取信息的方案&#xff0c;則翻了翻&#xff0c;在搞Java時很多的方案&#xff0c;在Python端反而可選擇范圍很小。 # 示例查詢 ips ["106.38.188.214"…

python開發訂單查詢功能(flask+orm bee)

1. 搭建python環境。 可以參考其它文檔。 此處python使用 3.12 IDE隨意&#xff0c;PyCharm 或 Eclipse PyDev也可以。 2. Flask 2.1 安裝Flask pip install Flask 2.2 一個最簡單的flask實例 創建一個工程&#xff0c; 新建一個 main.py文件&#xff0c; 輸入以下內容…

哈爾濱服務器租用托管流程

哈爾濱服務器租用托管流程可分為三個階段實施&#xff0c;具體操作如下&#xff1a; 一、前期準備階段 業務需求評估 明確計算資源需求&#xff1a;CPU核心數/線程數、內存容量、存儲類型(HDD/SSD/NVMe)及容量、帶寬標準(獨享/共享) 確定網絡架構要求&#xff1a;多線接入、國際…

音頻大語言模型可作為描述性語音質量評價器

論文《AUDIO LARGE LANGUAGE MODELS CAN BE DESCRIPTIVE SPEECH QUALITY EVALUATORS》學習 推動多模態代理從"能聽"到"懂好壞"的進化 摘要&#xff1a; . 研究背景與問題 核心內容&#xff1a;現有音頻大語言模型缺乏對輸入語音質量的感知能力&#xff…

CVPR2025自動駕駛端到端前沿論文匯總

自動駕駛 文章目錄 自動駕駛前言自動駕駛的軌跡預測論文端到端自動駕駛論文 前言 匯總CVPR2025自動駕駛前沿論文 自動駕駛的軌跡預測論文 Leveraging SD Map to Augment HD Map-based Trajectory PredictionModeSeq: Taming Sparse Multimodal Motion Prediction with Seque…

我在哪,要去哪

在直播間聽到一首好聽的歌《我在哪&#xff0c;要去哪》-湯倩。 遇見的事&#xff1a;21~24號抽調去招生。 感受到的情緒&#xff1a;公假嗎&#xff1f;給工作量嗎&#xff1f;月工作量不夠扣錢嗎&#xff1f;報銷方便嗎&#xff1f;有事情&#xff0c;從來不解決后顧&#x…

某快餐店用戶市場數據挖掘與可視化

1、必要庫的載入 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns2、加載并清洗數據 # 2.1 加載數據 df pd.read_csv(/home/mw/input/survey6263/mcdonalds.csv)# 2.2 數據清洗 # 2.2.1 檢查缺失值 print(缺失值情況&#xff1a;) print(df.isn…

Easysearch 索引生命周期管理實戰

如果你的使用場景是對時序型數據進行分析&#xff0c;可能你會更重視最新的數據&#xff0c;并且可能會定期對老舊的數據進行一些處理&#xff0c;比如減少副本數、forcemerge、 刪除等。Easysearch 的索引生命周期管理功能&#xff0c;可以自動完成此類索引的管理任務。 創建…

《心理學與生活》2025最新網課答案

《心理學與生活》2025最新網課答案 文章目錄 《心理學與生活》2025最新網課答案發展與教育單元測試情緒與情感單元測驗人格與動機單元測試感知與記憶單元測試文化與社會單元測試 發展與教育單元測試 題數 20 棉花糖實驗中哪些小孩長大后的表現更好&#xff08;&#xff09;。 …

Modbus通信協議基礎知識總結

1. 數據類型與存儲區分類 Modbus協議將數據分為四類存儲區&#xff0c;通過存儲區代號區分&#xff1a; 輸出線圈&#xff08;0x&#xff09;&#xff1a;可讀寫&#xff0c;對應二進制開關量&#xff08;如繼電器狀態&#xff09;&#xff0c;地址范圍000001-065536&#xff…

docker環境下安裝flink

前言 flink在實時計算領域中有著舉足輕重的地位。這篇文章來介紹一下&#xff0c;在linux的docker環境下&#xff0c;怎么快速安裝一個單機版本的flink。 操作流程 環境準備 檢查docker環境是不是正常&#xff0c;如果在拉取鏡像的時候比較慢&#xff0c;建議使用鏡像加速&…

LeetCode 2614.對角線上的質數:遍歷(質數判斷)

【LetMeFly】2614.對角線上的質數&#xff1a;遍歷(質數判斷) 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/prime-in-diagonal/ 給你一個下標從 0 開始的二維整數數組 nums 。 返回位于 nums 至少一條 對角線 上的最大 質數 。如果任一對角線上均不存在質數&…

MongoDB 只能存儲能夠序列化的數據(比如字符串、數字等),而 Python 的 UUID 對象并不是直接可以存入數據庫的格式。

1. UUID 對象是什么&#xff1f; UUID 是 “Universally Unique Identifier”&#xff08;通用唯一識別碼&#xff09;的縮寫&#xff0c;是一種 128 位的數字&#xff0c;用于在全局范圍內生成一個唯一的標識符。它常用于數據庫中的記錄標識、分布式系統中的對象標識等場景。…

linux 安全 xshell 使用

目錄和文件 ls -l 查看目錄和文件的權限的設置情況 加固方法 對于重要目錄&#xff0c;建議執行如下類似操作 Chmod -R 750 /etc/rc.d/init.d/* 這樣只有root可以讀寫和執行這個目錄下的腳本 新建了一個用戶Q 寫入了一些信息 發現在root用戶下可以進行文件打開 接下來用普通用…

自動駕駛背后的數學:特征提取中的線性變換與非線性激活

在上一篇博客「自動駕駛背后的數學&#xff1a;從傳感器數據到控制指令的函數嵌套」—— 揭秘人工智能中的線性函數、ReLU 與復合函數中&#xff0c;我們初步探討了自動駕駛技術中從傳感器數據到控制指令的函數嵌套流程&#xff0c;其中提到了特征提取模塊對傳感器數據進行線性…

楊校老師課堂之編程入門與軟件安裝【圖文筆記】

親愛的同學們&#xff0c;熱烈歡迎踏入青少年編程的奇妙世界&#xff01; 我是你們的授課老師楊校 &#xff0c;期待與大家一同開啟編程之旅。 1. 輕松叩開編程之門 1.1 程序的定義及生活中的應用 程序是人與計算機溝通的工具。在日常生活中&#xff0c;像手機里的各類 APP、電…

DeepSeek 3FS 與 JuiceFS:架構與特性比較

近期&#xff0c;DeepSeek 開源了其文件系統 Fire-Flyer File System (3FS)&#xff0c;使得文件系統這一有著 70 多年歷時的“古老”的技術&#xff0c;又獲得了各方的關注。在 AI 業務中&#xff0c;企業需要處理大量的文本、圖像、視頻等非結構化數據&#xff0c;還需要應對…

Coco AI 智能檢索 Hugo Blog 集成指南

在此前的文章中&#xff0c;我們介紹了如何使用 Coco Server 連接 Notion&#xff0c;實現智能內容檢索。本次&#xff0c;我們將進一步探索如何在 Coco Server 最新版本 中集成 Hugo Site&#xff0c;以便對 Hugo 站點 進行高效檢索。 Coco Server 部署方式 要在本地或服務器…

Mobile-Agent-V:通過視頻引導的多智體協作學習移動設備操作

25年2月來自北京交大和阿里巴巴公司的論文“Mobile-Agent-V: Learning Mobile Device Operation Through Video-Guided Multi-Agent Collaboration”。 移動設備使用量的快速增長&#xff0c;迫切需要改進自動化以實現無縫任務管理。然而&#xff0c;因缺乏操作知識&#xff0…

電魚智能EFISH-RK3576-SBC工控板已適配Android 14系統

EFISH-RK3576-SBC工控板此前已提供了Linux 6.1.57系統&#xff0c;為了滿足更多客戶的需求&#xff0c;電魚智能近日又為其成功適配了Android 14系統——硬件性能卓越的核心板與Android 14的深度組合&#xff0c;將為用戶帶來更加流暢、開放、智能的使用體驗。 一、高性能處理器…