EXAONE 3.5:LG 推出的开源 AI 模型,采用 RAG 和多步推理能力降低模型的幻觉问题

141 阅读3分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 模型版本:提供 24 亿、78 亿和 320 亿参数的三个版本,适应不同应用场景。
  2. 长文本处理:支持长达 32K tokens 的上下文处理,有效降低模型幻觉问题。
  3. 多步推理:结合检索增强生成技术,提升模型在复杂场景中的准确性。

正文(附运行示例)

EXAONE 3.5 是什么

公众号: 蚝油菜花 - EXAONE-3.5

EXAONE 3.5 是 LG AI 研究院推出的开源 AI 模型,包含 24 亿、78 亿和 320 亿参数的三个版本。该模型擅长长文本处理,在基准测试中表现优异,特别是在实际应用、长文本处理和数学方面。

EXAONE 3.5 采用检索增强生成技术和多步推理能力,有效降低错误信息,提高准确性。LG 计划进一步扩展其 AI 能力,并推出企业级 AI 智能体服务 ChatEXAONE,具备复杂的查询分析和用户自定义搜索功能,配备加密和隐私保护技术,确保在公司内部安全使用。

EXAONE 3.5 的主要功能

  • 多版本模型支持:提供三种不同参数规模的模型,适应不同的应用场景和计算资源限制。
  • 指令遵循能力:在实际场景中具有卓越的指令遵循能力,在多个基准测试中取得最高分。
  • 长上下文理解:在长文本处理方面表现出色,有效理解和处理长达 32K tokens 的上下文。
  • 双语能力:优秀的韩语和英语双语能力,特别是在韩国和英语的基准测试中表现突出。
  • 检索增强生成技术:基于参考文档或网络搜索结果生成答案。
  • 多步推理能力:具备多步推理能力,有效降低“幻觉”现象,提高答案的准确性。

EXAONE 3.5 的技术原理

  • Transformer 架构:基于最新的仅解码器(decoder-only)Transformer 架构,用于处理序列数据。
  • 长上下文处理:采用长上下文微调技术,将最大上下文长度从 EXAONE 3.0 的 4,096 tokens 扩展到 32,768 tokens。
  • 预训练和后训练
    • 预训练:第一阶段用大型训练语料库进行预训练,第二阶段针对需要加强的领域进行数据收集和预训练,特别是增强长上下文理解能力。
    • 后训练:包括监督式微调(SFT)和偏好优化,加强模型的指令遵循能力和与人类偏好的一致性。
  • 数据合规性:在数据收集、模型训练和信息提供过程中进行 AI 合规性审查,最小化法律风险。
  • 检索增强生成(RAG)技术:结合检索和生成,让模型能处理更长的上下文,在复杂场景中应用。

如何运行 EXAONE 3.5

以下是一个简单的 Python 示例,展示如何使用 EXAONE 3.5 模型:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 选择你的提示
prompt = "Explain how wonderful you are"  # 英文示例
# prompt = "스스로를 자랑해 봐"       # 韩文示例

messages = [
    {"role": "system", "content": "You are EXAONE model from LG AI Research, a helpful assistant."},
    {"role": "user", "content": prompt}
]
input_ids = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_tensors="pt"
)

output = model.generate(
    input_ids.to("cuda"),
    eos_token_id=tokenizer.eos_token_id,
    max_new_tokens=128,
    do_sample=False,
)
print(tokenizer.decode(output[0]))

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦