欢迎来到《小5讲堂》
大家好,我是全栈小5。
这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!
目录
- 千帆大模型平台
- 基本结构图
- 我的数据集
- 提示词
- 响应文本
- 整体格式
- 自定义数据
- 上传数据集
- 模型精调
- 我的模型
- 在线服务
- 应用接入
- API鉴权
- 示例代码
- 调用API接口
- 效果
- 代码
千帆大模型平台
千帆大模型平台是百度AI开发的一站式大模型开发及服务运行平台,面向企业开发者。
该平台集成了多种大模型,包括语言模型、图像模型、语音模型和跨模态模型等,并提供了包括文心一言底层模型(ERNIE-Bot)和第三方开源大模型。
此外,千帆还提供了各种AI开发工具和整套开发环境,以及丰富的API和SDK,支持多种开发语言和框架,方便客户轻松使用和开发大模型应用。
千帆大模型平台致力于支持数据管理、自动化模型SFT以及推理服务云端部署的一站式大模型定制服务,以满足各行业的生成式AI应用需求。
面向不同的企业需求,千帆提供不同的功能服务,从而帮助企业快速构建AI应用,提升业务效率和创新能力。
基本结构图
大概的思路就是,自定义服务 》我的模型 》训练任务 》数据集
千帆大模型平台,本身提供很多服务和模型,直接使用即可,本篇文章将在【ERNIE-Speed】模型基础上创建自定义模型。
我的数据集
准备自己的数据集,要求100条以上的数据
提示词
prompt提示词,一般只有一个提示词,如下:
假如你是软件工程师,请给团队成员发送一段技术鼓励风格的40字春节祝福。
响应文本
response参考响应文本,可以有多个参考
在代码与算法的世界里迎接新春,愿你们的bug少,成就多,工作顺利,生活幸福,鼠标点击间带来无限可能。春节快乐!
整体格式
因为响应参考是可以多个,所以response是一个数组
[{"prompt": "", "response": [[""]]}]
自定义数据
提供尽量多相关的数据,因此高质量的提示词还是比较有价值的
[{"prompt": "假如你是软件工程师,请给团队成员发送一段技术鼓励风格的40字春节祝福。", "response": [["在代码与算法的世界里迎接新春,愿你们的bug少,成就多,工作顺利,生活幸福,鼠标点击间带来无限可能。春节快乐!"]]}]
[{"prompt": "请以舞龙舞狮题目,写一首五言律诗", "response": [["节日喜庆展威风,舞龙舞狮热闹中。彩旗迎风翻翻舞,鼓声震耳壮气盛。万众欢呼喜气浓。"]]}]
上传数据集
平台提供多种格式文件进行上传
模型精调
在上一步准备好自己的数据集后,接着就是进行模型精调,这里采用SFT进行训练任务。
利用准备好的训练数据及平台提供的预训练大模型,训练自己的大模型,训练任务是需要收费的,100条数据大概也就几块钱,根据自己情况进行训练。
博主这里的100条数据集,训练任务完成大概要20分钟。
我的模型
上传了数据集,并对数据集进行训练和完成后,就可以创建自己的大模型了。
选择模型训练方式,博主这里是选了SFT,模型配置就是选择对应自己训练好的任务
在线服务
上一步骤完成创建自己的模型后,就可以创建自己的模型服务,创建服务会自定部署且需要费用,相对比较高一点,350元/天。
主要操作就是,选择自己的模型,并设置自己模型服务的API地址,默认前缀是一样,需要自定义自己API地址
比如博主的API地址:https://xxx/my_service
应用接入
创建应用,目的是拿到API Key和Secret Key,通过这两个参数又可以拿到Access Token值。
access_token默认有效期30天,单位是秒,生产环境注意及时刷新。
API鉴权
地址:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Ilkkrb0i5
示例代码
点击跳转地址
- Python
import requests
import json
def main():
url = "https://aip.baidubce.com/oauth/2.0/token?client_id=[创建应用的API Key]&client_secret=[创建应用的
Secret Key]&grant_type=client_credentials"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
- C#
using System;
using System.IO;
using RestSharp;//依赖版本106.15.0 https://www.nuget.org/packages/RestSharp/106.15.0
namespace SampleApplication {
public class Sample {
public static void Main(string[] args) {
var client = new RestClient($"https://aip.baidubce.com/oauth/2.0/token?client_id=[创建应用的API Key]&client_secret=[创建应用的
Secret Key]&grant_type=client_credentials");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
var body = @"";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
调用API接口
在上一步骤拿到AT后,就可以调用自定义模型API,
点击跳转示例地址:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Klmhcyeej
效果
代码
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
"""
替换下列示例中的申请发布时填写的API名称
"""
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[申请发布时填写的API名称]?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "假如你是软件工程师,请给团队成员发送一段技术鼓励风格的40字春节祝福。"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。