社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!

681次阅读
没有评论

元象发布全球首个上下文窗口长度256K的开源大模型XVERSE-Long-256K,支持输入25万汉字,让大模型应用进入“长文本时代”。该模型全开源,无条件免费商用,且附带手把手训练教程,让海量中小企业、研究者和开发者更早一步实现“大模型自由”。


社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!全球主流长文本大模型图谱
参数量和高质量数据量决定了大模型的计算复杂度,而长文本技术(Long Context)是大模型应用发展“杀手锏”,因技术新、研发难度高,目前多为闭源付费提供

XVERSE-Long-256K 支持超长文本输入,可用于大规模数据分析、多文档阅读理解、跨领域知识融合,有效提升大模型应用的深度与广度:一、为律师、金融分析师或咨询师、prompt 工程师、科研人员等解决分析处理较长文本的工作;二、在角色扮演或聊天应用中,缓解模型“忘记”之前对话的记忆力问题,或胡说八道的“幻觉”问题等;三、更好支持智能体(AI Agent)基于历史信息进行规划和决策;四、帮助AI原生应用保持连贯、个性化的用户体验。


至此,XVERSE-Long-256K 填补了开源生态空白,还与元象此前70亿、130亿、650亿参数大模型组成“高性能全家桶”,将国产开源提升至国际一流水平。
社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!元象大模型系列
用户可登录大模型官网或小程序即刻体验 XVERSE-Long-256K。

  高性能定位 评测表现出色

为确保业界对元象大模型有全面、客观和长期的认知,研究人员参考权威行业测评,制定了六个维度的9项综合测评体系。XVERSE-Long-256K 均表现出色,超越其他长文本模型。
社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!全球主流长文本开源大模型评测结果
XVERSE-Long-256K 还通过了“大海捞针”这一常见的长文本大模型性能压力测试。该测试是在长文本语料(即“大海”)中藏入与其内容无关的一个句子(即“针”),并通过自然语言提问让大模型准确提取“针”。
研究人员将四根“针”分别放到了文本语料中从前到后17个不同位置,在8K到256K等量分布的不同长度语料(共32份)中,进行了2176次测试(4x17x32),XVERSE-Long 提取准确率极佳,达99.67%。
社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!





向右滑动查看更多

  算法与工程极致优化 手把手教你训模型
面对数十万Tokens的超长上下文窗口,大模型研发面临诸多技术挑战,比如要确保长文本下关注内容的准确性、文本长度与推理速度的平衡、指数级递增的计算量、显存与带宽的巨大需求。而业界常见的滑动窗口、降采样、小模型等“捷径”方法,虽提升了窗口长度,但不同程度牺牲了模型性能,让模型实际应用价值大打折扣。
元象通过算法与工程上的极致优化与突破,在第一阶段ABF+继续预训练,第二阶段NTK+SFT的技术优化,实现了无损长程注意力机制,让窗口长度与模型性能同步提升。后文将提供“手把手模型训练”详细教程与技术解析。

  应用案例展示
XVERSE-Long-256K 在大规模数据分析、多文档阅读理解、跨领域知识融合上能力出众,更重要的是能推动大模型应用深层次的产业落地,比如在金融、司法、科研等精艰深的领域发展。具体案例:

 长篇小说 阅读理解 


以《射雕英雄传》为例,可展示元象大模型在文本理解、人物动机分析、信息检索、准确推断等方面综合能力。

如郭靖初遇黄蓉时未正面描写人物着装,但模型通过原文“店小二见郭靖身上一件黑貂甚是珍贵,心想就算你会不出钞,把这件黑貂皮剥下来抵数也尽够了”,能推断出郭靖身着黑貂皮袄。
社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!《射雕英雄传》测试下滑查看更多
 40+多语种 阅读理解 目前国内多数大模型仅支持中英双语,元象支持40多种语言,以下对55万字符的俄语经典小说《钢铁是怎样炼成的》、41万字符的德文传记著作《人类群星闪耀时》进行测试
社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!《钢铁是怎样炼成的(俄文版)》测试

社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!

人类群星闪耀时(德文版)》测试


 金融研究报告 分析预测 


对包含大量专业术语的研究报告进行数据、趋势相关解读和分析,以1.6万汉字的《光伏行业2024年策略报告》为例:
社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!《光伏行业2024年策略报告》下滑查看更多

 法律法条 精准应用 


以《中华人民共和国民法典》为例,展示对法律术语的解释,以及对案例进行逻辑分析、结合实际的灵活应用:

社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!《民法典》测试

  手把手教你训练长文本大模型

 1.  技术挑战 

前文提到长序列大模型可一次性输入很长的序列,给大模型的使用带来革命性的变化。既然其优势明显,为何市面上仅有个位数的长文本模型呢?主因有:

  1. 模型训练:GPU显存的占用与序列长度的平方成正比,使训练量急剧上升。
  2. 模型结构:序列越长,模型的attention越分散,模型越容易忘记前序内容。
  3. 推理速度:模型序列越长,将大幅度降低模型推理速度。


 2. 元象技术路线 

长文本大模型技术是在近一年内发展出来的新技术,其主要技术方案为:

  1. 直接进行长序列的预训练,但会导致训练量成平方倍的提升。
  2. 通过位置编码的插值或外推拓展序列长度,这种方法会降低位置编码的分辨率,从而降低大模型输出效果。


元象总结出一条高效拓展长序列的技术路线,很好解决了训练量大、且位置编码分辨率降低等问题。以130亿参数的基座模型为例,具体如下:


第一阶段:使用ABF+继续预训练的方法,将XVERSE-13B的序列长度从8K拓展到32K,该方法可以大幅度减少预训练的训练量。


第二阶段:使用NTK+SFT的方法,将序列长度从32K拓展到256K。这里的继续预训练的方法可解决前文提到的训练量激增问题,而ABF和NTK可解决模型attention衰减问题。

社区供稿 | 元象开源大模型 XVERSE-Long-256K,无条件免费商用!

元象长文本大模型训练流程


 3. 手把手训练方案 

第一阶段:ABF+继续预训练

继续预训练,顾名思义,是在原先短序列预训练的基础上进行长序列的预训练。具体地说,是在XVERSE-13B(8K的短序列)的基础上,使用20%的预训练数据进行32K的长序列的继续预训练。通过少量长序列数据的继续预训练而不是从头开始的长序列预训练,可以大幅减少预训练的训练量。

ABF的全称是Adjusted Base Frequency,是将位置编码RoPE(Rotary Position Embedding)的频率从10000修改成500000。
别小看这个数字的更改,它可以大幅减少前面序列attention的衰减速度,让后面的序列更好的获取所有序列的信息。此外,通过virtual pipeline、ZeRO、不间断训练等手段提高GPU的利用率。
经过以上技术优化,技术团队仅用了一个星期就完成了XVERSE-13B的继续预训练,将序列长度从8K拓展到32K。

第二阶段:NTK+SFT

仅使用继续预训练是无法将序列长度提升到256K的,如此长度的预训练无法完成,因此技术团队使用NTK和SFT技术进一步提高序列长度。
NTK的全称是Neural Tangent Kernel,翻译为神经正切核,是一种用于理解和分析深度神经网络行为的工具。使用了NTK的RoPE可以对RoPE的频率进行动态的插值。在于保持分辨率的情况下(高频),实现了频域空间缩放(低频),从而实现位置空间的插值。

废话不多说,上NTK的代码:

class XverseRotaryEmbedding(torch.nn.Module): def __init__(self, dim, max_position_embeddings=2048, base=500000, device=None): super().__init__() self.base = base self.dim = dim self.max_position_embeddings = max_position_embeddings inv_freq = 1.0 / (base ** (torch.arange(0, dim, 2).float().to(device) / dim)) self.register_buffer("inv_freq", inv_freq)
# Build here to make `torch.jit.trace` work. self.max_seq_len_cached = max_position_embeddings
t = torch.arange(self.max_seq_len_cached, device=self.inv_freq.device, dtype=self.inv_freq.dtype) freqs = torch.einsum("i,j->ij", t, self.inv_freq) # Different from paper, but it uses a different permutation in order to obtain the same calculation emb = torch.cat((freqs, freqs), dim=-1) self.register_buffer("cos_cached", emb.cos()[ None, None, :, :], persistent=False) self.register_buffer("sin_cached", emb.sin()[ None, None, :, :], persistent=False)
def forward(self, x, seq_len=None): # x: [bs, num_attention_heads, seq_len, head_size] # This `if` block is unlikely to be run after we build sin/cos in `__init__`. Keep the logic here just in case. if seq_len > self.max_seq_len_cached:
t = torch.arange(seq_len, device=x.device, dtype=torch.float32) dim = self.dim alpha = (seq_len / (self.max_position_embeddings/2) - 1) base = self.base * alpha ** (dim / (dim-2)) ntk_inv_freq = 1.0 / (base ** (torch.arange(0, dim, 2).float().to(x.device) / dim))
freqs = torch.einsum("i,j->ij", t, ntk_inv_freq) emb = torch.cat((freqs, freqs), dim=-1).to(x.device) cos_cached = emb.cos()[None, None, :, :] sin_cached = emb.sin()[None, None, :, :] return ( cos_cached[:, :, :seq_len, ...].to(dtype=x.dtype), sin_cached[:, :, :seq_len, ...].to(dtype=x.dtype) )
return ( self.cos_cached[:, :, :seq_len, ...].to(dtype=x.dtype), self.sin_cached[:, :, :seq_len, ...].to(dtype=x.dtype), )


使用NTK,使模型具备了拓展更长文本的可能。接下来,通过SFT(Supervised Fine-Tuning)的方法,将序列长度进一步提升到256K。SFT是通过一问一答的方式,使得模型具备了Chat的能力并且强化NTK拓展序列长度的能力。

SFT的关键是如何生成训练数据。目前开源的长序列数据很少,更没有序列长度达到32K以上甚至256K的数据。团队使用预训练阶段使用的训练数据来构造长序列的SFT训练数据。
以构建多文档QA类数据为例:首先,基于自研的XVERSE-65B模型生成与单个文章有关的高质量问题回答对;然后将文章内容混合成目标长度的整段内容,随机选择与其中某个内容匹配的问题回答对;最后将该问题和回答作为整段内容的问题和回答,构成训练的单个样本。通过上述批量化数据生产管线,我们可以得到32K、64K,一直到256K长度的高质量对话数据。

总结一下,通过以上两个阶段的优化,将XVERSE-13B的序列长度大幅度拓展到了256K,并通过9项长文本模型评测和大海捞针等实验验证了XVERSE-13B-256K在长序列方面的强大性能。


本文由 H
ugging Face 中文社区内容共建项目提供,稿件由社区成员投稿,经授权发布于 Hugging Face 公众号。文章内容不代表官方立场,文中介绍的产品和服务等均不构成投资建议。了解更多请关注公众号:

如果你有与开源 AI、Hugging Face 相关的技术和实践分享内容,以及最新的开源 AI 项目发布,希望通过我们分享给更多 AI 从业者和开发者们,请通过下面的链接投稿与我们取得联系:

https://hf.link/tougao

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy