❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
原文链接:https://mp.weixin.qq.com/s/n0vICWNvxP6Vq46SDIjxkw
🚀 快速阅读
- 功能:DRT-o1 通过长链思考推理技术提升文学翻译质量,特别擅长处理比喻和隐喻。
- 技术:采用多智能体框架,包含翻译员、顾问和评估员三个角色,通过迭代优化提升翻译质量。
- 应用:适用于文学翻译、跨文化交流、教育领域和多语言内容创作。
正文(附运行示例)
DRT-o1 是什么
DRT-o1 是腾讯研究院推出的一系列 AI 模型,旨在通过长链思考推理(CoT)技术显著提升文学作品的翻译质量。该模型特别擅长处理比喻和隐喻等修辞手法,能够更深入地理解文本,保留原文的情感色彩和文化内涵。
DRT-o1 系列包括 DRT-o1-7B 和 DRT-o1-14B 两个规模版本,BLEU 分数提高了 7.33 至 8.26,CometScore 提高了 1.66 至 3.36。DRT-o1-7B 的性能甚至超过了更大的模型 QwQ-32B,展现了在处理复杂语言结构方面的强大能力。
DRT-o1 的主要功能
- 长链思考推理(CoT):通过长思维链技术,提高对文学作品中比喻和隐喻等修辞手法的理解能力,提升翻译质量。
- 多智能体框架:模型采用了包含翻译员、顾问和评估员三个角色的多智能体框架。翻译员负责初步翻译,顾问提供修改建议,评估员根据预设指标对翻译质量进行评分。
- 翻译工作流程:工作流程包括关键词翻译、初步翻译和翻译精炼循环三个主要步骤。在精炼循环中,顾问评估前一步的翻译并提供反馈,评估者根据预定义的评分标准给出整体评分,翻译者根据反馈和评分提供新的翻译。
- 迭代优化:通过反复迭代,模型不断提升翻译质量,直至达到预定义的阈值或迭代次数达到最大值。
- 性能提升:实验结果表明,BLEU 分数和 CometScore 均有显著提高。
- 处理复杂语言结构:DRT-o1 在处理复杂语言结构方面表现出色,性能超过了更大的模型 QwQ-32B。
DRT-o1 的技术原理
- 深度思考训练:研究人员从古腾堡计划中选取了 400 本公共领域英文书籍,提取了 577600 个句子,并筛选出 63000 个包含明喻和隐喻的句子,用于训练模型进行“深度思考”。
- 可解释性:由于 CoT 提供了推理过程的可见性,有助于提高模型决策的可解释性。
- 逻辑推理与上下文利用:CoT 可以帮助模型进行复杂的逻辑推理,利用上下文信息,通过逐步推理来解决问题。
如何运行 DRT-o1
使用 Huggingface Transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Krystalan/DRT-o1-7B"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Please translate the following text from English to Chinese:\nThe mother, with her feet propped up on a stool, seemed to be trying to get to the bottom of that answer, whose feminine profundity had struck her all of a heap."
messages = [
{
"role": "system", "content": "You are a philosopher skilled in deep thinking, accustomed to exploring complex problems with profound insight."},
{
"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=2048
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
使用 vllm
python3 -m vllm.entrypoints.openai.api_server --model [model_ckpt] --served-model-name [model_name]
from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
chat_response = client.chat.completions.create(
model=[model_name],
messages=[
{
"role": "system", "content": "You are a philosopher skilled in deep thinking, accustomed to exploring complex problems with profound insight."},
{
"role": "user", "content": "Please translate the following text from English to Chinese:\nThe mother, with her feet propped up on a stool, seemed to be trying to get to the bottom of that answer, whose feminine profundity had struck her all of a heap."},
],
temperature=0.7,
top_p=0.8,
max_tokens=2048,
extra_body={
"repetition_penalty": 1.05,
},
)
print("Chat response:", chat_response)
资源
- GitHub 仓库:https://github.com/krystalan/DRT-o1
- HuggingFace 模型库:
- DRT-o1-7B:https://huggingface.co/Krystalan/DRT-o1-7B
- DRT-o1-14B:https://huggingface.co/Krystalan/DRT-o1-14B
- arXiv 技术论文:https://arxiv.org/pdf/2412.17498
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦