库名称: transformers
语言:
- 多语言
- 孟加拉语
- 捷克语
- 德语
- 英语
- 爱沙尼亚语
- 芬兰语
- 法语
- 古吉拉特语
- 豪萨语
- 印地语
- 冰岛语
- 日语
- 哈萨克语
- 高棉语
- 立陶宛语
- 拉脱维亚语
- 波兰语
- 普什图语
- 俄语
- 泰米尔语
- 土耳其语
- 乌克兰语
- 科萨语
- 中文
- 祖鲁语
许可证: apache-2.0
基础模型: answerdotai/ModernBERT-base
标签:
- 质量评估
- 回归
- 训练生成
数据集:
- ymoslem/wmt-da-human-evaluation-long-context
模型索引:
- 名称: 机器翻译质量评估
结果:
- 任务:
类型: 回归
数据集:
名称: ymoslem/wmt-da-human-evaluation-long-context
类型: QE
指标:
- 名称: 皮尔逊相关系数
类型: Pearson
值: 0.5013
- 名称: 平均绝对误差
类型: MAE
值: 0.1024
- 名称: 均方根误差
类型: RMSE
值: 0.1464
- 名称: R平方
类型: R2
值: 0.251
指标:
- 皮尔逊相关系数
- 平均绝对误差
- R平方
机器翻译质量评估
该模型是基于answerdotai/ModernBERT-base在ymoslem/wmt-da-human-evaluation-long-context数据集上微调的版本。在评估集上取得了以下结果:
- 损失: 0.0214
- 皮尔逊系数: 0.5013
- 平均绝对误差: 0.1024
- 均方根误差: 0.1464
- R平方: 0.251
模型描述
该模型用于机器翻译(MT)系统的无参考、长上下文质量评估(QE)。它训练于包含最多32个句子(源语言和目标语言各64个句子)的翻译对数据集。因此,该模型适用于文档级质量评估。
训练和评估数据
模型训练于长上下文数据集ymoslem/wmt-da-human-evaluation-long-context。用于机器翻译质量评估的长上下文/文档级数据集是句子级WMT DA人工评估数据集的增强版本。除了单个句子外,它还包含每个语言对lp
和domain
下2、4、8、16和32个句子的增强组合。raw
列表示使用src
和mt
字符长度作为权重的增强句子得分的加权平均值。
- 训练数据: 765万条长上下文文本
- 测试数据: 59,235条长上下文文本
训练过程
模型在1块H200 SXM(143GB显存)上训练约26小时。
- tokenizer.model_max_length: 8192(完整上下文长度)
- attn_implementation: flash_attention_2
训练超参数
训练期间使用的超参数如下:
- 学习率: 0.0003
- 训练批次大小: 128
- 评估批次大小: 128
- 随机种子: 42
- 优化器: 使用OptimizerNames.ADAMW_TORCH_FUSED,beta=(0.9,0.999),epsilon=1e-08,无额外优化器参数
- 学习率调度器类型: 线性
- 训练步数: 60000(约1个epoch)
训练结果
训练损失 |
周期 |
步数 |
验证损失 |
0.0233 |
0.0167 |
1000 |
0.0233 |
0.0232 |
0.0335 |
2000 |
0.0230 |
0.0225 |
0.0502 |
3000 |
0.0230 |
0.023 |
0.0669 |
4000 |
0.0224 |
0.0226 |
0.0837 |
5000 |
0.0223 |
0.0226 |
0.1004 |
6000 |
0.0225 |
0.0219 |
0.1171 |
7000 |
0.0222 |
0.022 |
0.1339 |
8000 |
0.0222 |
0.0213 |
0.1506 |
9000 |
0.0221 |
0.0213 |
0.1673 |
10000 |
0.0220 |
0.0218 |
0.1840 |
11000 |
0.0219 |
0.0215 |
0.2008 |
12000 |
0.0225 |
0.0218 |
0.2175 |
13000 |
0.0219 |
0.0218 |
0.2342 |
14000 |
0.0218 |
0.0217 |
0.2510 |
15000 |
0.0219 |
0.0219 |
0.2677 |
16000 |
0.0219 |
0.0212 |
0.2844 |
17000 |
0.0219 |
0.0219 |
0.3012 |
18000 |
0.0219 |
0.0218 |
0.3179 |
19000 |
0.0219 |
0.0213 |
0.3346 |
20000 |
0.0217 |
0.0218 |
0.3514 |
21000 |
0.0217 |
0.021 |
0.3681 |
22000 |
0.0217 |
0.0219 |
0.3848 |
23000 |
0.0220 |
0.0211 |
0.4016 |
24000 |
0.0216 |
0.0211 |
0.4183 |
25000 |
0.0216 |
0.0206 |
0.4350 |
26000 |
0.0216 |
0.021 |
0.4517 |
27000 |
0.0215 |
0.0214 |
0.4685 |
28000 |
0.0215 |
0.0214 |
0.4852 |
29000 |
0.0216 |
0.0204 |
0.5019 |
30000 |
0.0216 |
0.022 |
0.5187 |
31000 |
0.0216 |
0.0212 |
0.5354 |
32000 |
0.0217 |
0.0211 |
0.5521 |
33000 |
0.0216 |
0.0208 |
0.5689 |
34000 |
0.0215 |
0.0208 |
0.5856 |
35000 |
0.0215 |
0.0215 |
0.6023 |
36000 |
0.0215 |
0.0212 |
0.6191 |
37000 |
0.0215 |
0.0213 |
0.6358 |
38000 |
0.0215 |
0.0211 |
0.6525 |
39000 |
0.0215 |
0.0208 |
0.6693 |
40000 |
0.0215 |
0.0205 |
0.6860 |
41000 |
0.0215 |
0.0209 |
0.7027 |
42000 |
0.0215 |
0.021 |
0.7194 |
43000 |
0.0215 |
0.0207 |
0.7362 |
44000 |
0.0215 |
0.0197 |
0.7529 |
45000 |
0.0215 |
0.0211 |
0.7696 |
46000 |
0.0214 |
0.021 |
0.7864 |
47000 |
0.0215 |
0.0207 |
0.8031 |
48000 |
0.0214 |
0.0219 |
0.8198 |
49000 |
0.0215 |
0.0208 |
0.8366 |
50000 |
0.0215 |
0.0202 |
0.8533 |
51000 |
0.0215 |
0.02 |
0.8700 |
52000 |
0.0215 |
0.0205 |
0.8868 |
53000 |
0.0214 |
0.0214 |
0.9035 |
54000 |
0.0215 |
0.0205 |
0.9202 |
55000 |
0.0214 |
0.0209 |
0.9370 |
56000 |
0.0214 |
0.0206 |
0.9537 |
57000 |
0.0214 |
0.0204 |
0.9704 |
58000 |
0.0214 |
0.0203 |
0.9872 |
59000 |
0.0214 |
0.0209 |
1.0039 |
60000 |
0.0214 |
框架版本
- Transformers 4.48.1
- Pytorch 2.4.1+cu124
- Datasets 3.2.0
- Tokenizers 0.21.0
推理
- 安装所需库。
pip3 install --upgrade datasets accelerate transformers
pip3 install --upgrade flash_attn triton
- 加载测试数据集。
from datasets import load_dataset
test_dataset = load_dataset("ymoslem/wmt-da-human-evaluation",
split="test",
trust_remote_code=True
)
print(test_dataset)
- 加载模型和分词器:
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch
model_name = "ymoslem/ModernBERT-base-long-context-qe-v1"
model = AutoModelForSequenceClassification.from_pretrained(
model_name,
device_map="auto",
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
model.eval()
- 准备数据集。每个源语言段
src
和目标语言段tgt
用sep_token
分隔,ModernBERT的分隔符是'</s>'
。
sep_token = tokenizer.sep_token
input_test_texts = [f"{src} {sep_token} {tgt}" for src, tgt in zip(test_dataset["src"], test_dataset["mt"])]
- 生成预测。
如果打印model.config.problem_type
,输出是regression
。但仍可使用"text-classification"流水线如下(参见流水线文档):
from transformers import pipeline
classifier = pipeline("text-classification",
model=model_name,
tokenizer=tokenizer,
device=0,
)
predictions = classifier(input_test_texts,
batch_size=128,
truncation=True,
padding="max_length",
max_length=tokenizer.model_max_length,
)
predictions = [prediction["score"] for prediction in predictions]
或者,可以使用更精细的代码版本,速度稍快且提供更多控制。
from torch.utils.data import DataLoader
import torch
from tqdm.auto import tqdm