亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

從零構(gòu)建LLM基準(zhǔn)測(cè)試工具:Ed-O-Meter實(shí)踐指南

從零構(gòu)建LLM基準(zhǔn)測(cè)試工具:Ed-O-Meter實(shí)踐指南 這次我們來看一個(gè)名為“Ed-O-Meter”的LLM基準(zhǔn)測(cè)試工具。它不是另一個(gè)龐大的評(píng)測(cè)榜單而是一個(gè)開發(fā)者視角下的、用于構(gòu)建和運(yùn)行自定義大語言模型評(píng)測(cè)的實(shí)踐框架。核心在于它讓你能脫離對(duì)現(xiàn)有評(píng)測(cè)平臺(tái)如OpenAI Evals、LMSys Arena的依賴根據(jù)自己的需求快速搭建一套從數(shù)據(jù)準(zhǔn)備、模型調(diào)用到結(jié)果分析的本地化評(píng)測(cè)流水線。對(duì)于開發(fā)者、研究者和技術(shù)決策者而言大模型評(píng)測(cè)常常面臨幾個(gè)痛點(diǎn)公開榜單的測(cè)試集可能不匹配業(yè)務(wù)場(chǎng)景調(diào)用商業(yè)API如OpenAI、Anthropic評(píng)測(cè)成本高且存在隱私風(fēng)險(xiǎn)而使用開源評(píng)測(cè)框架如lm-evaluation-harness又可能面臨環(huán)境配置復(fù)雜、擴(kuò)展性不足的問題。Ed-O-Meter正是試圖解決這些“最后一公里”的問題它強(qiáng)調(diào)輕量、可定制和本地化運(yùn)行讓你能圍繞自己的“私有”問題集對(duì)本地部署的模型或通過API訪問的模型進(jìn)行可控、可復(fù)現(xiàn)的評(píng)估。本文將帶你深入理解如何構(gòu)建自己的LLM Benchmark。我們會(huì)從Ed-O-Meter的核心設(shè)計(jì)理念出發(fā)拆解一個(gè)基準(zhǔn)測(cè)試工具需要具備哪些模塊如任務(wù)定義、模型適配、評(píng)估器、結(jié)果可視化然后提供一套從零開始的實(shí)踐指南。重點(diǎn)不在于復(fù)現(xiàn)一個(gè)完全一樣的“Ed-O-Meter”而在于掌握自建評(píng)測(cè)體系的方法論和關(guān)鍵技術(shù)棧讓你能根據(jù)手頭的資源無論是單張消費(fèi)級(jí)顯卡還是僅能調(diào)用云端API搭建起符合自己需求的模型能力度量衡。1. 核心能力速覽自建LLM基準(zhǔn)測(cè)試需要什么在開始動(dòng)手之前我們先明確一個(gè)自建評(píng)測(cè)工具的核心能力構(gòu)成。下表概括了關(guān)鍵組件及其在Ed-O-Meter這類工具中的典型實(shí)現(xiàn)方式能力項(xiàng)說明與典型實(shí)現(xiàn)評(píng)測(cè)目標(biāo)評(píng)估模型在特定任務(wù)如代碼生成、邏輯推理、領(lǐng)域問答上的性能而非追求通用排行榜。任務(wù)與數(shù)據(jù)集支持自定義JSONL、CSV等格式的數(shù)據(jù)集。核心是定義清晰的“輸入-預(yù)期輸出”對(duì)并可包含多輪對(duì)話、上下文等復(fù)雜結(jié)構(gòu)。模型接入支持多種模型調(diào)用方式1.本地模型通過Transformers庫加載Hugging Face模型支持CPU/GPU推理。2.開源API調(diào)用OpenAI兼容接口如LocalAI、vLLM、Ollama部署的服務(wù)。3.商業(yè)API集成OpenRouter、Together AI等聚合平臺(tái)或直接調(diào)用OpenAI、Anthropic等原生API。評(píng)估器提供多種評(píng)估方式1.精確匹配/模糊匹配判斷輸出是否包含關(guān)鍵詞或與參考答案一致。2.基于模型的評(píng)估使用另一個(gè)LLM如GPT-4作為裁判來評(píng)分。3.代碼執(zhí)行對(duì)于代碼生成任務(wù)在沙箱中運(yùn)行生成代碼并驗(yàn)證結(jié)果。流水線與并發(fā)支持任務(wù)并行化以加速評(píng)測(cè)過程。例如使用異步IO或線程池同時(shí)評(píng)估多個(gè)樣本并管理API的速率限制。結(jié)果分析與可視化自動(dòng)生成評(píng)測(cè)報(bào)告包括準(zhǔn)確率、得分分布、耗時(shí)統(tǒng)計(jì)等并支持圖表如柱狀圖、散點(diǎn)圖展示模型對(duì)比結(jié)果。硬件門檻高度靈活。如果僅評(píng)測(cè)商業(yè)API只需網(wǎng)絡(luò)和API密鑰如果評(píng)測(cè)本地模型則依賴模型大小和顯卡顯存。小模型7B可在消費(fèi)級(jí)顯卡如RTX 4060 Ti 16G上運(yùn)行大模型可能需要多卡或降精度。輸出與持久化將每次評(píng)測(cè)的詳細(xì)輸入輸出、模型響應(yīng)、評(píng)估得分和元數(shù)據(jù)如耗時(shí)、token數(shù)保存為結(jié)構(gòu)化文件如JSONL確保實(shí)驗(yàn)可復(fù)現(xiàn)。2. 適用場(chǎng)景與使用邊界自建評(píng)測(cè)體系并非要取代MMLU、HELM、Open LLM Leaderboard等權(quán)威基準(zhǔn)而是在特定場(chǎng)景下提供不可替代的價(jià)值。它最適合以下場(chǎng)景業(yè)務(wù)場(chǎng)景驗(yàn)證你的產(chǎn)品需要模型處理特定格式的工單、生成特定風(fēng)格的文案或回答領(lǐng)域知識(shí)問題。你需要一個(gè)私有的測(cè)試集來驗(yàn)證不同模型在此場(chǎng)景下的表現(xiàn)。模型選型與迭代在采購或微調(diào)模型前需要在一個(gè)固定、可控的測(cè)試集上橫向?qū)Ρ榷鄠€(gè)候選模型開源vs.商業(yè)不同尺寸的同一系列模型的性能和成本。提示工程優(yōu)化你需要量化評(píng)估不同提示詞模板、系統(tǒng)指令對(duì)模型輸出質(zhì)量和穩(wěn)定性的影響。低成本持續(xù)監(jiān)控在模型服務(wù)上線后建立一套自動(dòng)化回歸測(cè)試監(jiān)控模型更新或服務(wù)波動(dòng)是否導(dǎo)致關(guān)鍵任務(wù)性能下降。它的局限與邊界不代表通用智能自定義評(píng)測(cè)結(jié)果僅反映模型在你所定義任務(wù)上的能力不能直接推論其通用能力強(qiáng)弱。評(píng)估器本身可能存在偏差尤其是使用“LLM-as-a-Judge”時(shí)裁判模型本身的偏好會(huì)影響結(jié)果需要謹(jǐn)慎設(shè)計(jì)評(píng)分規(guī)則。工程復(fù)雜度雖然Ed-O-Meter追求輕量但構(gòu)建一個(gè)健壯、可擴(kuò)展的評(píng)測(cè)框架仍然涉及分布式任務(wù)調(diào)度、錯(cuò)誤處理、結(jié)果緩存等工程問題。數(shù)據(jù)與評(píng)估標(biāo)準(zhǔn)定義最大的挑戰(zhàn)往往不是工具而是如何設(shè)計(jì)高質(zhì)量、無歧義的測(cè)試問題和客觀的評(píng)估標(biāo)準(zhǔn)。合規(guī)與倫理提醒數(shù)據(jù)安全如果你的測(cè)試集包含敏感或私有數(shù)據(jù)務(wù)必僅在本地或可信的私有環(huán)境中運(yùn)行評(píng)測(cè)避免數(shù)據(jù)通過API泄露給第三方。版權(quán)與授權(quán)構(gòu)建測(cè)試集時(shí)確保使用的數(shù)據(jù)不侵犯版權(quán)。對(duì)于模型生成的內(nèi)容特別是用于商業(yè)用途時(shí)需留意模型許可證對(duì)生成內(nèi)容的規(guī)定。公平性與偏見注意測(cè)試集是否無意中包含了性別、種族、文化等方面的偏見這可能導(dǎo)致評(píng)測(cè)結(jié)果不公或放大模型的有害輸出。3. 環(huán)境準(zhǔn)備與前置條件開始構(gòu)建之前你需要準(zhǔn)備好開發(fā)環(huán)境和基礎(chǔ)工具鏈。以下是一個(gè)通用的環(huán)境清單操作系統(tǒng)Linux (Ubuntu 20.04)、macOS 或 Windows (WSL2推薦)。Linux環(huán)境在依賴管理和GPU支持上通常更順暢。編程語言Python 3.9。這是LLM生態(tài)系統(tǒng)的通用語言。包管理工具pip和venv(或conda)。強(qiáng)烈建議使用虛擬環(huán)境隔離項(xiàng)目依賴。版本控制Git。用于管理你的評(píng)測(cè)代碼、測(cè)試集和結(jié)果。硬件與驅(qū)動(dòng)如需評(píng)測(cè)本地模型GPUNVIDIA GPU (如RTX 3060 12G, RTX 4090等) 將極大加速推理。顯存需求取決于模型參數(shù)量例如量化后的7B模型可能只需6-8GB顯存。CUDA Toolkit版本需與PyTorch版本匹配如CUDA 11.8或12.1。顯卡驅(qū)動(dòng)保持最新以獲得最佳兼容性。核心Python庫我們將分層次安裝?;A(chǔ)框架與異步fastapi(用于構(gòu)建簡(jiǎn)單的API服務(wù)可選)httpx(用于異步HTTP請(qǐng)求調(diào)用API時(shí)關(guān)鍵)pydantic(用于數(shù)據(jù)驗(yàn)證)。模型本地推理torch,transformers,accelerate(用于優(yōu)化模型加載和推理)??蛇xbitsandbytes(用于4/8比特量化)vllm(用于高性能推理)。評(píng)估與數(shù)據(jù)處理datasets(來自Hugging Face方便加載公開數(shù)據(jù)集作為起點(diǎn))pandas,numpy。結(jié)果可視化matplotlib,seaborn。配置管理python-dotenv(用于管理API密鑰等環(huán)境變量)。你可以創(chuàng)建一個(gè)requirements.txt文件來管理依賴# 核心依賴 httpx0.25.0 pydantic2.0 python-dotenv1.0.0 pandas2.0 numpy1.24 # 本地模型推理 (根據(jù)需求選擇) # torch 版本需與CUDA匹配請(qǐng)?jiān)L問 https://pytorch.org/get-started/locally/ 獲取正確命令 # transformers4.36.0 # accelerate0.25.0 # 可視化 matplotlib3.7.0 seaborn0.12.0 # 可選API服務(wù)器框架 # fastapi0.104.0 # uvicorn[standard]0.24.0使用以下命令創(chuàng)建虛擬環(huán)境并安裝依賴# 創(chuàng)建并激活虛擬環(huán)境 python -m venv venv # Linux/macOS source venv/bin/activate # Windows # venv\Scripts\activate # 安裝依賴 pip install -r requirements.txt4. 設(shè)計(jì)你的評(píng)測(cè)流水線從數(shù)據(jù)到報(bào)告Ed-O-Meter的核心是一個(gè)可執(zhí)行的流水線。我們將其拆解為幾個(gè)可復(fù)用的模塊來設(shè)計(jì)和實(shí)現(xiàn)。4.1 定義任務(wù)與數(shù)據(jù)集格式首先你需要定義評(píng)測(cè)任務(wù)。一個(gè)最簡(jiǎn)單的任務(wù)可以是一個(gè)問答對(duì)。我們使用Pydantic模型來定義數(shù)據(jù)結(jié)構(gòu)和評(píng)估配置確保類型安全。創(chuàng)建一個(gè)schemas.py文件from pydantic import BaseModel, Field from typing import List, Dict, Any, Optional from enum import Enum class DifficultyLevel(str, Enum): EASY easy MEDIUM medium HARD hard class EvaluationSample(BaseModel): 一個(gè)評(píng)測(cè)樣本 id: str Field(..., description樣本唯一ID) input: str Field(..., description模型的輸入如問題、指令) reference: Optional[str] Field(None, description參考答案可選用于精確匹配評(píng)估) context: Optional[str] Field(None, description額外的上下文信息) metadata: Dict[str, Any] Field(default_factorydict, description元數(shù)據(jù)如難度、類別) class EvaluationTask(BaseModel): 一個(gè)評(píng)測(cè)任務(wù)定義 name: str Field(..., description任務(wù)名稱如代碼調(diào)試) description: str Field(..., description任務(wù)描述) samples: List[EvaluationSample] Field(..., description評(píng)測(cè)樣本列表) evaluator_config: Dict[str, Any] Field(default_factorydict, description評(píng)估器配置)然后你可以將測(cè)試集保存為JSONL格式每行一個(gè)JSON對(duì)象便于流式讀取和處理。# data/my_coding_test.jsonl {id: code_001, input: 寫一個(gè)Python函數(shù)計(jì)算斐波那契數(shù)列的第n項(xiàng)。, reference: def fib(n):\n if n 1:\n return n\n a, b 0, 1\n for _ in range(n-1):\n a, b b, ab\n return b, metadata: {category: algorithm, difficulty: easy}} {id: code_002, input: 以下SQL查詢有什么問題 SELECT * FROM users WHERE name NULL;, reference: NULL值判斷應(yīng)使用 IS NULL 而非 NULL。正確寫法SELECT * FROM users WHERE name IS NULL;, metadata: {category: sql, difficulty: medium}}4.2 實(shí)現(xiàn)模型調(diào)用適配器為了統(tǒng)一調(diào)用不同后端的模型我們需要一個(gè)適配器模式。創(chuàng)建一個(gè)model_adapters.py文件import os from abc import ABC, abstractmethod from typing import AsyncGenerator, Optional import httpx from openai import OpenAI, AsyncOpenAI # 需要安裝 openai 庫 # 如需本地模型取消以下導(dǎo)入注釋 # from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline # import torch class ModelAdapter(ABC): 模型適配器抽象基類 def __init__(self, model_name: str, **kwargs): self.model_name model_name self.config kwargs abstractmethod async def generate(self, prompt: str, **generation_kwargs) - str: 生成文本 pass class OpenAIModelAdapter(ModelAdapter): OpenAI 兼容API適配器 (包括OpenAI, Azure, OpenRouter等) def __init__(self, model_name: str, api_key: str, base_url: Optional[str] None): super().__init__(model_name) self.client AsyncOpenAI(api_keyapi_key, base_urlbase_url) async def generate(self, prompt: str, **kwargs) - str: try: response await self.client.chat.completions.create( modelself.model_name, messages[{role: user, content: prompt}], **kwargs ) return response.choices[0].message.content.strip() except Exception as e: return f[API Error: {str(e)}] class LocalHuggingFaceModelAdapter(ModelAdapter): 本地Hugging Face模型適配器 def __init__(self, model_name: str, device: str cuda:0, **kwargs): super().__init__(model_name) self.device device # 注意在實(shí)際項(xiàng)目中模型加載應(yīng)放在單獨(dú)的方法中避免阻塞事件循環(huán) # 這里為示例簡(jiǎn)化處理 print(fLoading model {model_name}...) # self.tokenizer AutoTokenizer.from_pretrained(model_name) # self.model AutoModelForCausalLM.from_pretrained( # model_name, # torch_dtypetorch.float16, # device_mapauto if device.startswith(cuda) else None, # **kwargs # ) # self.pipeline pipeline( # text-generation, # modelself.model, # tokenizerself.tokenizer, # device0 if device.startswith(cuda) else -1, # ) print(Model loaded (simulated).) async def generate(self, prompt: str, **kwargs) - str: # 實(shí)際調(diào)用 pipeline # results self.pipeline(prompt, **kwargs) # return results[0][generated_text] # 模擬返回 return f[Local Model Simulated Output for: {prompt[:50]}...] # 適配器工廠函數(shù) def get_model_adapter(adapter_type: str, model_name: str, **config) - ModelAdapter: if adapter_type openai: api_key config.get(api_key, os.getenv(OPENAI_API_KEY)) base_url config.get(base_url, None) return OpenAIModelAdapter(model_name, api_key, base_url) elif adapter_type local_hf: device config.get(device, cuda:0) return LocalHuggingFaceModelAdapter(model_name, device, **config) else: raise ValueError(fUnsupported adapter type: {adapter_type})4.3 實(shí)現(xiàn)評(píng)估器評(píng)估器負(fù)責(zé)對(duì)比模型輸出和預(yù)期結(jié)果。創(chuàng)建一個(gè)evaluators.py文件import re from typing import Tuple, Optional class ExactMatchEvaluator: 精確匹配評(píng)估器 def evaluate(self, prediction: str, reference: str) - Tuple[bool, float]: 返回 (是否匹配, 得分) is_correct prediction.strip() reference.strip() score 1.0 if is_correct else 0.0 return is_correct, score class ContainsKeywordEvaluator: 關(guān)鍵詞匹配評(píng)估器 def __init__(self, keywords: list): self.keywords [k.lower() for k in keywords] def evaluate(self, prediction: str, reference: Optional[str] None) - Tuple[bool, float]: pred_lower prediction.lower() found_keywords [kw for kw in self.keywords if kw in pred_lower] score len(found_keywords) / len(self.keywords) if self.keywords else 0.0 is_acceptable score 0.5 # 自定義閾值 return is_acceptable, score class LLMAsJudgeEvaluator: 使用LLM作為裁判進(jìn)行評(píng)估需接入另一個(gè)模型API def __init__(self, judge_model_adapter): self.judge judge_model_adapter async def evaluate(self, question: str, prediction: str, reference: Optional[str] None) - Tuple[bool, float]: prompt f 你是一個(gè)公正的裁判。請(qǐng)?jiān)u估以下回答對(duì)問題的解決程度。 問題{question} 回答{prediction} {參考答案 reference if reference else } 請(qǐng)從準(zhǔn)確性、完整性和清晰度三個(gè)方面考慮給出一個(gè)0到10的分?jǐn)?shù)只需輸出數(shù)字。 分?jǐn)?shù) try: score_text await self.judge.generate(prompt, max_tokens10, temperature0) score float(score_text.strip()) normalized_score score / 10.0 is_acceptable normalized_score 0.7 return is_acceptable, normalized_score except: return False, 0.0 def get_evaluator(evaluator_type: str, **config): if evaluator_type exact_match: return ExactMatchEvaluator() elif evaluator_type contains_keyword: return ContainsKeywordEvaluator(config.get(keywords, [])) elif evaluator_type llm_judge: # 需要傳入一個(gè)配置好的裁判模型適配器 judge_adapter config.get(judge_model_adapter) if not judge_adapter: raise ValueError(LLM judge requires a judge_model_adapter) return LLMAsJudgeEvaluator(judge_adapter) else: raise ValueError(fUnknown evaluator type: {evaluator_type})4.4 組裝評(píng)測(cè)引擎與并發(fā)執(zhí)行現(xiàn)在我們將所有組件組裝起來并利用異步IO實(shí)現(xiàn)并發(fā)評(píng)測(cè)以提高效率。創(chuàng)建evaluation_engine.pyimport asyncio import json import aiofiles from typing import List, Dict, Any from tqdm.asyncio import tqdm_asyncio # 需要安裝 tqdm from schemas import EvaluationTask, EvaluationSample from model_adapters import get_model_adapter from evaluators import get_evaluator class EvaluationEngine: def __init__(self, task: EvaluationTask, model_adapter_config: Dict[str, Any], evaluator_config: Dict[str, Any]): self.task task self.model_adapter get_model_adapter(**model_adapter_config) self.evaluator get_evaluator(**evaluator_config) async def evaluate_sample(self, sample: EvaluationSample) - Dict[str, Any]: 評(píng)估單個(gè)樣本 try: # 1. 調(diào)用模型生成 prediction await self.model_adapter.generate(sample.input) # 2. 評(píng)估結(jié)果 if hasattr(self.evaluator, evaluate) and asyncio.iscoroutinefunction(self.evaluator.evaluate): # 異步評(píng)估器如LLM-as-Judge is_correct, score await self.evaluator.evaluate(sample.input, prediction, sample.reference) else: # 同步評(píng)估器 is_correct, score self.evaluator.evaluate(prediction, sample.reference) return { id: sample.id, input: sample.input, prediction: prediction, reference: sample.reference, is_correct: is_correct, score: score, metadata: sample.metadata, error: None } except Exception as e: return { id: sample.id, input: sample.input, prediction: None, reference: sample.reference, is_correct: False, score: 0.0, metadata: sample.metadata, error: str(e) } async def run(self, max_concurrent: int 5) - List[Dict[str, Any]]: 并發(fā)運(yùn)行整個(gè)評(píng)測(cè)任務(wù) semaphore asyncio.Semaphore(max_concurrent) # 控制最大并發(fā)數(shù)避免API限流 async def evaluate_with_semaphore(sample): async with semaphore: return await self.evaluate_sample(sample) tasks [evaluate_with_semaphore(sample) for sample in self.task.samples] results [] # 使用tqdm顯示進(jìn)度 for f in tqdm_asyncio.as_completed(tasks, totallen(tasks), descfEvaluating {self.task.name}): result await f results.append(result) return results staticmethod async def save_results(results: List[Dict[str, Any]], output_path: str): 保存結(jié)果到JSONL文件 async with aiofiles.open(output_path, w, encodingutf-8) as f: for result in results: await f.write(json.dumps(result, ensure_asciiFalse) \n) print(fResults saved to {output_path})5. 功能測(cè)試與效果驗(yàn)證運(yùn)行你的第一個(gè)評(píng)測(cè)現(xiàn)在讓我們用一套簡(jiǎn)單的測(cè)試集來驗(yàn)證整個(gè)流水線。假設(shè)我們想測(cè)試模型回答簡(jiǎn)單Python編程問題的能力。5.1 準(zhǔn)備測(cè)試集創(chuàng)建文件run_evaluation.py作為主入口import asyncio import json from schemas import EvaluationTask, EvaluationSample from evaluation_engine import EvaluationEngine def load_task_from_jsonl(file_path: str, task_name: str, task_description: str) - EvaluationTask: samples [] with open(file_path, r, encodingutf-8) as f: for line in f: data json.loads(line) samples.append(EvaluationSample(**data)) return EvaluationTask(nametask_name, descriptiontask_description, samplessamples) async def main(): # 1. 加載評(píng)測(cè)任務(wù) task load_task_from_jsonl( data/my_coding_test.jsonl, task_namePython編程基礎(chǔ)測(cè)試, task_description測(cè)試模型對(duì)基礎(chǔ)Python編程問題的解答能力。 ) print(fLoaded task: {task.name} with {len(task.samples)} samples.) # 2. 配置模型適配器 (示例使用OpenRouter的Claude 3 Haiku) model_adapter_config { adapter_type: openai, model_name: claude-3-haiku-20240307, # 在OpenRouter上的模型名 api_key: your_openrouter_api_key_here, # 務(wù)必從環(huán)境變量讀取 base_url: https://openrouter.ai/api/v1 # OpenRouter端點(diǎn) } # 本地模型配置示例 # model_adapter_config { # adapter_type: local_hf, # model_name: Qwen/Qwen2.5-7B-Instruct, # device: cuda:0 # } # 3. 配置評(píng)估器 (使用精確匹配) evaluator_config { evaluator_type: exact_match } # 關(guān)鍵詞匹配示例 # evaluator_config { # evaluator_type: contains_keyword, # keywords: [def, return, fibonacci] # } # 4. 初始化引擎并運(yùn)行 engine EvaluationEngine(task, model_adapter_config, evaluator_config) results await engine.run(max_concurrent3) # 控制并發(fā)避免觸發(fā)速率限制 # 5. 保存結(jié)果 await EvaluationEngine.save_results(results, results/coding_test_results.jsonl) # 6. 簡(jiǎn)單分析 correct_count sum(1 for r in results if r.get(is_correct)) total_count len(results) accuracy correct_count / total_count if total_count 0 else 0 print(f\n Evaluation Summary ) print(fTask: {task.name}) print(fTotal Samples: {total_count}) print(fCorrect: {correct_count}) print(fAccuracy: {accuracy:.2%}) # 可以打印一些錯(cuò)誤案例 print(\n--- Error Cases (first 3) ---) for r in results: if not r.get(is_correct) and r[error] is None: print(fID: {r[id]}) print(fInput: {r[input][:100]}...) print(fPrediction: {r[prediction][:100]}...) print(fReference: {r[reference]}) print(- * 40) if __name__ __main__: asyncio.run(main())5.2 運(yùn)行與結(jié)果分析在運(yùn)行前請(qǐng)確保將your_openrouter_api_key_here替換為你的真實(shí)API密鑰建議通過環(huán)境變量OPENROUTER_API_KEY設(shè)置。創(chuàng)建data/和results/目錄。將之前定義的my_coding_test.jsonl文件放入data/目錄。在終端執(zhí)行python run_evaluation.py如果一切正常你將看到進(jìn)度條并在結(jié)束后看到總結(jié)輸出。結(jié)果文件results/coding_test_results.jsonl會(huì)保存每個(gè)樣本的詳細(xì)輸入、輸出和得分。預(yù)期輸出與成功標(biāo)準(zhǔn)成功腳本無報(bào)錯(cuò)運(yùn)行完畢輸出總結(jié)信息并在results/目錄下生成.jsonl文件。文件內(nèi)容應(yīng)包含id,input,prediction,is_correct,score等字段。失敗排查API連接錯(cuò)誤檢查網(wǎng)絡(luò)、API密鑰是否正確、API服務(wù)端點(diǎn)base_url是否可達(dá)。模塊導(dǎo)入錯(cuò)誤檢查requirements.txt是否安裝完全虛擬環(huán)境是否激活。文件未找到錯(cuò)誤檢查數(shù)據(jù)文件路徑是否正確。并發(fā)錯(cuò)誤或速率限制如果調(diào)用商業(yè)API降低max_concurrent參數(shù)值或添加請(qǐng)求間隔。6. 接口API與批量任務(wù)擴(kuò)展基礎(chǔ)的流水線完成后我們可以將其封裝成服務(wù)以便其他系統(tǒng)調(diào)用或處理更復(fù)雜的批量任務(wù)。6.1 構(gòu)建簡(jiǎn)易評(píng)測(cè)API服務(wù)使用FastAPI我們可以快速創(chuàng)建一個(gè)接收評(píng)測(cè)任務(wù)并返回結(jié)果的HTTP服務(wù)。創(chuàng)建api_server.pyfrom fastapi import FastAPI, HTTPException, BackgroundTasks from pydantic import BaseModel from typing import List, Optional import uuid import asyncio from evaluation_engine import EvaluationEngine from schemas import EvaluationTask, EvaluationSample # 假設(shè)已有 get_model_adapter, get_evaluator 等函數(shù) app FastAPI(titleEd-O-Meter API, descriptionA simple LLM benchmark API service) # 內(nèi)存中存儲(chǔ)任務(wù)狀態(tài)生產(chǎn)環(huán)境應(yīng)使用數(shù)據(jù)庫 tasks_status {} class EvaluationRequest(BaseModel): samples: List[dict] # 每個(gè)dict對(duì)應(yīng)一個(gè)EvaluationSample的字段 model_adapter_config: dict evaluator_config: dict task_name: str API Evaluation task_description: str app.post(/evaluate/, status_code202) async def create_evaluation_job(request: EvaluationRequest, background_tasks: BackgroundTasks): 提交一個(gè)評(píng)測(cè)任務(wù)異步執(zhí)行 job_id str(uuid.uuid4()) tasks_status[job_id] {status: pending, result: None, error: None} # 將任務(wù)放入后臺(tái)執(zhí)行 background_tasks.add_task(run_evaluation_job, job_id, request) return {job_id: job_id, status: accepted, message: fEvaluation job {job_id} is queued.} app.get(/evaluate/{job_id}) async def get_evaluation_result(job_id: str): 獲取評(píng)測(cè)任務(wù)結(jié)果 if job_id not in tasks_status: raise HTTPException(status_code404, detailJob not found) status_info tasks_status[job_id] if status_info[status] pending: return {job_id: job_id, status: pending} elif status_info[status] failed: return {job_id: job_id, status: failed, error: status_info[error]} else: # completed # 注意實(shí)際生產(chǎn)環(huán)境結(jié)果應(yīng)存于數(shù)據(jù)庫或文件這里簡(jiǎn)化返回 return { job_id: job_id, status: completed, result_summary: { total: len(status_info[result]), correct: sum(1 for r in status_info[result] if r.get(is_correct)), accuracy: sum(1 for r in status_info[result] if r.get(is_correct)) / len(status_info[result]) if status_info[result] else 0 } # 可考慮分頁返回詳細(xì)結(jié)果或提供下載鏈接 } async def run_evaluation_job(job_id: str, request: EvaluationRequest): 后臺(tái)執(zhí)行評(píng)測(cè)任務(wù) try: samples [EvaluationSample(**s) for s in request.samples] task EvaluationTask( namerequest.task_name, descriptionrequest.task_description, samplessamples ) engine EvaluationEngine(task, request.model_adapter_config, request.evaluator_config) results await engine.run(max_concurrent3) tasks_status[job_id] {status: completed, result: results, error: None} # 可選將結(jié)果持久化到文件或數(shù)據(jù)庫 await EvaluationEngine.save_results(results, fresults/api_job_{job_id}.jsonl) except Exception as e: tasks_status[job_id] {status: failed, result: None, error: str(e)} if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)啟動(dòng)服務(wù)uvicorn api_server:app --reload --host 0.0.0.0 --port 8000然后可以使用curl或 Python 客戶端提交任務(wù)curl -X POST http://127.0.0.1:8000/evaluate/ \ -H Content-Type: application/json \ -d { task_name: Quick Test, samples: [ {id: 1, input: Capital of France?, reference: Paris}, {id: 2, input: 11?, reference: 2} ], model_adapter_config: { adapter_type: openai, model_name: gpt-3.5-turbo, api_key: $OPENAI_API_KEY, base_url: https://api.openai.com/v1 }, evaluator_config: { evaluator_type: exact_match } }6.2 設(shè)計(jì)批量任務(wù)隊(duì)列對(duì)于海量評(píng)測(cè)任務(wù)需要更健壯的隊(duì)列系統(tǒng)。一個(gè)簡(jiǎn)單的實(shí)現(xiàn)是使用asyncio.Queue結(jié)合數(shù)據(jù)庫記錄狀態(tài)。更復(fù)雜的生產(chǎn)環(huán)境可以考慮CeleryRedis或RQ。核心思路是將待評(píng)測(cè)樣本放入隊(duì)列。多個(gè)工作協(xié)程從隊(duì)列中消費(fèi)樣本調(diào)用模型并評(píng)估。將結(jié)果寫入數(shù)據(jù)庫并更新任務(wù)狀態(tài)。提供API查詢進(jìn)度和下載結(jié)果。這超出了本文范圍但它是構(gòu)建可擴(kuò)展評(píng)測(cè)平臺(tái)的關(guān)鍵一步。7. 資源占用與性能觀察評(píng)測(cè)系統(tǒng)的性能取決于你選擇的模型和運(yùn)行方式。1. 評(píng)測(cè)商業(yè)API如OpenAI, OpenRouter資源占用主要消耗網(wǎng)絡(luò)I/O和內(nèi)存用于存儲(chǔ)請(qǐng)求和結(jié)果。CPU/GPU壓力很小。性能瓶頸API的速率限制RPM/TPM和網(wǎng)絡(luò)延遲是主要瓶頸。需要通過max_concurrent參數(shù)控制并發(fā)數(shù)并考慮實(shí)現(xiàn)指數(shù)退避的重試機(jī)制。成本成本與評(píng)測(cè)樣本數(shù)量、輸入輸出token總數(shù)直接相關(guān)。在運(yùn)行大規(guī)模評(píng)測(cè)前建議用小批量樣本估算成本。2. 評(píng)測(cè)本地模型顯存占用這是最主要的資源瓶頸。顯存占用大致等于模型參數(shù)量以字節(jié)計(jì)乘以精度如FP16是2字節(jié)INT8是1字節(jié)再加上激活值和中間結(jié)果的開銷。例如一個(gè)7B參數(shù)的FP16模型僅參數(shù)就需要約14GB顯存。通過量化如GPTQ, AWQ, GGUF可以大幅降低顯存需求使大模型在消費(fèi)級(jí)顯卡上運(yùn)行成為可能。觀察方法在Linux上可以使用nvidia-smi命令實(shí)時(shí)查看顯存占用。在代碼中可以使用torch.cuda.memory_allocated()進(jìn)行監(jiān)控。性能優(yōu)化量化使用bitsandbytes進(jìn)行4/8比特量化或加載預(yù)量化的GGUF模型。批處理如果評(píng)估器支持可以一次給模型輸入多個(gè)樣本進(jìn)行批處理推理能顯著提升吞吐量。使用高性能推理引擎如vLLM支持PagedAttention和連續(xù)批處理或TGIText Generation Inference它們能極大優(yōu)化推理速度和吞吐量。CPU推理對(duì)于小模型或?qū)ρ舆t不敏感的任務(wù)可以使用CPU推理但速度會(huì)慢很多。8. 常見問題與排查方法在構(gòu)建和運(yùn)行自定義評(píng)測(cè)時(shí)你可能會(huì)遇到以下問題問題現(xiàn)象可能原因排查方式解決方案API調(diào)用返回429錯(cuò)誤觸發(fā)了速率限制。查看API返回的錯(cuò)誤信息檢查并發(fā)請(qǐng)求數(shù)。降低max_concurrent參數(shù)在請(qǐng)求間添加隨機(jī)延遲實(shí)現(xiàn)帶退避的重試邏輯。本地模型加載失敗或OOM顯存不足模型文件損壞CUDA版本不匹配。檢查nvidia-smi顯存占用確認(rèn)模型文件完整檢查PyTorch CUDA版本torch.cuda.is_available()。嘗試量化模型使用更小的模型清理顯存中其他進(jìn)程確保CUDA、PyTorch、顯卡驅(qū)動(dòng)版本兼容。評(píng)估結(jié)果全部為0或不準(zhǔn)評(píng)估器配置錯(cuò)誤參考答案格式與預(yù)測(cè)格式不匹配。打印幾個(gè)樣本的prediction和reference進(jìn)行人工比對(duì)檢查評(píng)估器邏輯。調(diào)整評(píng)估器邏輯如改為模糊匹配、去除空格使用LLM-as-Judge進(jìn)行更靈活的評(píng)估。異步任務(wù)卡住或無響應(yīng)事件循環(huán)阻塞某個(gè)請(qǐng)求超時(shí)未設(shè)置超時(shí)時(shí)間。使用asyncio.wait_for為每個(gè)請(qǐng)求設(shè)置超時(shí)檢查是否有同步代碼在異步函數(shù)中運(yùn)行。為所有網(wǎng)絡(luò)請(qǐng)求添加超時(shí)參數(shù)將CPU密集型操作放到線程池中執(zhí)行。結(jié)果文件未生成或?yàn)榭瘴募窂綑?quán)限問題程序在寫入前異常退出。檢查目標(biāo)目錄是否存在且可寫在save_results函數(shù)中添加更詳細(xì)的日志。確保程序有寫入權(quán)限使用try...except捕獲寫入異常考慮先寫入臨時(shí)文件再重命名。“LLM-as-Judge”評(píng)分不穩(wěn)定裁判模型本身有波動(dòng)性提示詞設(shè)計(jì)不佳。用相同問題多次請(qǐng)求裁判模型觀察分?jǐn)?shù)波動(dòng)審查裁判提示詞是否清晰、無歧義。在提示詞中要求裁判模型輸出評(píng)分理由對(duì)同一回答進(jìn)行多次評(píng)分取平均使用更強(qiáng)大的裁判模型如GPT-4。9. 最佳實(shí)踐與使用建議基于“Ed-O-Meter”的設(shè)計(jì)理念以下建議能幫助你更高效、可靠地使用自建評(píng)測(cè)體系始于小規(guī)模驗(yàn)證在投入大量資源進(jìn)行全量評(píng)測(cè)前先用10-100個(gè)樣本的小測(cè)試集驗(yàn)證整個(gè)流水線包括數(shù)據(jù)加載、模型調(diào)用、評(píng)估邏輯和結(jié)果保存。這能快速發(fā)現(xiàn)配置錯(cuò)誤和邏輯缺陷。版本化一切使用Git對(duì)代碼、測(cè)試集定義、評(píng)估配置進(jìn)行版本控制。每次評(píng)測(cè)時(shí)記錄下模型版本/ID、代碼提交哈希、測(cè)試集版本和評(píng)估配置。這是結(jié)果可復(fù)現(xiàn)性的基石。分離配置與代碼將模型API密鑰、端點(diǎn)URL、超時(shí)時(shí)間、并發(fā)數(shù)等配置項(xiàng)放在環(huán)境變量或配置文件中如.env或config.yaml不要硬編碼在代碼里。實(shí)施全面的日志記錄記錄每個(gè)樣本的評(píng)測(cè)請(qǐng)求時(shí)間、響應(yīng)時(shí)間、token使用量、是否成功、錯(cuò)誤信息等。這些日志對(duì)于分析性能瓶頸、排查問題和成本核算至關(guān)重要。設(shè)計(jì)健壯的評(píng)估標(biāo)準(zhǔn)精確匹配適用于有標(biāo)準(zhǔn)答案的封閉任務(wù)。對(duì)于開放性問題結(jié)合使用關(guān)鍵詞匹配、規(guī)則匹配和LLM-as-Judge。考慮設(shè)計(jì)多維度評(píng)分如事實(shí)準(zhǔn)確性、邏輯性、完整性、無害性。管理好測(cè)試數(shù)據(jù)確保你的測(cè)試集具有代表性、無偏見且覆蓋了關(guān)鍵用例。定期更新測(cè)試集以反映產(chǎn)品需求的變化。對(duì)于敏感數(shù)據(jù)務(wù)必在安全環(huán)境中處理。為批量任務(wù)設(shè)計(jì)隊(duì)列和監(jiān)控對(duì)于長時(shí)間運(yùn)行的評(píng)測(cè)任務(wù)實(shí)現(xiàn)一個(gè)任務(wù)隊(duì)列系統(tǒng)并提供Web界面或API來監(jiān)控任務(wù)狀態(tài)、進(jìn)度和部分結(jié)果。結(jié)果分析與可視化自動(dòng)化除了基礎(chǔ)準(zhǔn)確率計(jì)算不同類別如難度、主題下的指標(biāo)生成對(duì)比圖表如不同模型的得分分布雷達(dá)圖并自動(dòng)生成HTML或PDF報(bào)告。構(gòu)建自己的LLM基準(zhǔn)測(cè)試工具核心價(jià)值在于將評(píng)測(cè)的主動(dòng)權(quán)和控制權(quán)掌握在自己手中。它不是一個(gè)一勞永逸的項(xiàng)目而是一個(gè)隨著你對(duì)模型能力認(rèn)知加深而不斷迭代的“活”系統(tǒng)。從今天介紹的最小可行產(chǎn)品MVP開始你可以逐步添加更復(fù)雜的評(píng)估器、支持更多模型后端、實(shí)現(xiàn)更優(yōu)雅的Web界面最終形成一套完全貼合你團(tuán)隊(duì)需求的內(nèi)模型質(zhì)量保障體系。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
男人的天堂在线| 亚洲 欧美 手机在线观看| 亚洲免费97免费| 中国少妇XXXX做受| 中文字幕三四区| 涩涩久久精品| 精品人妻一区二区免费蜜桃| 久久久久久99999国产精品| 99精品久久| 99re免费视频精品全部| 999久久芭蕾| 国产av高清版| 97色插| 99热超碰在线| 操逼1区| 欧美亚洲高清| 夜夜欢天天干| 久久精品操| 性老妇一区二区三区| 国产精品视频白浆免费| 3P乱轮视频| 欧美激情久操网| 亚洲激情欧美色图| 人妻熟妇久草在线| 超碰久在线天天做| 亚洲情色一区二区三区| 欧美色图片91| 色狠狠综合噜一二三区| 99热免费| 蜜桃精品一区二区三区ww| 无码在线亚洲| 无码精品一区二区三区潘金莲| 久久久一区二区三区四区五区| 欧美色图人妻| 久久久久国产亚洲一区欧美色图日韩| 亚洲 91 在线| 噜噜噜在线视频| 99久久久无码国产精品性啊聊| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 北约熟女超碰| 欧美日韩插逼视频| 日本精品网站在线中文| 操国产高清| 欧美人妻制服| 韩国三级色呦呦| 少妇色欲综合网2| 色狠狠一区二区三区香蕉| 亚洲国产一区二区三区在线| 黑丝少妇| 久久婷婷国产一区二区色| 九九aV| 日日夜夜狠狠| 在线观看A啊啊啊| 神马视频久久久久久| 免费观看欧美日韩操逼视频| 涩五月婷婷| 日韩国产中文字幕| 丰满人妻一区二区三区大胸懂色 | 在线观看AV片| 大香蕉久操| 懂色AV蜜臀无码精品APP| 色欲av一区二区三区蜜芽| 青草草免费网站av| 成人5码视频| 亚洲欧美经典一区二区| 欧美 亚洲 制服 精品| 精品视频日日夜夜| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 成 人 影视 一区 二区 三区 四区 | 加勒比伊人综合| 性色国产东北露脸精品视频| 男人精品天堂一区| 欧美黄业| 久久黄色性爱视频| 国产自偷自拍一区| av午夜玫瑰| 亚洲综合贴图91 | 综合熟妇一区二区三区| 东京热毛片177b2viP| 日本不卡二区| 久久久久亚洲?V片无码V| 婷婷99狠狠躁天天躁| 九九热视频在线观看| 日本丝袜美腿人妻九九| 强奸熟女一区二区三区| 国产成人无码a| 欧美视频中文字幕区| ,国产乱人伦精品一区二区三区| 欧美91丝袜| 九九九999久久久网站| 国产精品福利资源在线尤物| 亚洲AV无码成人精品久久| 情侣开房子拍 日韩无码 女的很漂亮| 九九九影院| 啊啊啊慢点| 在线观看不卡一区二区三区| 涩亚洲欧洲| 亚洲精品久久久久毛片A片拉屎| 亚洲国产成人精品无码专区| 在线黄页看毛片| 天天操美美| 大象AV在线| 日本免费中文字幕在线| 日韩啪啪啪视频| 日韩三级av片| 91操人| 午夜天堂精品久久| 色图综合网| 超碰人人干| 老熟妇一区二区三区啪啪| 999精品久久久久久久| 欧美日韩精品一区二区三区高清| 大香蕉AV丝袜| 亚洲色图欧美色图另类图片| 91男女啊啊啊| 懂色av一区二区三区天美传媒| 另类一区| 天天夜夜rb| 成人乱码一区二区三少妇| 精品国产一区二区三区久久久蜜臀 | 亚洲āv网址在线观看| 婷婷丁香六月天| 制服丝袜第二页| 久久久久亚洲?V片无码V| 色视频蜜乳| 91在线|亚| 欧美人妻制服| 天天操天天插| 久久夜夜| 亚洲s在线观看| 久久久久久999| 日韩无码视频黄色| 成人日韩中文字幕| 狠狠色狠狠色狠狠五月| 婷婷久草| 伊人久久大香线蕉无码| 舔人妻中文免费视频| 熟妇操花| 精品一久久久| 在线观看高清AV| 91在线限制级| 99这里只有精品国产| 在线视频一区二区传媒| 日韩专区久久久| 久久熟女久| 97色色色| 亚洲吊色| 亚洲夜夜欢无码一区二区 | 亚洲欧美国产va在线播放频| 五月天伊人| 日本高清视频xxxx| 超碰欧美COM| 国产无马av| 九色黄站| 九九自拍伦理| 少妇二级| 无码逼| 啊啊啊啊好大好硬啊啊啊啊啊| 久久久精品日本一道| 999综合网| 青青草久久一区网| 亚洲 欧美 手机在线观看| 亚洲图片小说欧洲| 日韩少妇丰满亚洲| 亚洲免费看片| 超碰碰97资源站| 亚洲精品丝袜| 果冻国产精品麻豆成人av| 天堂性色| 国产第二页| 日韩精品99999| 中国AV美女| 欧美青青视频| 久久最新免费视频23| 精品97久久| 国产传媒一区日韩| 久久人妻办公室视频| 丰满美女一级毛片在线播放| 欧美天堂超碰97| 色婷五月天| 国产女人与拘做受视频免费| {男男暴菊gay无套网站| 亚洲第一视频 欧美风情 日韩| 操碰91| 老熟妇一区二区三区…| 国产9区| 国产女人9999| 久久伊人在线五区| 色情五月综合婷婷| 精品视频免费在线一区| 日韩成人高清一区二区| 人人澡人人干| 亚洲 欧美 日本 国内 首页| 裸体1区| 人妻密肉在线观看| 色综合中文字幕不卡| 丁香色色网| 国产精品一区av在线| 尤物视频偷拍免费| 黄久在线| 色九九九综合| 欧美韩国你懂得在线 | 日韩三级网址| 女色视频社区| 五月丁香六月激情| 在线观看综合精品亚洲| 久久在线观看免费视频| 老司机福利青青草| 啊啊啊操死我| 三级日本一区二区三区| 麻豆综合一区av| 蜜臀中文字幕| 日本黄页视频在线观看| 日日骚一区二区三区| 亚洲美乱| 亚洲 日本 一 二 三| 蜜桃av综合网发布| 大香蕉九九| 久久久 国产精品| 免费在线黄片视频| 性爱av网站| 亚洲欧美激情在线视频| 又黄又爽在线观看视频| 99久久久无码国产精品性男| 中文字幕jul-617人妻熟女| 户外裸露刺激视频第一区| 色网在线视频观看免费| 久久久久久久国产视频| 欧美日韩国内不卡| 日韩有码一区三区| 91亚洲人电影| 青青草视频爽一爽| 999综合色| 色偷综合| 日韩射图| 欧美日韩大香蕉| 亚洲综合97| 青青草综合在线| 黄色成年| 天天视频黄| 欧美黄色大片在线观看 | 亚洲天堂区| 欧美亚洲激情小说| 欧美日韩另类字幕中文| 蜜桃臀AV在线| 伊人麻豆传媒| 久久精品日韩| 久久久久久久久久8888| 九九无码久久精品视频| 97碰碰日本乱偷人妻中文的| 欧美国产有色电影| 亚洲精品 欧美97色色| 久久久久久久久久久精| 欧美色999| 国产91av在线播放| 激情综合网五月婷婷| 久久99国产综合精品女同| 操b网站亚洲无码| 91热色| 午夜毛片亚洲精品片国产久久久| 人妻一区二区三区四区视频| 亚洲码专区| 美女刺激久久国产欧美| 久久久国产精品亚洲精品| 欧美综合色图片| 亚洲一区中文精品| 日本久久精品| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 久久夜夜夜夜| 精品一区二区三区麻豆| 口爆吞精在线观看| 91美女色视频亚洲| 亚洲中字幕日本一区二区三区| 无码人妻一区二区三区色欲aⅴ| 青青草天天亲夜夜操网| 亚洲天堂日本| 在线观看无码三级少妇| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 啊啊啊好湿久久| 大干人妻| 亚州操逼图| 欧美亚男人的天堂| 亚洲一区二区三区婷婷| 精品国产乱码久久久久久口爆网站| 天天淫人人妻日日色| 一摸二插三插| 欧美日韩精品一区二区三区高清| 黄色成品网站| 日少妇视频| 国产尤物AV尤物在线观看不卡| 久久9亚洲| 综合自拍| 色婷亚洲五月在线观看| 中文字幕免费看| ,成人免费啪啪视频| 日本三级日本三级三级人妇四虎| 亚洲一区二区av| 欧美黄片欧美黄片xxx| 色臀aV| 亚洲无码超碰免费| 超碰碰激情97+久| 成人五月天丁香激情综合| 91精品久久久久久综合五月天| 色妇91| 污污汅18禁网站在线永久免费观看| 久久国产精品91| 超碰91在线| 婷婷五月天色| www久久精品| 欧美顶级黄片AAAAA在线免费看| 九九十八精品| 先锋影音av先锋一区| 亚洲AO在线| 色色色日本| 中文字幕日韩人妻视频一区二区三区交换夫妻 | 青娱乐休闲视频在线观看| 99激情| 俞拍久久国应视频| 德国一二三不卡| 97精品一区二区视频| 欧美性,亚州色| 91P0RNY大屁股人妻| 熟妇一区二区三区| 丝袜美腿制服人妻二区中文字幕| 亚洲精品97p| 九色PORNY9l原创自拍| 加勒比海人人操超碰在线| 九九热最新| 黄片免费日韩| 亚洲无限观看| 九九香蕉网| 少妇久久久久久| 操B久久| 欧美黑人精品一区二区| 九九热re99re6在线精品| 亚洲精品819| 我要去看2个日本美女.com曹逼| #NAME?| 色五月综合网| 黑人精品一区二区在线播放| A啊啊在线观看| 国产一区二区欧美日本| 老熟女乱伦片| 伊人性在线视频| 亚洲中文人妻色| 免费公开人人操| 蜜桃网熟妇| 日本天堂网| AV无码久久久精品| 射久久| 亚洲污污网站| 粉嫩AV一区夜夜嗨| 91人妻PORNY九色大屁股| 中文字幕一区二区视频在线观看| 看看日B真人视频| 人妻密肉在线观看| 日韩欧美女优电影| 日韩午夜啪啪视频| 99热这里只有精品地址| 欧美极品性爱天天射| 俞拍久久国应视频| 青久久| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 国产第25页在线观看| 色老大| 亚洲免费精品一区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 99热只有这里有精品| 国产精品精品系列在线观看| 97在线观看视频| 亚洲限制级| 97精品国产97久久久久久免费| 啪一啪免费视频| 国产91亚洲精品一区二区三区| 麻豆国产免费影片| 国产精品自在线发布| 熟女探花啪啪| 伊人国产成人av网站| 欧美精品97| 性色综合网| 97亚洲综合在线| 91亚洲最新在线| 中文字幕国产| 人妻丝袜二区| 一区二区中文| 国产精品一区二区校花| 午夜影美女日鸡鸡天天视频国产| 奇米狠999| 操逼大黄片| 久久社区一区二区三区| 中文字幕 国产区| 久久草大香蕉| 精品人人| 日韩欧美丝袜诱惑| 久草在| nuu12国产麻豆精品| 涩亚洲欧洲| 人妻欧美| 最新日日夜夜天天干干| 黑人嘿嘿嘿超爽免费视频| 日韩一区二区高清在线观看的| 91社操逼| 思思热在线观看| 91xingse| 日韩精品操少妇| 91老熟女91老女人| 碰碰97| 国产女人高潮嗷嗷嗷叫小说| 国产无码一二三区| 国产欧美一区二区| 久久九精品| 可乐操亚洲蜜911| 午夜精品99久久久久传媒| 久久一区,青青青青草视频在线播放| 丝袜综合| 久久激情婷婷| 免费看国产曰批40分钟怎么下载| 好吊妞转入那个网| 久久一本大香蕉 | 青青在线视频日韩欧美| 国产免a费看黄片在线| 超碰在线国产| 日日噜噜夜夜久久亚洲一区二区 | 欧美真人抽搐一进一出gif | 欧美综合第一页| 美女操逼A A| 日韩中文字幕二区| 狠狠搞 亚洲91| 加勒比综合a∨| 久久久性| 久久精品人体AV| 18禁久极品美女久久哦哟呀!| 新91视频.cmp| 亚洲小电影免费涩涩成人在线高清 | 蜜桃在线观看一区二区三区 | 亚洲乱码国产乱码精网站| 亚洲老熟妇xxx| 欲女人妻性色av| 亚洲综合91| 中文字幕在线高清男人的天堂| 亭亭丁香激情| 91色花堂| 99久久婷婷| 久久宗合亚洲| 人妻丰满熟妇一区二区三| 成人无码欧美一级A片狼牙直播| 日本操逼aaaaa| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久久精精区一区二区一蜜桃一区二区| 亚洲天天精品| 噜噜噜在线视频| 中文字幕片| 欧美精品宗合| 欧美拳交在线播放| 唯美清纯 妖精视频| av天堂5| 伊人网在线视频| 91丨国产丨白浆秘 洗澡动漫| 久久精品国产精品亚洲艾通辽熟妇 | 精品人妻视频一区二区三区蜜桃视频| 精品国产乱码久久| 67914亚洲精品| 97美日韩视频| 丁香五月AV| 密臀在线视频| 口爆综合网| 国产伦精品| 婷婷激情四射| 久久久999| 欧美夜夜狠| 午夜爽爽爽| 成人夜夜爽| 美女久久久久久久久久久| 男人天堂一区二区| 亚洲色图一区二区三区| 亚州情色j区| 97视频网站| 超碰 另类 欧美| 91伊人久| 激情文学亚洲| 亚洲有码 视频一区| 熟女探花啪啪| 北京美女一区二区| 久久久精品成人国产| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 国产后入| 欧美青青视频| 破苞ⅩXXX性无码动漫无码| 国产一区二区在线看| 亚洲图片欧美日韩| 色翁荡息又大又硬又粗又爽| 亚欧洲一区二区视频| www.色婷婷色综合| 91色综合| 少好三P| 农村妇女一级二级三级视频| 欧美一二三级精品在线| 狠狠操狠狠燥| 日韩AV中文字幕电影| 欧美黄色片在线播放| 麻豆色99999| 欧美一区二区在线资源| 亚洲五码一区二区三区| 久久久999| 天美一区在线| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 人妻少妇精品| 天天操美美| 日本三级韩国三级99| 久久久久久久久久久免费精品| 激情婷婷丁香| 久久人人爽爽爽人久久久| 亚洲日韩美国人妻| 中文久久| 99少妇| 丝袜视频一区二区在线播放国产中文| 9色在线| 国产免a费看黄片在线| 天天干嫩逼网| 大香蕉日亚洲日本亚大| 国产精品欧美激在线| www.色婷婷| 日本激情免费大片| 18禁在线视频| 久操免费观看| 欧美成人国产精品| 91色图片| 丰满欧美少妇| 国产一区二区三区影片| 少妇熟女一区二区三区| 91国产丝袜美女| 久久久久久大| 伊人亚洲国产一成人久久精品,久久| 国产隔壁老王影院在线| 欧美中文综合| 91色宗合| 96一区二区三区| 日本青青草在线| 激情五月激情综合网| 97精品熟女少妇一区| 边做饭边操逼逼| 伊人超碰97| 九久9热| 日本中文字幕在线电影| 一级@啪啪视频| 青草综合| 亚洲图片欧美| 97亚洲欧美| 亚洲人妻久久久| 亚洲精品 欧美精品| 在线A日本| 国产精品久久久久久高清无码免费看| 超碰午夜| 日本一区不卡| 97欧美视频| 神马九九| 91人妻人人澡人人爽人人精品| 夜夜夜爽www精品视频| 国产精品对白自产拍| 国产成人天堂| 久久久久久少妇| 国产丝袜高跟美女av免费观看| 丰满少妇高潮无码| 和协影院中文字幕三区| 蜜桃视频一区二区三区 | 蜜臀久久久99久久久久| 东京热,男人的天堂| 97网站在线观看| 久久精品国产亚洲粉嫩| 三及片网站| 啪啪视频免费在线观看| 家庭乱伦国产精品| 性爱综合一区二区| 国产熟女免费观看久久| 日本护士高潮| 五月色网| 欧美成不卡网| 国产丸一视频| 精品人妻一区二区三区蜜桃视频| 九九热国产| 国语对白露脸XXXXXX| 亚洲影院无码在线| 国产成人精品无码久久| 无码抄逼网| 天天日少妇逼AV| 久偷拍| 茄子社区国产精品| 操熟女91| 26UUU欧美激情一区二区| 久久男女激情视频网站 | 蜜桃av色偷偷av老熟女| 久久亚州精品成人Av无| 天堂中文日本在线观看| 小草三级久久观看| av 模特一区了| 欧洲一区二区三区免费| 男人天堂免费| 美女啊啊啊啊啊啊| 男女激情黄色网址| 高清不卡视频| 五月婷婷青青草娱乐伊人| 91亚洲情色| 久久首页| 亚洲精品视频在线播放| 欧美日韩少妇色情| 神马久久久久久久久久久久| 9999亚洲电影| 亚洲天堂女优在线| 亚洲欧洲激情| 国产精品一区二区亚洲人成毛片| 婷婷亚洲天堂| 新97国产超碰| 天天日天天操天天射河南省| 成人午夜视频免费播放| 色盈盈影院| 色香天天| 亚洲精品成人激情在线| 国产25页| 俺去啦俺来也久久综合| 99热精品在线观看| 91欧美巨乳| 伊人网青青| 青草青青久久久久久国产| 美日韩一二三区| 人妻9117c| 欧美成人9797| 亚洲天堂少妇| 日本三级R| 黄色十八禁| 黄片免费视频2019| 操我啊啊啊啊啊| 亚洲97超碰| 性色av婷婷久久一区二区点复制| 久久精品国产精品| 日本 色 导航| 久久综合精品一区二区三区| 成年人黄色| 亚洲av夫妻操穴网| 国产区在线| 亚洲精品久久久久久久蜜桃臀| 日本最新1区2区3区| 四虎影视永久在线免费| 日韩一999精品| A男人的天堂| 欧美精品久久久久久久丰满| 久久精品国产免费观看99| 嗯嗯嗯,草死我| 97色碰| 天天插天天插| 91精品久久久久| 日欧操屄视频| 后入合集| 亚州国产精品乱| 好属操| 亚洲不卡av在线| 日本操逼视频免费| 亚洲日韩青青草色月| 久热在线精品免费观看| 韩国三级三级BD在线| 日韩精品在线观看观看| 天天综合网合集91| 久久美女福利是上海美女| 国产一区二区精品久久久不卡蜜臀| 久操不卡视频| 国产精品午夜福利视频| 日韩人妻一区二区精品| 亚洲欧美日韩不卡人妻| 日本午夜久久电影| 伊人骚琪琪亚洲天堂网站| 日韩美女久久一区二区三区| 亚洲精品国产熟女| 国产风韵犹存熟妇三区| 99在线免费视频| 国产午夜在线观看| 男生女生啊啊啊啊| 欧美一级做a爰片免费视频| 国产路线专区| 97这里都是精品| 五月综合婷婷久久网站| 久久这里只有精品9| 澳门人妻久久| 综合久久欧美| av毛片aaaaa免费看| 色一射色一射| 国产精品婬乱一级毛片彝族| 久久久久九九九九九| 亚洲天堂区| 三久久久四久久久久| 色婷婷基地| 日韩一级二级三级免费看完整版| 韩国国产欧美情侣视频在线| 人妻AV在线| 欧美不卡五十路| 久久久少妇诱惑精品视频| www四虎| 久久欲| 热久久无毒不卡| 精品一区二区三区四区外站| 久久国产成人精品国产成人亚洲| 欧美日韩第一页| 伊人九九九| 999 久久久| 色97欧美| 999色欧美中文字幕| 国产精品直播在线观看直播| 欧美78p| 久96热在线观看视频| 黑人粗大V S日韩女优视频| 少妇人妻在线| 91啪啪| 精品国产久久乱码| 久久这里都是精品| 91精品久久久久久综合五月天| 久久天天艹| 欧美日本不卡在线| 亚州欧美总和| 精品美女少妇一区二区三区| 男人的天堂2010| 人人透人人操| 国语av最新自产拍在线观看| 精品二区三四区五电影| 自拍欧美| 9超碰免费| 视频在线观看一二三区| 91Chinese在线| 在线观看中文av字幕| 操日韩第| 搡老女人911熟妇老熟女| 色五月av| 99中文字幕| 青青草好吊色| 抽插一区二区视频| 毛片99-全集电影手机免费观看完整-B029AV | 久久内射| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 五月天久久婷婷亚洲| 男人下部插入女人下部| 亚洲综合色网| 屌逼麻豆| 2020中文字幕| 97碰| jazzjazz国产精品麻豆| 亚洲春色一区二区三区| 成人免费性爱视视| 国产精品电影大全| 亲子敌伦对白在线播放| 亚洲精品久久久久毛片A片拉屎 | 理论久久婷婷网 8| 久久婷婷伊人| 加勒比无码一区二区三区| 亚洲色偷偷色噜噜狠狠99网| 欧美日韩国产传媒在线精品| 欧美九9 9 9| 久久国产精品91| 口爆欧美91| 夜夜嗨av午夜成人| 91 综合 色| 四虎影视 亚洲无码| 欧美天天在线| 欧美姓爱综合网| 国内毛片欧美香蕉精品| 婷婷丁香九月| 精品久久久久久中文| 99热这里只有精品地址| 亚洲综合网电影91| 性色乱AV一区二区| 91高跟美女在线播放| 99re在线视频这里只有精品| 午夜欧美精品久久久| 亚洲开心网| 无码高清国产AV| 97啪啪| 国产馆极品诱惑| 十八禁一区二区无码观看| 校园春色 亚洲| 日本熟妇浓毛hdsex| 欧美Aⅴ| 人成午夜免费大片| 日本一二区免费 | 亚洲国产一级精品毛一级精品看免费视频| 日本国产成人亚洲精品无码| 大鸡吧尹人在线| 亚洲Av噜噜一区二区三区妖精| 中出20p| 日语五十路和六十路亚洲国产精品| 久久国产乱子伦精品免费女,网站| 亚洲欧美高清无码| 精品国产久热在线观看| 很黄很污的免费网站| 日本天天干天天搞一区| 五十路熟女人妻一区二区三区四区五| 在线观看成人性爱免费小视频| 综合免费无码中文| 久都青青视频| 91精品国产91久久久久久久久久久久| 精品久久久av无码免费| 精品性爱无码在线播放| 97中文字幕色| 老熟女综合| 屁屁影院一区二区三区国产 | 99999亚洲| 国产精品极品美女视频| 久久男人的天堂国产| 久久久久久免费电影| 岛国激情视频在线观看| 久久婷婷国产一区二区色| 激情婷婷丁香| 激情抓乳插进去啪啪啪日韩 | 欧美gv在线观看| 超碰成人国产| 欧美伦乱爱| 熟女乱3伦999| 操人妻少妇中文 | 一区二区娱乐网站| 无码九九九九| 国产精品极品美女视频| 搡老女人老妇女老妇老熟女怎么读| 深夜激情| 爱媛媛久久国产福利| 日韩欧美资源| 欧洲综合无码| 白丝jkav| 黄片国产精品一区二区| 日夜啪电影| 天天肏视频| 亚洲宅男天堂| 91成人无码| 婷婷色色网| 精品人妻丰满熟妇一区二区三| 免费看日产一区二区三区| 骚逼自拍99| 377p欧洲日本亚洲大胆| 狠狠亚洲| 日韩人妻 中文字幕| 一色网男人的天堂| 国产精品乱码久久| 亚洲一区二区三区久久 亚洲一区二区| 青女偷拍网| 日本性爱不卡视频| 神马久久免费电影观看| 丁香五月综合| 欧美日韩在线小说| 吻戏激情性巴克| 秋霞Av理论一级在线| 日本日日色视频| 国产家庭乱伦性爱视频| 日韩懂色网| 国产精品久久久久中文字幕| 国产精品久久久久久夜夜夜夜| 影音先锋中文字幕日本好一区二区| 久操在97| 91精品久久综合熟女| 黄色工厂这里只有精品| 99999久久久久9国产精品| 男人的天堂 在线一区| 69AV女优男人的天堂| 两女互慰AV高潮喷水在线观看| 久久久久网站-538在线视频-欧美永久乱码 | 人妻丝袜一区二区三区在线| 在现视频女上位好爽| www.亚洲黄色| av在线人气| 日韩人妻一二三区视频| 日韩欧美蜜桃精品久久中文字幕久久 | 成年女人黄网站| 色69大色97香蕉| 9久精品| 波多野结衣之双飞调教在线播放| 一区,二区,三区视频| 国产精品自产拍在线观看社区| 中文字幕免费在线观看| 黄色大片一区二区密桃丝袜| 国产毛片在线| 人妻91少妇| 久久久99久9| 操逼逼福利视频| 91日韩国产欧美亚洲另类精盘州至城都| 97久久久久久久精| 370p日韩欧美亚洲精品| 激情综合 婷婷五月 红杏 | 人人妻人人爽 97人人看碰人免费公开视频| 手机av天堂久久久久| 综合 欧美 亚洲 日本| 久久东京热久久| 1204av韩国| 丁香五月婷婷基地| 狠狠色噜噜狠狠狠狠2018| 蜜臀va69| 青青草手机在线免费观看| 亚洲av噜噜噜噜噜噜| 青青草无码视频| 亚洲中文字幕妇伦久久| 五月天婷精品激情| 91欧美www| 久久欧洲| 乱精品一区字幕二区| 丁香五月综合| 大色综合| 蜜桃臀av一区二区| yy少妇精品久久| 色呦呦、国产精品| 99久热| 久久五十路熟女人妻| 91网站18| 色欲久久99国产精品久久久久久| 人妻熟女一区二区| 超碰在线974| 五月婷婷六月天| 8050无码八戒| 成人a大片在线观看| 久久六六| 日韩十八禁| 91久热| 亚洲情色综合网| 美女97超碰| 人人手机欧洲亚洲国产人妻| 色色五月天婷婷| 国产精品免费视频人成| 亚洲密乳AV| 国语对白露脸XXXXXX| 91欧美亚洲| 最近二区三区视频大全| 在线视频资源| 久久人妻一区二区三区高清| 足交视频老司机| 亚洲区限制级| 欧美亚洲高清不卡| 国产视频一区二区三区久久亚洲天堂| 久久久人体| 美女露胸露尿口| 97超碰国产亚洲精品资源| 国产刺激视频| 中文字幕在线日亚州9| 国产精品久久久鸭无码的功能| 国产综合网站在线播放| 久久久无码av精| 精品国产91av一区二区三区 | 吊色| 黄页网站成人免费| 久久婷婷色综合一区二区三区| 99热国产| 日本熟妇人妻中出视频| 日va操| 强奸乱伦麻豆| 国产精品不卡一区二区三区av| 69一区二区| 2017天天操| 精品久久久av无码免费| 69XX一中文字幕人妻91| 人人玩人人添人人澡免费| 18禁在线视频| 天天综合网日韩7799| 岛国艾薇凹凸视频天堂| 午夜男女爽爽爽在线视频| 久久鲁干| www.激情| 午夜欧美J进J出白浆流出久久久| 伊人精品视频| 国产丝袜一区二区三区| 成人草草视频| 日韩无码极品| 日本不卡高清视频| www.91色| 日韩在线视频1234| 久久动漫精品视频这里只有精品| 久久亚州大香蕉| 亚洲图片欧美| 国产成人欧美一区二区三区的国产| 91艹B视频| 欧美操人| 国产亚洲色婷婷99精品91| 97射欧美| 国产中出内射一区二区| 老司机深夜18禁污污网站| 亚洲蜜桃V妇女| 色老汉玖玖爱| 校园春色欧美| 97欧美精品| 正在播放国产精品一区| 五月丁香激情综合网| 乱理日韩中文| 蜜汁欧美| 欧洲特黄毛片免费看欧洲毛片| 在线欧美69V免费观看视频| 99热在线播放| 久久蜜桃综合网| 日韩精品亚洲一二三| 五月天婷婷社区| 中国一级特黄大片护士| 亚洲成人碰碰| 亚洲自拍欧美色综合| 亚洲欧美高清| 国产免费一区在线观看| 色婷婷aV一区二区三区麻豆综合| 人妻熟女一区二区| 日韩熟女操逼| 大香蕉黄色一区| 狠综合网| 爱妻综合网| 精品国产三级av韩国在线| 97干在线| 夜夜人妻爽| 亚洲av性爱电影| 99爱在线视频| 精品人妻一区二区三区夜夜| 日韩97P| 91精品久久久久久77777| AV老汉| 绯色一区二区三区不卡少妇 | 人妻蜜桃臀| 黄色AAAAA欧美| 后X久久| 青青草这里只有精品| 亚洲午夜福利在线影院| 乱理日韩中文| 国产精品美女视频诱惑| 男人天堂黄片| 欧美精品久久96人妻无码| 亚洲色综合| www超碰| 久久久一区二区| 一区二区三| 国产欧美日韩在线不卡第一页| 久日91在线| 精品人成视频在线观看| 香蕉在线一区二区三区| 亚洲综合图色在线| 国产精品高潮呻吟av久久4虎| A片 AV一级在线播放观看免费 | 波多野结衣AV无码一区| julia高潮后不停追击中出| 亚洲涩图欧美| 欧美日本国产日韩激情视频| 亚洲精品一区二区免费在线观看| 秋霞午夜成人福利片片| 江都AV在线| 亚洲巨爆乳一区二区三区四季网| 开心婷婷五月| 国产精品不卡少妇白| 久久婷婷五月天| 高潮9999外国| 国产这里只有精品| 嗯嗯啊啊好爽| 国产av尤物| 亚洲高清自拍| 天天摸夜夜摸| 一起草三级AV电影在线观看 | 性爱动态120秒| 日本一级真人黄色性爱视频| 久草综合京东| 女人精品内射国产99| 色爱综合网欧美| 18禁免费视频| 久久久禁| 黄片在线免费在线观看| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 中文字幕一区二区三区视频播放| 久久久精精精| 丝袜喷水在线| 一级@啪啪视频| 东京热AV男人的天堂| 九九在线视频| 中文字幕丰满子伦无码专区在线视频最新 | 黄色不卡视频| 人妻人人做人人澡人人爽欧美一区| 久久九精品| 香蕉婷婷| 性无码专区2020| 暖暖精品二区三区观看| 国产午夜在线观看视频| 亚洲AV人人澡人人爱| 成视频在线观看免费看| 中文字幕制服诱惑| 久久一二三四不卡| 99人人干| 97超碰人妻| 日韩中文字幕宗合在线| 色情成人五月天| 亚洲一区二区三区在线激情| 长久操视频| 毛片中心9视频99| 亚洲精品三区在线观看| 99热婷婷一区二区三| 色噜噜人妻丝袜AV资源| 美中日韩无码| 色激情综合网站| 2020中文字幕在线| 国产后入精品| 成年人一级黄色毛片大全在线观看| 亚洲在线91| 欧美18禁91| 久久久久国产一区二| 久久中文字幕不卡人妻| 夜夜黄| 欧美中文字幕一区 | 免费男人的天堂| 久草资源在线视频官方总站日韩丝袜美腿| 国产成人手机视频激情| 日本媚薬中文字幕在线| 亚洲91大片| 中文字幕在在线观看网站| 约操熟妇| 乱伦一二三区| 超碰九7免费| 黄色片G G G| n1038 一二三区| 欧美 亚洲 综合 制服| www色日本| 日韩黄片影院| 少妇久久久久久| 国产AV久久久蜜爱影集| 97亚洲欧美| 欧美日韩狠狠爱| 四虎精品一区| 1区2区3区在线视频| 综合激情五月天| 免费看欧美美女黄色大片| 伊人精品久久网站| 蜜臀久久99精品久久久久久无删减| 久色99999| 精精品人妻一区二区三区| 91麻豆一二三区| 国产人伦精品一区二区三区 | 五月婷在线| 欧美精品自慰系列寂寞少妇| 免费视频在线一区二区不卡| 网友自拍第1页| 亚洲欧美综合网| 蜜臀无码一区二区| 亚洲欧美在线综合| 很很很很操| 91人妻视频在线| 蜜臀少妇一区二区| 久久一二三四五六七八九区区区 | 色牛aV| 人妻精品一区二区| 亚洲男人天堂2017| 96麻豆精品一区二区三区| 蜜臀99久久精品| 夜夜黄| 欧美激情精品| 東南亚性呦成人伦理资源在线视频| 大香蕉手机在线| 97国产|免费| 91亚洲欧美激情| 91亚洲最新在线| 久久99国产精品| 91在线视频国产网站| 五月情色天| 久久国产成人精品国产成人亚洲| 综合久久少妇中文字幕| 偷拍偷窥与盗摄视频专区| 成人久久久| 爱妃国产亚洲视频中文字幕| 精品日韩人妻精品一二三区| 免费少妇一区二区| 中文字幕精品一区二| 天天操天天射天天日| 手机在线观看不卡无码av| 能直接看AV的网站|