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
相关文章:

Llama 2 云端部署与API调用【AWS SageMaker】
Meta 刚刚发布了 Llama 2 大模型。如果你和我们一样,你一定会迫不及待地想要亲自动手并用它来构建。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 使用任何类型的 LLM 进行构建的第一步是将其托管在某处并通过 API 使用它。 然后你的开发人员可以轻松地将…...

根文件系统制作
1.官网下载工具 制作工具:busybox https://busybox.net/downloads/ 2.制作根文件系统 2.1准备工作 a.把压缩包放在FSP1M目录下,并解压 2.2正式开始 2.2.1配置交叉编译工具链 1. 打开Makefile文件 2. 修改ARCH ?$(SUBARCH) …...

Linux ARM64架构 动态替换 altinstructions
文章目录 简介一、altinstructions节1.1 .altinstructions1.2 .rela.altinstructions 二、内核模块重定位源码分析参考资料 简介 在内核开发中,有时需要对内核代码进行修补,以解决bug、优化性能或引入新功能。替代指令(altinstructions&…...

Mac显示隐藏文件夹
1、设置隐藏文件可见 defaults write com.apple.finder AppleShowAllFiles TRUE 2、killall Finder killall Finder...
使用 Habana Gaudi2 加速视觉语言模型 BridgeTower
🤗 宝子们可以戳 阅读原文 查看文中所有的外部链接哟! 在对最先进的视觉语言模型 BridgeTower 进行微调时,使用 Optimum Habana v1.6, Habana Gaudi2 可以达到 近 3 倍于 A100 的速度。硬件加速的数据加载以及 fast DDP 这两个新特…...

mysql查询语句之实践篇
基础查询语句 完整语法格式如下: select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定 -- 创建表 create table stu(id int,name varchar(20),chinese double,english double,math double ); --…...
Linux 和 MacOS 中的 profile 文件详解(二)
上篇文章讲解了 profile 文件的作用、login shell 和 non-login shell 的定义、不同 profile 被 bash shell 在不同情况下的加载顺序和作用,本文讲解一下 zsh shell 相关的知识。 zsh shell MacOS 从 Catalina 版本开始将 zsh 作为默认登录 shell 和交互式 shell。…...

Python之多重继承
一、多重继承 Python支持多重继承,一个子类可以有多个“直接父类”。这样,就具备了“多个父类”的特点。但是由于,这样会被“类的整体层次”搞的异常复杂,尽量避免使用。 class A:def aa(self):print("aa") class B…...

前端CSS文字阴影text-shadow记录
前端CSS文字阴影text-shadow记录 一、文字阴影 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Doc…...

maven 删除下载失败的包
本文介绍了当Maven包报红时,使用删除相关文件的方法来解决该问题。文章详细说明了_remote.repositories、.lastUpdated和_maven.repositories文件的作用,以及如何使用命令行删除这些文件。这些方法可以帮助开发者解决Maven包报红的问题,确保项…...

《吐血整理》高级系列教程-吃透Fiddler抓包教程(37)-掌握Fiddler中Fiddler Script用法你有多牛逼-下
1.简介 Fiddler是一款强大的HTTP抓包工具,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大的帮助。Fiddler提供的功能基本上能…...

网络安全进阶学习第十二课——SQL手工注入3(Access数据库)
文章目录 注入流程:1、判断数据库类型2、判断表名3、判断列名4、判断列数1)判断显示位 5、判断数据长度6、爆破数据内容 注入流程: 判断数据库类型 ——> 判断表名 ——> 判断列名 ——> 判断列名长度 ——> 查出数据。 asp的网…...
Zookeeper集群+Kafka集群
目录 一丶Zookkeeper概述 二、Zookeeper 特点 2.1Zookeeper 应用场景 2.2Zookeeper 选举机制 2.2.1第一次启动选举机制 2.2.2非第一次启动选举机制 三、部署 Zookeeper 集群 3.1//安装 JDK 3.2安装 Zookeeper 3.2.1修改配置文件 3.2.2拷贝配置好的 Zookeeper 配置文件…...

管理类联考——逻辑——论证逻辑——汇总篇——目录+提炼
文章目录 一、削弱方法关系的削弱必要方法的削弱因果推理的削弱果因推理的削弱概念跳跃的削弱数量比例的削弱比例因果的削弱 二、支持方法关系的支持必要方法的支持因果推理的支持果因推理的支持概念跳跃的支持数量比例的支持比例因果的支持 三、假设方法关系的假设必要方法的假…...

用excel格式书写的接口用例执行脚本
创建测试用例和测试结果集文件夹: excel编写的接口测试用例如下: 1 encoding 响应的编码格式。所测项目大部分是utf-8,有一个特殊项目是utf-8-sig 2 params 对应requests的params 3 data,对应requests的data 有些参数是动态的&a…...

【flink】Chunk splitting has encountered exception
执行任务报错: Chunk splitting has encountered exception 错误信息截图: 完整的错误信息: 16:30:43,911 ERROR org.apache.flink.runtime.source.coordinator.SourceCoordinator [SourceCoordinator-Source: CDC Sourceorg.jobslink.flink…...

单元测试用例分组 demo
文章目录 目标1、使用 Category 进行用例分组(1)设置用例组(2)编写测试类,case设置对应的用例组(3)编写执行类(4)查看运行结果(5)联系项目 2、参数…...

观察者模式(Observer)
观察着模式是一种行为设计模式,可以用来定义对象间的一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图…...

20天学会rust(二)rust的基础语法篇
在第一节(20天学rust(一)和rust say hi)我们配置好了rust的环境,并且运行了一个简单的demo——practice-01,接下来我们将从示例入手,学习rust的基础语法。 首先来看下项目结构: 项目…...

Stephen Wolfram:嵌入的概念
The Concept of Embeddings 嵌入的概念 Neural nets—at least as they’re currently set up—are fundamentally based on numbers. So if we’re going to to use them to work on something like text we’ll need a way to represent our text with numbers. And certain…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...