近日,元象发布全球首个上下文窗口长度256K的开源大模型XVERSE-Long-256K,支持输入25万汉字,让大模型应用进入“长文本时代”。该模型全开源,无条件免费商用,目前魔搭社区可下载体验。
参数量和高质量数据量决定了大模型的计算复杂度,而长文本技术(Long Context)是大模型应用发展“杀手锏”,因技术新、研发难度高,目前多为闭源付费提供。 XVERSE-Long-256K 支持超长文本输入,可用于大规模数据分析、多文档阅读理解、跨领域知识融合,有效提升大模型应用的深度与广度:
一、为律师、金融分析师或咨询师、prompt 工程师、科研人员等解决分析处理较长文本的工作;
二、在角色扮演或聊天应用中,缓解模型“忘记”之前对话的记忆力问题,或胡说八道的“幻觉”问题等;
三、更好支持智能体(AI Agent)基于历史信息进行规划和决策;
四、帮助AI原生应用保持连贯、个性化的用户体验。
至此,XVERSE-Long-256K 填补了开源生态空白,还与元象此前70亿、130亿、650亿参数大模型组成“高性能全家桶”,将国产开源提升至国际一流水平。
元象大模型系列
面对数十万Tokens的超长上下文窗口,大模型研发面临诸多技术挑战,比如要确保长文本下关注内容的准确性、文本长度与推理速度的平衡、指数级递增的计算量、显存与带宽的巨大需求。而业界常见的滑动窗口、降采样、小模型等“捷径”方法,虽提升了窗口长度,但不同程度牺牲了模型性能,让模型实际应用价值大打折扣。
元象通过算法与工程上的极致优化与突破,在第一阶段ABF+继续预训练,第二阶段NTK+SFT的技术优化,实现了无损长程注意力机制,让窗口长度与模型性能同步提升。官方提供“手把手模型训练”详细教程与技术解析。
下载元象大模型
- 魔搭:https://modelscope.cn/models/xverse/XVERSE-13B-256K
- GitHub:https://github.com/xverse-ai/XVERSE-13B
- hugging face:https://huggingface.co/xverse/XVERSE-13B-256K
- 问询发送:opensource@xverse.cn
用户可登录大模型官网(chat.xverse.cn)或小程序即刻体验 XVERSE-Long-256K。
模型性能评测
为确保业界对元象大模型有全面、客观和长期的认知,研究人员参考权威行业测评,制定了六个维度的9项综合测评体系。XVERSE-Long-256K 均表现出色,超越其他长文本模型。
全球主流长文本开源大模型评测结果
XVERSE-Long-256K 还通过了“大海捞针”这一常见的长文本大模型性能压力测试。该测试是在长文本语料(即“大海”)中藏入与其内容无关的一个句子(即“针”),并通过自然语言提问让大模型准确提取“针”。
研究人员将四根“针”分别放到了文本语料中从前到后17个不同位置,在1K到256K等量分布的不同长度语料(共32份)中,进行了2176次测试(4x17x32),XVERSE-Long 提取准确率极佳,达99.67%。
应用案例展示
XVERSE-Long-256K 在大规模数据分析、多文档阅读理解、跨领域知识融合上能力出众,更重要的是能推动大模型应用深层次的产业落地,比如在金融、司法、科研等精艰深的领域发展。具体案例:
长篇小说 阅读理解
以《射雕英雄传》为例,可展示元象大模型在文本理解、人物动机分析、信息检索、准确推断等方面综合能力。 如郭靖初遇黄蓉时未正面描写人物着装,但模型通过原文“店小二见郭靖身上一件黑貂甚是珍贵,心想就算你会不出钞,把这件黑貂皮剥下来抵数也尽够了”,能推断出郭靖身着黑貂皮袄。
《射雕英雄传》测试
40+多语种 阅读理解
目前国内多数大模型仅支持中英双语,元象支持40多种语言,以下对16万字符的俄语经典小说《钢铁是怎样炼成的》、41万字符的德语历史传记《人类群星闪耀时》进行测试。
《钢铁是怎样炼成的(俄文版)》测试
《人类群星闪耀时(德文版)》测试
金融研究报告 分析预测 对包含大量专业术语的研究报告进行数据、趋势相关解读和分析,以1.6万字的《光伏行业2024年策略报告》为例:
《光伏行业2024年策略报告》
法律法条 精准应用
以《中华人民共和国民法典》为例,展示对法律术语的解释,以及对案例进行逻辑分析、结合实际的灵活应用:
《民法典》测试
魔搭社区推理&微调最佳实践
环境配置与安装
- python 3.8及以上版本
- pytorch 1.12及以上版本,推荐2.0及以上版本
- 建议使用CUDA 11.4及以上
使用步骤
本文主要演示的模型为XVERSE-13B-256K模型.
模型推理
XVERSE-13B-256K模型链接:
https://modelscope.cn/models/xverse/XVERSE-13B-256K/summary
推理代码:
import torch from modelscope import AutoTokenizer, AutoModelForCausalLM, snapshot_download from modelscope import GenerationConfig model_path = snapshot_download('xverse/XVERSE-13B-256K',revision = 'v1.0.0') tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='auto') model.generation_config = GenerationConfig.from_pretrained(model_path) model = model.eval() history = [{"role": "user", "content": "1955年谁是美国总统?他是什么党派?"}] response = model.chat(tokenizer, history) print(response) history.append({"role": "assistant", "content": response}) history.append({"role": "user", "content": "他任职了多少年"}) response = model.chat(tokenizer, history) print(response)
资源消耗:
单卡A100可运行,如果自己的显卡显存不够,可以考虑使用多张3090显卡。
XVERSE-13B-256K微调和微调后推理
我们使用SWIFT来对模型进行微调, SWIFT是魔搭社区官方提供的LLM&AIGC模型微调推理框架。
微调代码开源地址: https://github.com/modelscope/swift
我们使用数据集advertise-gen-zh进行微调,任务是: 根据物品简要的特征来编写广告词。
环境准备:
git clone https://github.com/modelscope/swift.git cd swift pip install .[llm] 微调脚本: LoRA # https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts/xverse_13b_256k # Experimental environment: A100 # 40GB GPU memory CUDA_VISIBLE_DEVICES=0 \ swift sft \ --model_type xverse-13b-256k \ --sft_type lora \ --tuner_backend swift \ --template_type default-generation \ --dtype AUTO \ --output_dir output \ --dataset advertise-gen-zh \ --train_dataset_sample 20000 \ --num_train_epochs 1 \ --max_length 2048 \ --check_dataset_strategy warning \ --lora_rank 8 \ --lora_alpha 32 \ --lora_dropout_p 0.05 \ --lora_target_modules ALL \ --gradient_checkpointing true \ --batch_size 1 \ --weight_decay 0.01 \ --learning_rate 1e-4 \ --gradient_accumulation_steps 16 \ --max_grad_norm 0.5 \ --warmup_ratio 0.03 \ --eval_steps 100 \ --save_steps 100 \ --save_total_limit 2 \ --logging_steps 10 \
训练过程也支持本地数据集,需要指定如下参数:
--custom_train_dataset_path xxx.jsonl \ --custom_val_dataset_path yyy.jsonl \
自定义数据集的格式可以参考:
https://github.com/modelscope/swift/blob/main/docs/source/LLM/自定义与拓展.md#注册数据集的方式
微调后推理脚本:
(这里的ckpt_dir需要修改为训练生成的checkpoint文件夹)
# Experimental environment: A100 CUDA_VISIBLE_DEVICES=0 \ swift infer \ --ckpt_dir "output/xverse-13b-256k/vx_xxx/checkpoint-xxx" \ --load_dataset_config true \ --max_length 2048 \ --max_new_tokens 2048 \ --temperature 0.7 \ --top_p 0.7 \ --repetition_penalty 1. \ --do_sample true \ --merge_lora_and_save false \
训练后生成样例:
[PROMPT]Task: Generating advertisements based on keywords. Keywords: 类型#上衣*材质#牛仔布*颜色#白色*风格#简约*图案#刺绣*衣样式#外套*衣款式#破洞 Advertisements:[OUTPUT]这款牛仔外套采用了经典的牛仔面料,质地坚韧耐磨,穿着舒适透气,不易变形。白色的衣身简约大气,上身后干净利落,彰显出青春活力。衣身上的破洞设计,彰显出时尚潮流的气息,打破了单调乏味的风格。衣身上的刺绣图案,精致细腻,彰显出品牌的品质。<|endoftext|> [LABELS]简约而不简单的牛仔外套,白色的衣身十分百搭。衣身多处有做旧破洞设计,打破单调乏味,增加一丝造型看点。衣身后背处有趣味刺绣装饰,丰富层次感,彰显别样时尚。 -------------------------------------------------- [PROMPT]Task: Generating advertisements based on keywords. Keywords: 类型#裤*版型#显瘦*颜色#黑色*风格#简约*裤长#九分裤 Advertisements:[OUTPUT]这款九分裤的裤长恰好可以露出脚踝,可以很好的修饰腿型,而且还能展现出纤细的脚踝,显得整个人更加的修长。简约的版型,穿起来更加的舒适,而且还不会有束缚感。经典的黑色,更加的百搭,而且还能展现出干练的风格。<|endoftext|> [LABELS]个性化的九分裤型,穿着在身上,能够从视觉上拉长你的身体比例,让你看起来更加的有范。简约的黑色系列,极具时尚的韵味,充分凸显你专属的成熟韵味。修身的立体廓形,为你塑造修长的曲线。
点击直达模型卡片:XVERSE-13B-256K · 模型库 (modelscope.cn)