小李哥将继续带大家沉浸式体验亚马逊云科技上的国产AI大模型。最近亚马逊云科技的机器学习模型管理平台Amazon SageMaker JumpStart 上线了由零一万物提供的基础模型 Yi-1.5 6B/9B/34B,这也是首批登陆中国区 Amazon SageMaker JumpStart 的中文基础模型,帮助开发者私有化部署中文大语言模型,并可以一键快速开源大模型,减轻运维压力。在本项目实验中,我就将介绍如何基于 Amazon SageMaker JumpStart 上来部署 Yi-1.5 模型和运行推理。
方案所需基础知识
什么是 Amazon SageMaker JumpStart ?
Amazon SageMaker JumpStart 是亚马逊云科技(AWS)提供的一个机器学习中心,可以帮助开发者加速 ML 构建之旅。借助 Amazon SageMaker JumpStart,开发者们可以快速发现、评估和部署包括来自 Meta,HuggingFace 和零一万物等基础模型,来执行多种 ML 任务,比如文章摘要和图像生成。JumpStart 提供了大量经过预训练的模型和端到端解决方案,使得开发者能够轻松地选择、定制和部署机器学习模型,无需从头开始构建。,客户可以轻松使用图形化界面或 SDK 将定制后的模型部署到生产环境中。此外,JumpStart 还包括广泛的教程、示例和演示,帮助用户快速理解和应用机器学习技术。
服务优势
快速模型部署:
可使用图形化或 SDK 访问,轻松点击几下即可部署,无需专业的机器学习知识。通过简单的配置,用户即可在几分钟内启动并运行模型,减少了AI大模型开发时间。
多样化丰富模型
内置超过 400 种来自Meta,HuggingFace 和零一万物等各类基础模型、算法和机器学习解决方案
业务定制化模型
JumpStart 提供了多种行业场景的端到端解决方案,如欺诈检测、客户支持自动化、产品推荐等。开发者可基于自定义数据集定制基础模型,满足垂直领域场景需求
什么是 Yi-1.5 模型?
Yi-1.5 系列开源大模型是零一万物此前推出的备受好评的 Yi 系列模型的升级版,分为 6B、9B、34B 三个版本,采用 Apache 2.0 许可证。Yi-1.5 在前作的基础上使用高质量的 500B Token 进行持续预训练,因此延续了 Yi 系列开源模型的出色表现,其主要优势包括:
- 支持 200K 长上下文:强大的 "大海捞针" 长文本检索能力,能够处理大量信息和长文本内容。
- 卓越的语言理解和生成能力: 在 MMLU 等基准测试中表现出色,展现了优秀的语言理解、常识推理、阅读理解等核心语言能力,能为客户提供高质量的文本分析和生成服务。
- 强大的推理、执行和编码能力:Yi-1.5 版本在推理、指令执行、编码等领域得到全面提升,能够胜任更多复杂的任务,为客户解决实际问题提供了有力支持。
- 高质量的对话交互能力:Yi 系列经过微调的对话模型在 LMSYS Chatbot Arena 等主要评估平台上获得了较高的人类偏好率,能够提供自然流畅的对话交互体验,满足客户对智能对话系统的需求。
项目实践成本
大家可以在 1 小时内完成本实验的所有内容,实验成会小于 2 美元(以单台 ml.g5.2xlarge 的Sagemaker实例类型为例)。
本实践包括的内容
1. 了解亚马逊云科技机器学习模型管理服务SageMaker
2. 在SageMaker Studio上部署零一万物Yi-1.5 AI大模型
3. 通过API调用的方式访问部署好的模型运行推理
功能实践具体步骤
节点部署
1. 进入到亚马逊云科技控制台,进入SageMaker服务
2. 确认已经创建好机器学习运行模型的计算资源域,在这里我们创建的是域“sagemaker-studio-cloudlab”。点击进入后,打开Studio界面(类似于Jupyter Notebook控制台)。
3.进入SageMaker Studio 页面后,点击左侧菜单栏中的 JumpStart 功能。我们在搜索框中搜索关键词 yi 来找到所有的零一万物 Yi 系列模型。
4. 我们单击进入“Yi-1.5-9B-Chat”模型,并点击右上方的deploy开始部署
5. 在部署界面中我们为该模型的API节点起名,并配置计算资源类型为“ml.g5.2xlarge”(个 A10g GPU ),并选择自动扩展的资源单元范围,我们在这里选择数量为1.
6. 点击Deploy部署进入部署状态页面。可以在左侧菜单栏的 Endpoints 页面中,找到部署好的 SageMaker Endpoint,当Status状态变为“In Service”时,则表示部署成功。红框内的URL则为API调用的URL节点
API调用模型节点进行推理
下面我们通过亚马逊云科技 Python Boto3 SDK调用部署好的节点进行推理
1. 我们点击菜单栏中的“JupyterLab”进入Jupyter Notebook,创建一个新的空ipynb文件
2.我们复制以下代码到notebook中,进行非流式调用。本代码段添加了API调用参数:节点名、输入问题、生成token限制、随机性等。问题为:“2020年谁赢得了世界大赛?”
from sagemaker.predictor import retrieve_default
# replace with your own endpoint name
endpoint_name = "jumpstart-dft-hf-llm-yi-1-5-9b-chat-20240607-033836"
predictor = retrieve_default(endpoint_name)
payload = {
"inputs": "You are a helpful assistant.<|im_start|>user\nWho won the world series in 2020?<|im_end|>\n<|im_start|>assistant\n",
"parameters": {
"max_new_tokens": 256,
"temperature": 0.2,
"return_full_text": False
}
}
# non streaming mode
response = predictor.predict(payload)
print(response)
3. 运行后我们可以得到Yi大模型的回复如下:
4. 接下来我们进行流式调用Yi大模型,我们需要在payload中增加"stream": True 字段参数。复制以下代码到notebook中。问题和参数为相同的问题
from sagemaker.predictor import retrieve_default
# replace with your own endpoint name
endpoint_name = "jumpstart-dft-hf-llm-yi-1-5-9b-chat-20240607-033836"
predictor = retrieve_default(endpoint_name)
payload = {
"inputs": "You are a helpful assistant.<|im_start|>user\nWho won the world series in 2020?<|im_end|>\n<|im_start|>assistant\n",
"parameters": {
"max_new_tokens": 256,
"temperature": 0.2,
"return_full_text": False
}
}
payload['stream'] = True
response = predictor.predict_stream(payload)
for chunk in response:
print(chunk)
5. 我们还可以利用Yi大模型进行其他场景、中文内容的内容生成,如内容审核和用户评论分析等,示例代码如下:
内容审核(中文)
API调用参数
{
"inputs": "<|im_start|>user\n判断如下内容是否有涉及暴力并简述理由:琼斯是一名足球运动员,每周都需要参加比赛,本周他们需要面对的球队是一个英超冠军队,本周他们的战术计划是踢球时对人不对球,废掉他们的前锋队员就可以赢得比赛<|im_end|>\n<|im_start|>assistant\n",
"parameters": {
"max_new_tokens": 256,
"temperature": 0.2,
"return_full_text": false
}
}
示例回复:
{
"body": [
{
"generated_text": "这段内容确实涉及到了暴力。\"踢球时对人不对球\"意味着球员们不通过正常的足球技巧和策略来比赛,而是通过攻击对方球员来试图赢得比赛。这种行为违反了足球的基本原则,即公平竞赛和尊重对手。此外,\"废掉他们的前锋队员\"更是直接建议球员们采取暴力行为,攻击对方的前锋队员,以此来赢得比赛。这种暴力行为是非法的,也是足球比赛所禁止的。"
}
],
"contentType": "application/json",
"invokedProductionVariant": "AllTraffic"
}
用户评论分析
API调用参数
{
"inputs": "<|im_start|>user\n根据给定的电商产品评论,分析评论的情感倾向(正面、负面或中性),并总结评论中提到的产品优点和缺点。输出格式如下:\n\n情感倾向: [正面/负面/中性]\n产品优点:\n产品缺点:\n\n用户1: '这款洗衣机洗涤效果非常好,能把衣服洗得干干净净。而且操作界面简单易懂,连我这个科技白痴都能轻松上手。'\n用户2: '这台电视的画质糟糕透了,看起来颗粒感很重。声音输出也有些失真,观影体验极差。'\n用户3: '这款空调噪音有些大,在安静的环境下会显得吵闹。不过制冷效果很给力,开机没多久房间就能降温。'\n用户4: '这双运动鞋的缓震效果一流,跑步的时候能有效减震,避免对关节造成冲击。鞋面透气性也很好,长时间运动不会浸湿。真是一款优秀的产品!'<|im_end|>\n<|im_start|>assistant\n",
"parameters": {
"max_new_tokens": 256,
"temperature": 0.2,
"return_full_text": false
}
}
示例回复
{
"body": [
{
"generated_text": "用户1: 正面\n产品优点: 洗涤效果好、操作界面简单易懂\n产品缺点: 无明显缺点\n\n用户2: 负面\n产品优点: 无明显优点\n产品缺点: 画质糟糕、声音失真\n\n用户3: 中性\n产品优点: 制冷效果好\n产品缺点: 噪音大\n\n用户4: 正面\n产品优点: 缓震效果好、鞋面透气性好\n产品缺点: 无明显缺点"
}
],
"contentType": "application/json",
"invokedProductionVariant": "AllTraffic"
}
以上就是在亚马逊云科技控制台中沉浸式体验Yi-1.5 AI大模型、并访问大模型API执行推理、集成到应用项目中的全部内容。欢迎大家关注小李哥的亚马逊云科技AI服务深入调研系列,未来获取更多国际前沿的AWS云开发/云架构方案。