1 前言
源1.0预训练语言模型(简称源1.0)是浪潮人工智能研究院发布的人工智能巨量模型,单体模型参数量达到2457亿,成为全球最大规模的中文语料AI巨量模型。作为通用NLP预训练模型,源1.0能够适应多种类的AI任务需求,降低针对不同应用场景的语言模型适配难度,并提升小样本学习与零样本学习场景的模型泛化应用能力。调用源1.0API接口,使用源1.0的推理能力,可以支持下游几十个不同应用场景的任务。调用源1.0API接口有两种方式,可以直接使用代码调用,也可以使用源提供的图形化工具APIExp进行调用。两种调用方式的原理一致,以下示例内容基于APIExp进行展示。
2 环境约束
2.1 应用平台
服务端: 源开放平台
客户端:两者任选其一
- 用户电脑端,常规浏览器
- 用户电脑端,python集成开发环境
2.2 测试工具
测试工具 | 版本 | 适用测试内容 |
常规浏览器 | 无要求 | APIExp图形化工具 |
Python集成开发环境 | 3.0以上 | 代码测试 |
2.3 测试环境构建
2.3.1 试用权限准备
用户注册。在源平台(https://air.inspur.com ) 首页,点击右上角注册,填写基本信息,注册为用户。
用户提交API申请。点击首页上部左侧的API申请按钮,填写申请的基本信息进行提交,就完成了API免费使用的申请。
获得授权。等待后台审核人员审核完成之后,就可以开始后续API试用了。
2.3.2 软件环境准备
“源1.0”项目尽可能采用了目前python API调用所需的主流依赖库,如果您之前有过相关开发经验,将不需要进行额外安装,如果您的电脑和python环境处于初始化状态,可以采用如下命令安装或确认相关依赖:
pip install requests hashlib json
完成安装后在您的硬盘上任意位置,用如下命令将GitHub上的代码fork下来即可。
git clone https://github.com/Shawn-Inspur/Yuan-1.0.git
需要注意的是,GitHub上下载的代码包含了三个部分,src中是模型训练的代码,sandbox中是web示例开发使用的沙箱代码,需要额外安装yarn,yuan_api中是采用API进行推理的示例代码和工具。
2.3.3 使用APIExp
2.3.4 模型选择
目前源模型API推理服务上线了3款预训练语言模型,参数规模都是百亿级别,分别是基础模型和两款领域模型(对话模型和翻译模型)。基础模型是通用的语言模型,具有较强的综合能力, 对话模型和翻译模型有着更为专业的领域知识。您可以根据自行设定的场景,选择不同引擎多次调试,筛选最佳适用引擎。
图1 模型选择
2.3.5 超参数配置
目前API提供的默认超参数是源算法工程师多次测试后优选的一组超参数,您可以选择源1.0预训练模型团队提供的默认参数,无需任何改动。当然,您也可以调整这些超参数,来探究更好的模型使用效果。
2.3.5.1 超参数说明
目前超参数一共有7个,详细说明如下表。
参数名 | 参数作用 | 取值范围 |
最大返回长度 | 模型推理返回结果的最大token序列长度。该参数设置越大,模型生成答案耗时越长。设置过短可能影响生成结果的完整性。token可能是一个字、词或者标点。 | [1-200] |
temperature | temperature值越大,模型的创造性越强,但生成效果不稳定。temperature值越小,模型的稳定性越强,生成效果稳定。 | (0-1] |
topP | 生成token的概率累加,从最大概率的token往下开始取,当取到累加值大于等于topP时停止。当topP为0时,该参数不起作用。 | [0-1] |
topK | 挑选概率最高的 k 个token作为候选集。若k值为1,则答案唯一。当topK为0时,该参数不起作用。 | [0-200] |
输入前缀 | 输入文字的开头符号,如“问题是:” | [0-8]个字符 |
输出前缀 | 输出文字的开头符号,如“答案是:” | [0-8]个字符 |
输出停止符 | 模型输出的停止符。生成文本遇到该字符停止,截断输出。如设定为“。”,则模型生成的文本结果从第一个“。”进行截断。 | [0,32]个字符组成的字符串 |
2.3.5.2 超参数推荐值
以下为不同引擎的推荐值,不同场景下,用户对输出的创造性和稳定性需求不同,还需自行进行调整。
参数名 | “基础模型”推荐值 | “对话模型”推荐值 | “翻译模型”推荐值 |
最大返回长度 | 50 | 50 | 50 |
temperature | 1.0 | 1.0 | 1.0 |
topP | 0.8 | 0.7 | 0.8 |
topK | 5 | 5 | 5 |
输入前缀 | 空 | 空 | 空 |
输出前缀 | 空 | 空 | 空 |
输出停止符 | 空 | 空 | 空 |
2.3.6 输入示例
源1.0模型是语言模型,输入一段文本,模型就会输出一段文本。在输入区进行文本输入,输入完成点击【提交】按钮,就将输入区的文本提交给了源模型,耐心等待输出即可。
源1.0预训练语言模型是支持zero-shot和few-shot使用的,zero-shot和few-shot的意思是给模型一些“例子”作为先验知识,zero-shot是指不给任何例子,few-shot是指给出一些例子。
2.3.6.1 zero-shot使用
在输入区进行文本输入,输入完成点击【提交】按钮,就将输入区的文本提交给了源模型,耐心等待输出即可。例如,输入:用“首屈一指”这个词造句吧。
图2 Zero-shot使用输入
点击提交后,返回结果为:“我是首屈一指的!”
图3 Zero-shot使用输出
2.3.6.2 few-shot使用
在zero-shot无法达到预期效果的情况下,可以先给出几个例子。
例如:以“故园”为题作一首诗:
模型给出的结果看起来是在续写文章,而不是一首诗。
图4 Zero-shot使用效果
这是因为预训练语言模型是一种通用模型,当使用在特定任务