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…...
智能语义分块:chunkhound如何解决RAG应用中的文档处理难题
1. 项目概述:从“分块”到“猎犬”的智能进化如果你在数据处理的深海里游过泳,尤其是处理过那些动辄几十上百GB的文本、代码或日志文件,那你一定对“分块”(Chunking)这个概念又爱又恨。爱的是,它是我们处理…...
热门的牙齿矫正正畸李杨哪个好
在社交媒体上,关于“牙齿矫正哪家好”、“李杨医生靠谱吗”的讨论热度居高不下。许多粉丝在评论区留言,想知道这位在网络红人榜上经常出现的正畸专家,是否真的值得托付那长达一两年的矫正周期。作为一个长期关注口腔健康领域的观察者…...
LLM应用开发框架llmflows:轻量级工作流编排实战指南
1. 项目概述:一个为LLM应用构建量身定制的轻量级框架最近在折腾大语言模型应用开发的朋友,估计都经历过类似的“甜蜜的烦恼”:想法很美好,但真要把想法变成可运行、可维护的代码,中间隔着无数个坑。从Prompt的反复调试…...
数据可视化:使用D3.js创建交互式图表
数据可视化:使用D3.js创建交互式图表 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊数据可视化这个话题。作为一个全栈开发者,我经常需要将复杂的数据以直观的方式展示给用户。D3.js是一个功能强大的数据可视化库&am…...
Intel Lunar Lake核显架构解析:Xe2-LPG如何重塑轻薄本图形性能
1. 项目概述:一次架构驱动的核显革命最近,Intel Lunar Lake(月亮湖)移动处理器的核显性能数据开始陆续曝光,行业内讨论的热度很高。作为一个长期关注移动平台图形性能的从业者,我第一时间梳理了目前能获取到…...
Django 模板(Template):告别硬编码,实现动态 HTML页面
IT策士 10余年一线大厂经验,专注 IT 思维、架构、职场进阶。 当你开始构建一个真正的 Web 应用时,很快就会厌倦这种方式: def home(request):return HttpResponse("<h1>欢迎,张三!</h1><p>今天…...
FCOS训练自己的数据?从Labelme标注到VOC格式转换,这份避坑指南请收好
FCOS训练自定义数据集:从Labelme标注到VOC格式的完整避坑指南 当你已经用Labelme完成了图像标注,却卡在数据格式转换这一步时,这篇文章将成为你的救星。FCOS作为一款优秀的全卷积目标检测模型,对输入数据格式有着严格的要求&#…...
Sora 2 + Premiere = 新一代“AI剪辑OS”?深度拆解其MediaCore架构、Timeline Graph API及动态权重调度算法
更多请点击: https://intelliparadigm.com 第一章:Sora 2 Premiere 新一代“AI剪辑OS”?概念演进与范式重构 传统视频编辑正经历一场静默但深刻的底层迁移——当 Sora 2 的原生时空建模能力与 Adobe Premiere Pro 的专业时间线引擎深度耦合…...
AES换成SM4就够了吗?国密算法迁移踩坑实录,附SM4/SM2完整代码和等保自查清单
等保2.0测评中"仍在使用国际算法"是最常见的扣分项之一。但把AES换成SM4就真的合规了吗?密钥管理怎么办?签名算法怎么选?本文从等保条款出发,梳理国密算法完整迁移路径,提供可直接使用的 SM4/SM2 Java代码和…...
环境配置与基础教程:保姆级教程:在 Mac M 芯片上利用 MPS 加速 YOLO 训练与推理的完整环境搭建
写在前面:为什么你的 Mac 也能跑深度学习? 几年前,如果有人告诉你用 MacBook 训练深度学习模型,你大概会笑出声。那时候 Mac 上的 PyTorch 只能依赖 CPU 吭哧吭哧地算,训练一个小模型都要等到天荒地老。但自从 Apple Silicon 芯片(M1、M2、M3、M4,以及最新的 M5)横空出…...
