library_name: transformers
language:
- en
- hy
base_model:
- intfloat/multilingual-e5-base
tags:
- sentence-transformers
亚美尼亚语文本嵌入模型-1
模型详情
- 模型名称: 亚美尼亚语文本嵌入模型-1
- 模型类型: 亚美尼亚语文本嵌入
- 基础模型: intfloat/multilingual-e5-base
- 版本: 1.0.0
- 许可协议: Apache 2.0
- 最后更新: 2024年11月
- 模型架构: 基于Transformer的嵌入模型
- 输入: 亚美尼亚语文本
- 输出: 稠密向量嵌入
快速开始
import torch.nn.functional as F
from torch import Tensor
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('Metric-AI/armenian-text-embeddings-1')
model = AutoModel.from_pretrained('Metric-AI/armenian-text-embeddings-1')
def average_pool(last_hidden_states: Tensor,
attention_mask: Tensor) -> Tensor:
last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
input_texts = [
'query: Ինչպե՞ս պատրաստել տոլմա',
'query: Քանի՞ գրամ սպիտակուց է հարկավոր օրական',
"""passage: Տոլմայի բաղադրատոմս՝
Բաղադրիչներ՝
- 500գ աղացած միս
- 1 բաժակ բրինձ
- Խաղողի տերևներ
- 2 գլուխ սոխ
- Համեմունքներ՝ աղ, սև պղպեղ, քարի
Պատրաստման եղանակը՝
1. Միսը խառնել բրնձի, մանր կտրատած սոխի և համեմունքների հետ
2. Խաղողի տերևները լվանալ և թողնել տաք ջրի մեջ 10 րոպե
3. Լցոնել տերևները և դասավորել կաթսայի մեջ
4. Եփել դանդաղ կրակի վրա 45-60 րոպե""",
"""passage: Սպիտակուցի օրական չափաբաժինը կախված է մարդու քաշից, սեռից և ֆիզիկական ակտիվությունից:
Միջին հաշվով, կանանց համար խորհուրդ է տրվում 46-50 գրամ սպիտակուց օրական:
Մարզիկների համար այս թիվը կարող է հասնել մինչև 1.6-2 գրամ մարմնի քաշի յուրաքանչյուր կիլոգրամի համար:
Հղիների համար պահանջվում է լրացուցիչ 25 գրամ սպիտակուց:
Սպիտակուցի հարուստ աղբյուրներ են՝
- Հավի միս (31գ/100գ)
- Ձու (13գ/100գ)
- Ոսպ (25գ/100գ)
- Մածուն (3.5գ/100գ)"""]
batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
支持Sentence Transformers
以下是使用sentence_transformers的示例:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('Metric-AI/armenian-text-embeddings-1')
embeddings = model.encode(input_texts, normalize_embeddings=True)
预期用途
主要用途
- 检索增强生成(RAG)
- 亚美尼亚语语义搜索
- 文档相似度计算
- 跨语言文本理解
- 文本分类任务
- 信息检索
训练数据
数据集详情
- 来源: 包含英语-亚美尼亚语翻译的Reddit数据集
- 规模: 108万行文本对
- 内容类型: 标题与正文文本对
- 词元统计:
- 训练集:
- 翻译标题词元: 23,921,393
- 翻译正文词元: 194,200,654
- 测试集:
- 翻译标题词元: 242,443
- 翻译正文词元: 1,946,164
- 分割比例: 99%训练集,1%测试集
训练过程
训练详情
- 权重平均:
- 基础模型(multilingual-e5-base): 0.6权重
- 微调模型: 0.4权重
- 训练时长: 2天
- 硬件: 4块NVIDIA A100 40GB显卡
- 训练参数:
- 训练轮次: 5
- 批大小: 每GPU 256条(总计256*4)
- 学习率: 5e-5
- 权重衰减: 0.01
- 预热步数: 1000
- 最大序列长度: 128词元
- FP16训练: 启用
- 梯度裁剪: 1.0
优化配置
- 框架: DeepSpeed Stage 2
- 优化器: 带自动权重衰减的AdamW
- 混合精度: FP16动态损失缩放
- ZeRO优化: Stage 2配置:
- 附加特性:
性能与限制
能力
- 适用于亚美尼亚语语义相似性任务
- 适合文档分类与聚类
限制
- 在专业领域术语上表现可能不稳定
- 对亚美尼亚文化语境理解有限
- 受限于训练数据翻译质量
已知偏差
环境影响
- 训练硬件: 4块NVIDIA A100 40GB
- 训练时长: 48小时
- 预估能耗: 384千瓦时(基于A100功耗估算)
伦理考量
- 数据隐私: 训练数据来自公开Reddit内容
- 潜在滥用: 可能被用于内容操纵或垃圾信息
- 偏见: 可能延续Reddit内容中的社会偏见
- 建议:
- 监控系统输出的有害内容
- 生产环境实施内容过滤
- 定期进行偏见评估
技术规格
- 模型规模: 约2.78亿参数(基于e5-base)
- 嵌入维度: 384
- 最大序列长度: 128词元
- 框架兼容性:
- PyTorch
- Hugging Face Transformers
- DeepSpeed
引用
@misc{armenian-text-embeddings-1,
author = {Spartak Bughdaryan, Zaruhi Navasardyan, Bagrat Minasyan, Hrant Davtyan},
title = {亚美尼亚语文本嵌入模型-1:增强型亚美尼亚语嵌入},
year = {2024},
howpublished = {\url{https://metric.am/blog/announcing-armenian-text-embeddings/}}
}
补充信息
基础模型参考
致谢
- intfloat提供原始multilingual-e5-base模型
- Reddit社区提供源内容
- DeepSpeed团队提供优化工具包
版本历史