🚀 機器翻譯質量評估模型
本模型用於機器翻譯的質量評估,無需參考文本,適用於長上下文場景,能有效提升文檔級翻譯質量評估的準確性。
🚀 快速開始
安裝所需庫
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()
準備數據集
sep_token = tokenizer.sep_token
input_test_texts = [f"{src} {sep_token} {tgt}" for src, tgt in zip(test_dataset["src"], test_dataset["mt"])]
生成預測
基礎用法
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
def process_batch(batch, tokenizer, device):
sep_token = tokenizer.sep_token
input_texts = [f"{src} {sep_token} {tgt}" for src, tgt in zip(batch["src"], batch["mt"])]
tokens = tokenizer(input_texts,
truncation=True,
padding="max_length",
max_length=tokenizer.model_max_length,
return_tensors="pt",
).to(device)
return tokens
test_dataloader = DataLoader(test_dataset,
batch_size=128,
shuffle=False)
predictions = []
with torch.no_grad():
for batch in tqdm(test_dataloader, desc="Inference Progress", unit="batch"):
tokens = process_batch(batch, tokenizer, device)
outputs = model(**tokens)
logits = outputs.logits
batch_predictions = logits.squeeze()
predictions.extend(batch_predictions.tolist())
✨ 主要特性
- 無參考長上下文評估:可對機器翻譯系統進行無參考的長上下文質量評估,適用於文檔級質量評估。
- 多語言支持:支持多種語言,包括但不限於英語、中文、日語、俄語等。
📦 安裝指南
pip3 install --upgrade datasets accelerate transformers
pip3 install --upgrade flash_attn triton
📚 詳細文檔
模型描述
本模型是在 answerdotai/ModernBERT-base 基礎上,針對 ymoslem/wmt-da-human-evaluation-long-context 數據集進行微調得到的。用於機器翻譯的無參考長上下文質量評估,訓練數據包含最多32個句子的翻譯對,適合文檔級質量評估。
訓練和評估數據
- 訓練數據:765萬條長上下文文本。
- 測試數據:59,235條長上下文文本。
訓練過程
訓練超參數
- 學習率:0.0003
- 訓練批次大小:128
- 評估批次大小:128
- 隨機種子:42
- 優化器:使用
OptimizerNames.ADAMW_TORCH_FUSED
,betas=(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.0209 |
1.0039 |
60000 |
0.0214 |
框架版本
- Transformers:4.48.1
- Pytorch:2.4.1+cu124
- Datasets:3.2.0
- Tokenizers:0.21.0
推理
按照上述“快速開始”部分的步驟進行推理,可使用 text-classification
管道或詳細代碼進行預測。
🔧 技術細節
- 基礎模型:answerdotai/ModernBERT-base
- 訓練設備:1x H200 SXM(143 GB VRAM),訓練約26小時。
- 分詞器最大長度:8192(全上下文長度)
- 注意力實現:
flash_attention_2
📄 許可證
本模型使用 Apache-2.0 許可證。
📊 模型指標
屬性 |
詳情 |
模型類型 |
用於機器翻譯質量評估的迴歸模型 |
訓練數據 |
ymoslem/wmt-da-human-evaluation-long-context |
Pearson 相關性 |
0.5013 |
平均絕對誤差 |
0.1024 |
均方根誤差 |
0.1464 |
R 平方 |
0.251 |