MTEB项目1.29.7版本发布:模型元数据与CI流程优化
【免费下载链接】mteb MTEB: Massive Text Embedding Benchmark 项目地址: https://gitcode.com/gh_mirrors/mt/mteb
引言
还在为文本嵌入模型评估的复杂性而头疼吗?还在为模型元数据管理混乱而烦恼吗?MTEB(Massive Text Embedding Benchmark)1.29.7版本的发布,为您带来革命性的模型元数据管理和CI流程优化方案。本文将深入解析这一版本的核心改进,帮助您:
- 🚀 掌握全新的模型元数据标准化体系
- ⚡ 了解CI/CD流程的性能优化策略
- 🔧 学习如何高效管理模型训练数据集信息
- 📊 实现零样本评估的自动化判定
- 🛡️ 确保模型评估的可重复性和可靠性
模型元数据标准化:构建统一的评估基础
ModelMeta类的全面升级
MTEB 1.29.7版本对模型元数据管理进行了重大重构,引入了标准化的ModelMeta类,为所有嵌入模型提供了统一的元数据描述框架:
class ModelMeta(BaseModel):
name: str | None
revision: str | None
release_date: STR_DATE | None
languages: list[ISO_LANGUAGE_SCRIPT] | None
loader: Callable[..., Encoder] | None = None
n_parameters: int | None
memory_usage_mb: float | None
max_tokens: float | None
embed_dim: int | None
license: LICENSES | STR_URL | None
open_weights: bool | None
public_training_code: str | None
public_training_data: str | bool | None
framework: list[FRAMEWORKS]
reference: STR_URL | None = None
similarity_fn_name: DISTANCE_METRICS | None
use_instructions: bool | None
training_datasets: dict[str, list[str]] | None
adapted_from: str | None = None
superseded_by: str | None = None
is_cross_encoder: bool | None = None
modalities: list[MODALITIES] = ["text"]
关键元数据字段详解
| 字段名称 | 数据类型 | 描述 | 示例 |
|---|---|---|---|
n_parameters | int | 模型参数量 | 7_000_000 |
memory_usage_mb | float | 内存使用量(MB) | 512.5 |
max_tokens | float | 最大token处理能力 | 8192 |
embed_dim | int | 嵌入维度 | 768 |
framework | list[FRAMEWORKS] | 支持框架 | ["Sentence Transformers", "PyTorch"] |
languages | list[ISO_LANGUAGE_SCRIPT] | 支持语言 | ["eng-Latn", "zho-Hans"] |
training_datasets | dict[str, list[str]] | 训练数据集 | {"ArguAna": ["test"]} |
零样本评估自动化
新版本引入了智能的零样本评估判定机制:
def is_zero_shot_on(self, tasks: Sequence[AbsTask] | Sequence[str]) -> bool | None:
"""智能判定模型在给定任务上是否为零样本"""
if not tasks:
return True
training_datasets = self.get_training_datasets()
if training_datasets is None:
return None
# 自动化检查训练数据与评估任务的重叠
model_datasets = {ds_name for ds_name, splits in training_datasets.items()}
benchmark_datasets = set(tasks) if isinstance(tasks[0], str) else {task.metadata.name for task in tasks}
intersection = model_datasets & benchmark_datasets
return len(intersection) == 0
CI/CD流程优化:提升开发效率与可靠性
多维度测试矩阵
MTEB 1.29.7版本对CI流程进行了全面优化,建立了多维度的测试矩阵:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest] #, macos-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
include:
- os: windows-latest
python-version: "3.9"
智能缓存与重试机制
专业化工作流分工
新版本将CI流程细分为多个专业化工作流:
| 工作流名称 | 触发条件 | 主要功能 |
|---|---|---|
test.yml | Push/PR | 核心功能测试 |
model_loading.yml | 定时任务 | 模型加载验证 |
dataset_loading.yml | 定时任务 | 数据集加载验证 |
leaderboard_build.yml | 发布时 | 排行榜构建 |
lint.yml | Push/PR | 代码规范检查 |
训练数据集管理的革命性改进
多层次训练数据追踪
def get_training_datasets(self) -> dict[str, list[str]] | None:
"""获取模型的完整训练数据集信息"""
if self.training_datasets is None:
return None
training_datasets = self.training_datasets.copy()
# 检查适配来源模型
if self.adapted_from is not None:
try:
adapted_from_model = mteb.get_model_meta(self.adapted_from, fetch_from_hf=False)
adapted_training_datasets = adapted_from_model.get_training_datasets()
if adapted_training_datasets is not None:
training_datasets |= adapted_training_datasets
except ValueError as e:
logger.warning(f"Could not get source model: {e} in MTEB")
# 收集相似任务
return_dataset = training_datasets.copy()
visited = set()
for dataset in training_datasets:
similar_tasks = collect_similar_tasks(dataset, visited)
return_dataset |= {task: [] for task in similar_tasks}
return return_dataset
数据污染检测与预防
新版本建立了完善的数据污染检测机制:
- 直接污染检测:检查训练数据与评估数据的直接重叠
- 间接污染预防:通过相似任务分析预防间接数据泄露
- 跨模型污染追踪:追踪模型适配关系中的污染传播
内存使用量计算的智能化
自动化内存估算算法
def calculate_memory_usage_mb(self) -> int | None:
"""智能计算模型内存使用量"""
if "API" in self.framework:
return None
MB = 1024**2
try:
# 优先使用safetensors元数据
safetensors_metadata = get_safetensors_metadata(self.name)
if len(safetensors_metadata.parameter_count) >= 0:
dtype_size_map = {
"F64": 8, "F32": 4, "F16": 2, "BF16": 2,
"I64": 8, "I32": 4, "I16": 2, "I8": 1,
"U8": 1, "BOOL": 1
}
total_memory_bytes = sum(
parameters * dtype_size_map.get(dtype, 4)
for dtype, parameters in safetensors_metadata.parameter_count.items()
)
return round(total_memory_bytes / MB)
except (NotASafetensorsRepoError, SafetensorsParsingError, GatedRepoError):
pass
# 回退到参数数量估算
if self.n_parameters is None:
return None
model_memory_bytes = self.n_parameters * 4 # FP32每个参数4字节
return round(model_memory_bytes / MB)
实践指南:如何充分利用新特性
模型元数据定义最佳实践
from mteb.model_meta import ModelMeta
from mteb.models.sentence_transformer_wrapper import sentence_transformers_loader
# 定义模型元数据
model_meta = ModelMeta(
name="organization/model-name",
revision="main",
release_date="2024-01-01",
languages=["eng-Latn", "zho-Hans"],
loader=sentence_transformers_loader,
n_parameters=7_000_000,
memory_usage_mb=512,
max_tokens=8192,
embed_dim=768,
license="apache-2.0",
open_weights=True,
public_training_code="https://github.com/org/training-code",
public_training_data={"ArguAna": ["test"], "MSMARCO": ["train"]},
framework=["Sentence Transformers", "PyTorch"],
reference="https://huggingface.co/organization/model-name",
similarity_fn_name="cosine",
use_instructions=False,
training_datasets={"ArguAna": ["test"], "MSMARCO": ["train"]},
modalities=["text"]
)
CI流程配置优化建议
# .github/workflows/custom_test.yml
name: Custom Model Testing
on:
push:
branches: [main]
paths:
- 'mteb/models/custom_models.py'
- 'tests/test_custom_models.py'
jobs:
custom-model-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install dependencies
run: pip install -e ".[test]"
- name: Run custom model tests
run: pytest tests/test_custom_models.py -v
总结与展望
MTEB 1.29.7版本的发布标志着文本嵌入模型评估进入了一个新的时代。通过模型元数据的标准化管理和CI流程的智能化优化,该项目为研究社区提供了:
- 标准化评估基础:统一的模型元数据格式确保评估结果的可比性
- 智能化工作流:自动化的CI流程大幅提升开发效率
- 数据完整性保障:完善的训练数据追踪防止数据污染
- 跨平台兼容性:多维度测试矩阵确保代码的广泛兼容性
未来,MTEB项目将继续在模型评估标准化、自动化工作流优化和多模态支持等方面进行深入探索,为文本嵌入技术的发展提供更加强大的基础设施支持。
立即升级到MTEB 1.29.7版本,体验全新的模型评估工作流,让您的嵌入模型研究更加高效、可靠!
【免费下载链接】mteb MTEB: Massive Text Embedding Benchmark 项目地址: https://gitcode.com/gh_mirrors/mt/mteb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



