Llama 2 云端部署与API调用【AWS SageMaker】

Meta 刚刚发布了 Llama 2 大模型。如果你和我们一样,你一定会迫不及待地想要亲自动手并用它来构建。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

使用任何类型的 LLM 进行构建的第一步是将其托管在某处并通过 API 使用它。 然后你的开发人员可以轻松地将其集成到你的应用程序中。本指南将介绍如何在Amazon SageMaker 上托管 Llama 2 模型,以及如何利用 AWS Lambda 和 AWS API Gateway 通过 API 使用模型。

在开始之前,请前往amazon aws 登录或注册帐户。新帐户将自动获得免费套餐访问权限,这确实提供了一些 Sagemaker 积分,但请留意它们,因为根据你的服务器选择,账单可能会高得离谱。

1、为什么使用Llama2?

当我可以使用 Open AI API 时,为什么要使用 llama 2?

3个原因:

  • 安全性——让敏感数据远离第三方供应商
  • 可靠性——确保您的应用程序有正常运行时间
  • 一致性——每次提出问题都会得到相同的结果

2、托管Llama2模型

进入 AWS 仪表板后,在搜索栏中搜索 AWS Sagemaker,然后单击它以转到 AWS Sagemaker
在这里插入图片描述

AWS Sagemaker 是 AWS 用于部署和托管机器学习模型的解决方案。
在这里插入图片描述

2.1 在 AWS Sagemaker 上设置域

单击左侧边栏上的域
在这里插入图片描述

单击“创建域”

在这里插入图片描述

确保选中“快速设置”框
在这里插入图片描述

使用你选择的域填写下面的表格,并填写其余选项,如屏幕截图中所示。

如果你对此不熟悉,请在执行角色类别中选择创建新角色。 否则,请选择之前可能创建过的角色。
在这里插入图片描述

单击表单上的“提交”以创建你的域
在这里插入图片描述

域创建完成后,你将看到此屏幕
在这里插入图片描述

记下在此处看到的用户名,因为下一步部署我们的模型需要它

如果你的域创建时出现错误,可能是由于用户权限或 VPC 配置造成的。

2.2 启动 Sagemaker Studio 会话

域创建完成后,单击左侧边栏中的 Studio 链接
在这里插入图片描述

选择你之前创建的域和用户配置文件,然后单击“Open Studio”

在这里插入图片描述

这将带你进入 Jupyter 实验室工作室会话,如下所示:

2.3 选择 Llama-2–7b-chat 模型

我们将部署 llama 2 模型的聊天优化版和 7b版本。

有一个更强大的 70b 型号,它更加稳定,出于演示目的,它的成本太高,所以我们将使用较小的型号

单击 SageMaker Jumpstart 选项卡下左侧栏中的模型、笔记本、解决方案
在这里插入图片描述

在搜索栏中搜索 Llama 2 模型。 我们正在寻找 7b 聊天模型。 点击模型
在这里插入图片描述

如果没有看到此模型,那么可能需要关闭并重新启动工作室会话

这将带你进入模型页面。 你可以更改最适合你的用例的部署设置,但我们将继续使用默认的 Sagemaker 设置并按原样部署模型
在这里插入图片描述

70B 版本需要强大的服务器,因此如果你的帐户无权访问它,你的部署可能会出错。 在这种情况下,请向 AWS 服务配额提交请求。

等待 5-10 分钟以完成部署并确认屏幕显示
在这里插入图片描述

记下模型的端点名称,因为你需要它来通过 API 使用模型。

至此,你现在已经完成了托管模型的第一部分。

2、通过 API 使用Llama 2模型

首先进入AWS Lambda创建Lambda函数,lambda 函数将用于调用 LLM 模型的端点。

在AWS控制台搜索栏中搜索Lambda服务,然后单击Lambda服务
在这里插入图片描述

单击“Create Function”:
在这里插入图片描述

输入正确的函数名称(无论什么),选择Python 3.10作为运行时和x86_64架构。 然后点击创建函数
在这里插入图片描述

3.1 指定模型的端点

输入前面最后一步中的 LLM 模型的端点名称作为环境变量

单击新创建的模型中的“配置”选项卡
在这里插入图片描述

单击环境变量,然后单击编辑
在这里插入图片描述

单击下一个屏幕上的“Add environment variable”:

在这里插入图片描述

输入 ENDPOINT_NAME 作为键,输入模型的端点名称作为值。 单击“保存”
在这里插入图片描述

你可以为想要的键添加任何内容,但它需要与我们在代码中编写的内容相匹配以便稍后调用该函数

3.2 编写调用 Llama 模型的代码

返回“代码”选项卡,然后复制并粘贴以下代码

import os
import io
import boto3
import json# grab environment variables
ENDPOINT_NAME = os.environ['ENDPOINT_NAME']
runtime= boto3.client('runtime.sagemaker')def lambda_handler(event, context):response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,ContentType='application/json',Body=event['body'],CustomAttributes="accept_eula=true")result = json.loads(response['Body'].read().decode())return {"statusCode": 200,"body": json.dumps(result)}

代码插入成功后点击"Deploy"进行部署:
在这里插入图片描述

4、将Lambda 函数接入 AWS API Gateway

转到 Lambda 函数的主屏幕并单击添加触发器

在这里插入图片描述

在“添加触发器”对话框中选择“API 网关”菜单项
在这里插入图片描述

填写 API Gateway 对话框,如下所示,然后单击“添加”
在这里插入图片描述

成功创建 API 端点后,你可以在“配置”选项卡和“触发器”侧栏下查看 API URL
在这里插入图片描述

5、测试Llama2 API

使用以下 JSON 正文向你的 API URL 发出 POST 或 GET 请求

{"inputs": [[{"role": "system", "content": "You are chat bot who writes songs"},{"role": "user", "content": "Write a rap about Barbie"}]],"parameters": {"max_new_tokens":256, "top_p":0.9, "temperature":0.6}
}

input 键存储一个数组,每个元素是你和聊天机器人之间的 1 次对话。

对话由嵌套的 JSON 对象表示,其中包含表示对话中“人”的角色和作为提示的内容

检查API 的响应状态码和响应JSON。 状态代码应为 200,响应 JSON 将如下所示

[{"generation": {"role": "assistant", 
"content": " Yo, listen up, I got a story to tell 
'Bout a doll that's fly, and she's doin' well
Barbie, Barbie, she's the queen of the scene
From Malibu to Kenya, she's always lookin' supreme
She's got the style, she's got the grace
She's got the swag, she's got the pace
She's got the cars, she's got the cash
She's livin' large, she's got the flash
She's got the perfect body, she's got the perfect face
She's got the perfect hair, she's got the perfect pace
She's got the perfect life, she's got the perfect vibe
She's got it all, she's got the perfect ride
She's got Ken by her side, he's her main man
He's got the skills, he's got the plan
They're livin' large, they're got the fame
They're the perfect couple, they're got the game
So listen up,"}}]

可以使用以下Python代码来测试API。 将 api_url 的值替换为您在上一步 4 中创建的 API Url

import requestsapi_url = 'https://spip03jtgd.execute-api.us-east-1.amazonaws.com/default/call-bloom-llm'json_body = {"inputs": [[{"role": "system", "content": "You are chat bot who writes songs"},{"role": "user", "content": "Write a rap about Barbie"}]],"parameters": {"max_new_tokens":256, "top_p":0.9, "temperature":0.6}
}r = requests.post(api_url, json=json_body)print(r.json())

6、可能的错误

在这种情况下你可能会收到一些错误:

  • 权限:如果你的角色没有使用 Sagemaker 调用端点策略的权限,那么你将无法调用端点。
  • 超时:根据你的提示和变量,可能会收到超时错误。 与权限不同,这是一个简单的修复。 单击“配置”、“常规”和“编辑超时”,然后将超时值设置为更多秒数

在这里插入图片描述


原文链接:Llama2云端部署及调用 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 第二节 Vue3的响应式

1.Vue3的响应式原理 2.ref函数和reactive函数的对比 3.setup注意点 一.Vue3的响应式原理 1.Vue2.x中的响应式原理 ① 实现原理 对象类型:通过Object.defineProperty() 对属性的读取,修改进行拦截(数据劫持)数组类型&#xf…

zookeeper集群和kafka的相关概念就部署

目录 一、Zookeeper概述 1、Zookeeper 定义 2、Zookeeper 工作机制 3、Zookeeper 特点 4、Zookeeper 数据结构 5、Zookeeper 应用场景 (1)统一命名服务 (2)统一配置管理 (3)统一集群管理 (4&a…

Vue缓存字典值减少网络请求次数,解决同样参数并发请求多次

前言 在一些项目里,我们可能有着大量的下拉框,而这些下拉框的数据就来源于我们后端接口返回的字典信息。于是,画风可能是这样的,每次下拉,你都需要请求一次字典接口拿到这些数据,于是每次组件刷新都会重复…

C# PaddleDetection 版面分析

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Extensions; using Sdcb.PaddleDetection; using Sdcb.PaddleInference; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin…

目前Java后端就业前景怎么样?

前言 并不乐观,看看现在的就业形式就知道了,基本上是僧多粥少的情况,你可能会看到很多编程语言排行榜或者流行榜中Java的排名很高,如同下面这种: 看排名确实可以粗略的得知语言当下的流行度、使用率,但是它…

springBoot的配置文件

目录 配置文件的格式 1. 配置项的分类和中文支持 2. properties 配置文件 读取配置文件 优缺点分析 3. yml 配置文件 读取配置文件 优缺点分析: 4. 多个配置文件 5. properties 和 yml 的对比 在 springBoot 中很多重要的数据是需要通过配置文件进行配置…

并发——什么是线程,什么是进程

文章目录 1.1. 何为进程?1.2. 何为线程? 1.1. 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时…

qt源码---事件系统之QCoreApplication

上一节分析了qt和windows系统之间的消息的传递,本节着重看一下,qt内部的事件是如何传递的? 1.sendEvent函数 在使用的自定义事件时,有时需要手动抛出一个事件,常用的方式有2种,其一时阻塞式的sendEvent函…

Kubernetes(K8s)从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群

Kubernetes K8s从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群 一、etcd高可用拓扑选项1.堆叠(Stacked)etcd 拓扑2.外部 etcd 拓扑 二、准备工作三、建立集群1.将 kubelet 配置为 etcd 的服务管理器。2.为 kubeadm 创建配置文件…

微服务间消息传递

微服务间消息传递 微服务是一种软件开发架构,它将一个大型应用程序拆分为一系列小型、独立的服务。每个服务都可以独立开发、部署和扩展,并通过轻量级的通信机制进行交互。 应用开发 common模块中包含服务提供者和服务消费者共享的内容provider模块是…

K8S系列文章 之 编写自动化部署K8S脚本

介绍 通过ansible脚本shell实现自动化部署k8s基础集群(v1.25.0) 部署结构 1. 通过二进制部署包镜像安装k8s集群、目录etcd节点只支持1-3个节点、最多三个etcd节点 2. 因k8s版本相对较新、需要升级内核来支持后台程序、当前版本只支持Cento7,内核版本(5.19.4-1.el7…

Object Map 的相互转换

学生业务对象定义&#xff1a;Student Student student new Student(); student.setId(1L); student.setName("令狐冲") student.setAge(10) 第一种&#xff1a;通过Alibaba Fastjson实现 pom.xml 文件依赖 <dependency><groupId>com.alibaba</g…

【EI/SCOPUS征稿】第三届电子通信与计算机科学技术国际学术会议(ECCST 2023)

第三届电子通信与计算机科学技术国际学术会议&#xff08;ECCST 2023&#xff09; 2023 3rd International Conference on Electronic Communication,Computer Science and Technology 2023年电子通信与计算机科学技术国际学术会议定于2023年9月15-17日在中国上海举行。会议旨…

培训报名小程序报名功能开发

目录 1 创建页面2 新建URL参数3 课程详细信息4 报名数据源创建5 报名信息功能开发6 设置页面跳转7 最终实现的效果总结 在培训报名小程序中&#xff0c;我们已经开发了首页和列表页。在列表页点击报名时就跳转到报名页面&#xff0c;先看我们的原型 报名页分为两个部分&#x…

ABAQUS启动GPU加速计算

文章目录 系统说明CUDA安装安装cuDNNABAQUS设置Lamb波压电仿真 系统说明 基于笔记本电脑&#xff0c;RTX4060&#xff0c;win11系统。 ABAQUS的有限元求解器是基于CPU的&#xff0c;但是它也支持使用GPU进行加速计算。仅支持隐式求解器standard。显示求解器explicit不能用。 …

Golang之路---04 并发编程——WaitGroup

WaitGroup 为了保证 main goroutine 在所有的 goroutine 都执行完毕后再退出&#xff0c;前面使用了 time.Sleep 这种简单的方式。 由于写的 demo 都是比较简单的&#xff0c; sleep 个 1 秒&#xff0c;我们主观上认为是够用的。 但在实际开发中&#xff0c;开发人员是无法…

【大数据】Flink 详解(二):核心篇 Ⅰ

Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ 14、Flink 的四大基石是什么&#xff1f; ​ Flink 的四大基石分别是&#xff1a; Checkpoint&#xff08;检查点&#xff09;State&#xff08;状态&#xff09;Time&#xff08;时间&#xff09;Window&#xff…

《面试1v1》ElasticSearch架构设计

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

AWS多账户单点登录 IAM Identity Center(AWS SSO)

需求场景 多个aws账户&#xff0c;登陆麻烦且不安全&#xff0c;SSO单点功能并且外部身份提供者 — 如果您要管理外部身份提供者&#xff08;IdP&#xff09;&#xff08;例如 Okta 或 Active Directory&#xff09;中的用户。 官方文档&#xff1a;https://docs.aws.amazon.c…

Linux命令200例:cd用于改变当前工作目录(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…