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

news2024/11/24 11:12:26

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 requests

api_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.coloradmin.cn/o/845523.html

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

相关文章

Java技术整理(4)—— 多线程并发篇

1、Java 线程实现/创建方式 (1)继承Thread类 Thread类本质上是实现了Runnable接口的实例,代表一个线程的实例,通过start()启动,自动执行run()方法。 (2)实现Runnable接口 Runnable是一个没有…

2023 java web面试秘籍

目录 第一章:Java Web基础知识1.介绍3.Java Web基本概念 4.常见面试问题第二章:Java Web核心概念和技术1.介绍3.Servlet和JSP4.Web安全5.常见面试问题 第三章:Java Web高级概念和技术1.介绍3.Spring框架4.安全性5.常见面试问题 第四章&#x…

Clickhouse 数据存储

一、数据分区 数据是以分区目录的形式组织的,每个分区独立分开存储.这种形式,查询数据时,可以有效的跳过无用的数据文件。 1.1 数据分区的规则 分区键的取值,生成分区ID,分区根据ID决定。根据分区键的数据类型不同&am…

springboot房地产管理java购房租房二手房j客户sp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 springboot房地产管理 系统1权限:管理员 …

Spring Boot多级缓存实现方案

1.背景 缓存,就是让数据更接近使用者,让访问速度加快,从而提升系统性能。工作机制大概是先从缓存中加载数据,如果没有,再从慢速设备(eg:数据库)中加载数据并同步到缓存中。 所谓多级缓存,是指在整个系统架…

2、简单上手+el挂载点+v-xx(v-text、v-html、v-on、v-show、v-if、v-bind、v-for)

官网&#xff1a; vue3&#xff1a;https://cn.vuejs.org/ vue2&#xff1a;https://v2.cn.vuejs.org/v2/guide/ 简单上手&#xff1a; 流程&#xff1a; 导入开发版本的Vue.js <!--开发环境版本&#xff0c;包含了有帮助的命令行警告--> <script src"https…

【IDEA+Spark Streaming 3.4.1+Dstream监控套接字流统计WordCount保存至MySQL8】

【IDEASpark Streaming 3.4.1Dstream监控套接字流统计WordCount保存至MySQL8】 把DStream写入到MySQL数据库中 Spark 3.4.1MySQL 8.0.30sbt 1.9.2 文章目录 【IDEASpark Streaming 3.4.1Dstream监控套接字流统计WordCount保存至MySQL8】前言一、背景说明二、使用步骤1.引入库2…

一个月 PMP 3A上岸经验复盘

2023年5月参加的线下考试&#xff0c;总复习时间一个月左右&#xff0c;刷到3A小绿饼 作为拖延症晚期&#xff0b;工作任务比较多&#xff0c;所以全程没有跟上老师的复习&#xff0c;最后集中在考前一个月临时抱佛脚&#xff0c;成功上岸不是梦 下面分享一下报名和备考经验 1月…

python画小车

文章目录 import matplotlib.pyplot as plt from matplotlib.patches import Rectangle import matplotlib.transforms as transforms import numpy as np # 创建图形窗口和坐标轴对象 fig, ax = plt.subplots()# 绘制小车矩形 def plot_robot(x, y, yaw, robot_length=2, robo…

python编写ocr识别图片汉字

当你需要构建一个简单的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;并在其中实现光学字符识别&#xff08;OCR&#xff09;功能时&#xff0c;wxPython是一个强大而灵活的选择。wxPython是一个基于Python的跨平台GUI开发框架&#xff0c;结合了wxWidgets C库…

Spring MVC项目概述及创建

Spring MVC项目概述及创建 1.什么是Spring MVC Spring MVC是基于SevletAPI的原始Web框架。Spring MVC项目也叫做SpringWeb项目。 它是在springboot项目中引入了web框架&#xff0c;原本的spring项目不具备网络通信能力&#xff0c;而spring mvc允许http响应&#xff0c;当用…

芯片热处理设备 HTR-4立式4寸快速退火炉

HTR-4立式4寸快速退火炉 HTR-4立式4寸快速退火炉&#xff08;芯片热处理设备&#xff09;广泛应用在IC晶圆、LED晶圆、MEMS、化合物半导体和功率器件等多种芯片产品的生产&#xff0c;和欧姆接触快速合金、离子注入退火、氧化物生长、消除应力和致密化等工艺当中&#xff0c;通…

调整vscode

调整vscode 连wifi linux连接wifi

noisy_crt 题目复现

文章目录 题一([NeepuCtf 2023]loud)题目描述&#xff1a;题目分析&#xff1a; 题二([NeepuCtf 2023]loud2)题目描述&#xff1a;题目分析&#xff1a; 浅记一下 论文在此 不过吧&#xff0c;内容太多了&#xff0c;我也不想看 题一([NeepuCtf 2023]loud) 题目描述&#xff…

C语言调试实用技巧之 2

导言&#xff1a; 今天也给大家介绍一些调试技巧 1.如何写出好&#xff08;易于调试&#xff09;的代码 1.1标准&#xff1a; 1.2推荐技巧 1.2.1assert&#xff08;&#xff09;//断言 用assert代替if语句 提示&#xff1a;assert是宏&#xff0c;不是函数 需要包含的头文…

配置Picgo图床之COS、OSS、Github图床

简介 PicGo是一款开源的图片上传和管理工具&#xff0c;它提供了简单易用的界面和丰富的功能&#xff0c;方便用户上传、管理和分享图片。 以下是PicGo的一些主要特点和功能&#xff1a; 图片上传&#xff1a;PicGo支持将本地图片快速上传到云存储服务&#xff0c;如七牛云、…

NamedParameterJdbcTemplate.queryForList 方法的使用说明

objectMapper.configure 方法是 Jackson 提供的一个用于配置 ObjectMapper 对象的方法。ObjectMapper 是 Jackson 库的核心类&#xff0c;用于将 Java 对象与 JSON 数据相互转换。 configure 方法的作用是设置 ObjectMapper 的配置选项&#xff0c;例如设置日期格式、设置序列…

博客优化差不多了

博客地址&#xff1a;https://blog.zysicyj.top/ 这篇文章不是教学博客&#xff0c;后续考虑看是否出教学 具体优化视频可以观看B站视频 https://space.bilibili.com/258577429 这个博客是HexoGithub Pages搭建的&#xff0c;如何搭建可以看我之前的文章&#xff0c;主题是…

普及100Hz高刷+1ms响应 微星发布27寸显示器:仅售799元

不论办公还是游戏&#xff0c;高刷及低响应时间都很重要&#xff0c;微星现在推出了一款27寸显示器PRO MP273A&#xff0c; 售价只有799元&#xff0c;但支持100Hz高刷、1ms响应时间&#xff0c;还有FreeSync技术减少撕裂。 PRO MP273A的100Hz高刷新率是其最大的卖点之一&#…

如何为网站进行全面的整站翻译?

要翻译整个网站&#xff0c;可以按照以下步骤进行&#xff1a; 确定翻译需求&#xff1a;确定你需要将整个网站翻译成哪种语言。这可以根据你的目标受众和市场进行决定。 寻找翻译资源&#xff1a;你可以选择以下几种方式来进行网站翻译&#xff1a; a. 人工翻译&#xff1a;雇…