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.rhkb.cn/news/81341.html

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

相关文章

决策树和随机森林对比

1.用accuracy来对比 # -*-coding:utf-8-*-""" accuracy来对比决策树和随机森林 """ from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_wine#(178, 13…

【Spring】使用注解存储Bean对象

目录 一、配置扫描路径(使用注解的方式存对象的前提) 二、使用类注解存储Bean对象 1、使用五大类注解存储Bean对象 2、为什么要这么多的类注解? 2.1、五大类注解之间的关系 3、获取Bean对象时的默认命名规则 三、使用方法注解来存储…

2023年新手如何学剪辑视频 想学视频剪辑如何入门

随着短视频、vlog等媒体形式的兴起,视频剪辑已经成为了热门技能。甚至有人说,不会修图可以,但不能不会剪视频。实际上,随着各种智能软件的发展,视频剪辑已经变得越来越简单。接下来,一起来看看新手如何学剪…

以指标驱动,保险、零售、制造企业开启精益敏捷运营的新范式

近日,以“释放数智生产力”为主题的 Kyligence 用户大会在上海前滩香格里拉大酒店成功举行。大会包含上午的主论坛和下午的 4 场平行论坛,并举办了闭门会议、Open Day 等活动。来自金融、零售、制造、医药等行业的客户及合作伙伴带来了超过 23 场主题演讲…

VAE、 EM、KL散度

文章目录 VAEVAE额外的损失函数 EMKL散度 VAE 左图相当于变量x,右图相当于z 假如在AE中,一张满月的图片作为输入,模型得到的输出是一张满月的图片;一张弦月的图片作为输入,模型得到的是一张弦月的图片。当从满月的code…

瞅一眼nginx

目录 🦬什么是nginx? 🦬nginx配置官方yum源: 🦬nginx优点 🦬nginx 缺点 🦬查看nginx默认模块 🐌nginx新版本的配置文件: 🐌nginx目录索引 🐌nginx状态…

网络编程(JavaEE初阶系列10)

目录 前言: 1.网络编程的基础 1.1为什么需要网络编程 1.2什么是网络编程 1.3网络编程中的基本概念 1.3.1发送端和接收端 1.3.2请求和响应 1.3.3客户端和服务端 2.Socket套接字 2.1概念 2.2分类 3.UDP数据报套接字编程 3.1DataGramSocket API 3.2Datagr…

【游戏客户端】制作你玩我猜Like玩法

【游戏客户端】制作你玩我猜Like玩法 大家好,我是Lampard猿奋~~ “你画我猜”相信大家都不陌生,当初这款小游戏可谓茶余饭后必玩之选,风头一时无二。今天要和大家分享如何实现一个你玩我猜Like的玩法。 我们可以简单的把需求拆成两个个部分&…

python实现对图油画、卡通、梦幻、草图、水彩效果

本篇博客将介绍如何使用wxPython模块和OpenCV库来实现对图像进行灰度化、二值化、伽马校正、色彩空间转换和图像反转这5种效果的合并程序。程序可以通过wxPython提供的GUI界面来选择图片路径和效果类型,程序会将处理后的图像保存到指定路径并打开。 步骤一&#xf…

2021年12月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 昨天的温度是5摄氏度,今天降温7摄氏度,今天的温度是多少摄氏度? A:12 B:7 C:2 D:-2 正确的答案是 D:-2。 解析: 根据题目描述,昨天的温度是 5 摄氏度,今天降温了 7 摄氏度。降温意味着温度变低,所以今天的温度…

k8s之Pod控制器

目录 一、Pod控制器及其功用二、pod控制器的多种类型2.1 pod容器中的有状态和无状态的区别 三、Deployment 控制器四、SatefulSet 控制器4.1 StatefulSet由以下几个部分组成4.2 为什么要有headless?4.3 为什么要有volumeClaimTemplate?4.4 滚动更新4.5 扩…

解决MAC M1处理器运行Android protoc时出现的错误

Protobuf是Google开发的一种新的结构化数据存储格式,一般用于结构化数据的序列化,也就是我们常说的数据序列化。这个序列化协议非常轻量级和高效,并且是跨平台的。目前,它支持多种主流语言,比传统的XML、JSON等方法更具…

性能优化必知必会

系统性能调优 分为四个层次 基础设施网络编解码分布式系统性能整体提升 一:基础设施优化 从提升单机进程的性能入手,包括高效的使用主机的CPU、内存、磁盘等硬件,通过提高并发编程提升吞吐量,根据业务特性选择合适的算法 01 …

CSS—选择器

目录 一、CSS简介 二、HTML页面中常用的元素 三、CSS语法规则 四、常用的选择器 五、选择器参考 一、CSS简介 CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式…

如何把非1024的采样数放入aac编码器

一. aac对数据规格要求 二、代码实现 1.初始化 2.填入数据 3.取数据 三.图解 一. aac对放入的采样数要求 我们知道aac每次接受的字节数是固定的,在之前的文章里有介绍libfdk_aac音频采样数和编码字节数注意 它支持的采样数和编码字节数分别是: fdk_aac …

Go context.WithCancel()的使用

WithCancel可以将一个Context包装为cancelCtx,并提供一个取消函数,调用这个取消函数,可以Cancel对应的Context Go语言context包-cancelCtx 疑问 context.WithCancel()取消机制的理解 父母5s钟后出门,倒计时,父母在时要学习,父母一走就可以玩 …

【mock安装时报错】

node版本需要大于16 切换>16的版本即可 建议使用 nvm进行 node版本状态管理 可参考另一篇文章 nvm多版本管理方案

windows美化任务栏,不使用软件

1.任务栏透明: 效果图: (1).winr打开命令行 输入regedit回车打开注册表 regedit (2).在注册表中打开 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced 这个路径 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explore…

爬虫获取电影数据----以沈腾参演电影为例

数据可视化&分析实战 1.1 沈腾参演电影数据获取 文章目录 数据可视化&分析实战前言1. 网页分析2. 构建数据获取函数2.1 网页数据获取函数2.2 网页照片获取函数 3. 获取参演影视作品基本数据4. 电影详细数据获取4.1 导演、演员、描述、类型、投票人数、评分信息、电影海…

【51单片机】晨启科技,7针OLED显示驱动程序,STC89C52RC

文章目录 原理图oled.coled.hmain.c 原理图 sbit OLED_SCLP4^3;//SCL-D0 sbit OLED_SDAP4^1;//SDA-D1 sbit OLED_RES P3^6;//RES sbit OLED_DC P3^7;//DC sbit OLED_CSP2^7; //CS oled.c #include "OLED.h"//******************************说明*******************…