近日,源2.0开源大模型与百度PaddleNLP完成全面适配。用户通过PaddleNLP,可快速调用源2.0预训练大模型,使用源2.0在语义、数学、推理、代码、知识等方面的推理能力,也可以使用特定领域的数据集对源2.0 进行微调,训练出适合自身业务需求的大模型。
大语言模型的快速发展对训练和推理技术带来了更高的要求,企业在大模型开发过程往往面临多种难题:如何实现高效训练和推理,如何降低算力资源消耗,如何适配多种硬件……
PaddleNLP是百度基于飞桨框架打造的大语言模型套件,聚合业界优质预训练模型并提供开箱即用的开发体验,覆盖NLP多场景的模型库,搭配产业实践范例,提供极致的训练与推理性能,可满足灵活定制的开发需求。
源2.0系列基础大模型是首个全面开源的千亿参数模型,包括1026亿、518亿、21亿三种参数规模的模型,在对话问答、编程、逻辑推理等方面展示出了领先的能力。
此次适配标志源2.0大模型迁移到飞桨生态中,丰富了PaddleNLP的大模型库,方便用户在PaddleNLP内快速使用源2.0大模型的能力,并能使用特定领域的数据集做微调,利用相对较少的资源就能训练出更适合实际应用场景的大模型。PaddleNLP内置源2.0预训练-微调-推理全流程,支持大模型自动并行,提供高性能分布式训练与推理技术,同时无需修改即可适配多种硬件,从而给用户带来开箱即用的开发体验,实现高效训练和推理。
在微调阶段,利用飞桨框架独有FlashMask高性能变长注意力掩码计算结合PaddleNLP中Zero Padding零填充数据流优化技术,通过分组贪心的数据填充策略,可最大程度消除无效填充的比例。通过上述优化,相比LLaMA-Factory,PaddleNLP在SFT(Supervised Fine-Tuning,监督微调)环节性能提升120%,可以更快训练出适合客户应用场景的专属源2.0大模型。
目前,相关代码已提交至PaddleNLP开源项目,项目地址:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/paddlenlp/transformers/yuan
基于PaddleNLP实现Yuan2.0大模型的步骤
Step 1 环境构建,安装飞桨框架的软硬件环境
Step 2 拉取源2.0权重
Step 3 测试
具体步骤请参考:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/llm/config/yuan/README.md
使用PaddleNLP与源2.0的交互示例
用户在PaddleNLP平台上可以快速使用源2.0的推理能力,特别是使用源2.0进行张量并行推理时。在Torch平台上,源2.0使用transformers直接进行推理,是默认使用流水线并行推理的,计算流只有一条,因此推理性能相较于张量并行较慢。如果想使用张量并行,需要用户自己编写代码按照并行数量提前对权重进行转换, 而这又需要用户对模型和框架比较熟悉。但在PaddleNLP平台上,用户无需提前处理权重即可一键启动张量并行推理,上手门槛低。
以下是使用PaddleNLP与源2.0的交互示例。
1. 代码生成
问题:使用java实现冒泡排序算法
回答:冒泡排序是一种简单但效率较低的排序算法,它通过比较相邻的两 个元素,并交换它们的位置,从而逐步将最大的元素移动到列表的末尾。
下面是使用java实现冒泡排序算法的代码:
public static void bubbleSort( int[]arr){
int n=arr.length;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if (arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
在这个代码中,int[]arr是输入的整数数组,n是数组的长度。函数bubbleSort接受一个整数数组作为参数,并返回排序后的数组。
使用上述代码,你可以调用bubbleSort函数对数组[5,3,8, 2,1,6,4]进行排序。排序后的结果为[1,2,3,4,5,6,8]。
2. 文章生成
问题:写一篇题为AI带给了人类什么的文章。
回答:人工智能(AI)是一种技术,它可以让计算机像人类一样思考和行动。AI技术已经广泛应用于各个领域,包括医疗、金融、交通、教育、娱乐 等等。AI技术可以帮助我们解决许多问题,例如自动驾驶、语音识别、图像识别、自然语言处理等等。AI技术还可以帮助我们提高工作效率,例如自动化生产线、智能客服等等。AI技术还可以帮助我们更好地了解世界,例如通过AI技术可以更好地预测天气、分析市场趋势等等。总之,AI技术已经成为了我们生活中不可或缺的一部分。
3. 翻译
问题:将下面的文字翻译成中文:But with the passage of time, Hemingway has reached middle age,and his energy and creativity have also declined. In Hemingway's inner world, he was very upset, but he never lost hope and confidence.
回答:然而随着时间的推移,海明威已经步入中年,他的精力和创造力也不断下降,但他的内心却非常不安,但他从未失去希望和信心。
4。对话
问题:目前最先进的机器学习算法有哪些?
回答:当前最先进的机器学习算法包括以下几种:
- 卷积神经网络(Convolutional Neural Networks,CNN):CNN是近年来在图像处理领域中非常成功的一种算法, 可以用于图像分类、目标检测、图像分割等任务。
- 循环神经网络(Recurrent Neural Networks,RNN):RNN常常用于序列数据处理,例如自然语言处理、语音识别、机器翻译等任务。其中,长短时记忆网络(Long Short-Term Memory,LSTM)和门控循环单元(Gated Recurrent Unit,GRU)是两种常用的RNN变体。
- 自编码器(AutoEncoder,AE): AE是无监督学习中一种重要的算法,目标是学习一种压缩表示形式,能够把输入压缩到较 小的范围。目前应用于信号处理、图像压缩、数据压缩等领域。
- 对抗生成网络(Generative Adversarial Networks,GAN):GAN是由两个神经网络组成的对抗模型,一个生成器网络用于生成新的数据,另一个判别器网络用于判别生成的数据是否真实,引导生成器 学习生成新的数据。GAN广泛应用于图像生成、视频生成等场景中。
- 迁移学习(Transfer Learning):将过去在训练集上训练而得到的知识应用到新任务中,可以加速模型的 训练和提高效果。
总之,当前最先进的机器学习算法包括卷积神经网络(CNN)、循环神经网络(RNN)、自编码器(AE)、对抗生成网络(GAN)等。在不同的应用场景中,需要根据任务特点选择适合的算法,并进行实验和评估来验证其有效性。
使用PaddleNLP对源2.0进行训练
如果需要基于源2.0从头进行训练,可以参考预训练部分;如果需要基于源2.0大模型,对特定的功能进行“优化”,可以参考微调部分,使用特定领域的数据集做微调,利用相对较少的资源就能训练出更适合实际应用场景的大模型。
1.预训练
以源2.0-51B模型为例, 输出如下:
Loss曲线如下,可收敛。用户可以基于源2.0的模型结构,使用自己的数据集从头进行预训练,生成专属基础大模型。
2.微调
以源2.0-51B模型进行Lora微调为例,输出如下:
Loss曲线如下,可收敛。用户可使用特定数据集对源2.0进行微调,训练出更适合自身业务需求的大模型。