ALMA-13B-Pretrain项目介绍
项目背景
ALMA(Advanced Language Model-based Translator)是一个基于大型语言模型的翻译系统。它采用了一种全新的翻译模型范式,首先在单语数据上进行微调,然后利用高质量的平行数据进行优化。这种两步微调过程确保了其强大的翻译性能。
项目发展
最近,ALMA-R新版本已经发布。ALMA-R在ALMA模型的基础上进行了进一步的LoRA(Low-Rank Adaptation)微调,并引入了对比偏好优化(CPO)技术,与ALMA的监督微调不同,这种优化需要使用三元组偏好数据进行学习。ALMA-R的表现已经可以媲美甚至超越GPT-4或WMT的获奖作品。
发布的模型
目前,项目中发布了六种翻译模型:
- ALMA-7B:在20B单语数据上进行全重微调,随后在人工撰写的平行数据上进行全重微调。
- ALMA-7B-LoRA:在20B单语数据上进行全重微调,随后在人工撰写的平行数据上进行LoRA微调。
- ALMA-7B-R (新!):在ALMA-7B-LoRA的基础上进一步进行LoRA微调,采用对比偏好优化。
- ALMA-13B:在12B单语数据上进行全重微调,随后在人工撰写的平行数据上进行全重微调。
- ALMA-13B-LoRA(我们的最佳系统):在12B单语数据上进行全重微调,随后在人工撰写的平行数据上进行LoRA微调。
- ALMA-13B-R (新!):在ALMA-13B-LoRA的基础上进一步进行LoRA微调,采用对比偏好优化。
使用ALMA-13B-LoRA进行翻译的快速开始
ALMA-13B-LoRA模型目前在Huggingface网站上提供,可以通过以下示例代码快速使用该系统进行翻译:
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM
from transformers import LlamaTokenizer
# 加载基础模型和LoRA权重
model = AutoModelForCausalLM.from_pretrained("haoranxu/ALMA-13B-Pretrain", torch_dtype=torch.float16, device_map="auto")
model = PeftModel.from_pretrained(model, "haoranxu/ALMA-13B-Pretrain-LoRA")
tokenizer = LlamaTokenizer.from_pretrained("haoranxu/ALMA-13B-Pretrain", padding_side='left')
# 将源语言句子加入提示模板
prompt="Translate this from Chinese to English:\nChinese: 我爱机器翻译。\nEnglish:"
input_ids = tokenizer(prompt, return_tensors="pt", padding=True, max_length=40, truncation=True).input_ids.cuda()
# 翻译过程
with torch.no_grad():
generated_ids = model.generate(input_ids=input_ids, num_beams=5, max_new_tokens=20, do_sample=True, temperature=0.6, top_p=0.9)
outputs = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
print(outputs)
结语
ALMA-13B-Pretrain项目通过多阶段的微调方法显著提升了翻译效果,为基于大型语言模型的翻译技术带来了新的思路和发展方向。更多详情可以访问项目的GitHub仓库。