在亚马逊云科技上利用Graviton4代芯片构建高性能Java应用(下篇)

news2024/11/16 3:43:01

简介

在AI迅猛发展的时代,芯片算力对于模型性能起到了至关重要的作用。一款能够同时兼具高性能和低成本的芯片,能够帮助开发者快速构建性能稳定的生成式AI应用,同时降低开发成本。今天小李哥将介绍亚马逊推出的4代高性能计算处理器Gravition,带大家了解如何利用Graviton芯片为Java开发的生成式AI应用提高性能、优化成本。

本系列上篇文章介绍了如何在云平台上创建Graviton芯片服务器,并在Graviton芯片服务器上安装Java应用,并对比Java应用在Graviton和Intel芯片服务器上的运行性能。在本系列下篇中,我们将利用Graviton芯片部署Java容器应用,并利用亚马逊云科技原生容器镜像库ECR保存和管理Java多架构容器镜像和容器Manifest清单。

方案所需基础知识 

什么是Graviton4代芯片?

Amazon Graviton 4 处理器由亚马逊云科技定制设计的第四代高性能、低功耗处理器,旨在为 Amazon 计算服务中的工作负载提供最佳性价比,相对于传统计算类工作负载(Graviton2)提供高达40%的性价比提升。与常见的 x86 处理器相比,基于 Graviton 4 的 EC2 实例具有以下特性:

  • 每个 vCPU 独占一个物理核心的计算资源,而非通过 SMT 技术获得一个线程;
  • 每个 vCPU 拥有更大的 L1/L2 Cache 容量;
  • 更快的内存带宽和更低的内存延时。
  • Graviton 处理器支持众多 Linux 操作系统,包括 Red Hat Enterprise Linux、SUSE 和 Ubuntu 等。
  • Graviton 兼容众多云原生服务和开源软件,兼容亚马逊云科技上的开发工具,数据库,容器,分析,无服务器等服务,拥有丰富的应用生态。

最新发布的第 4 代 Graviton 处理器(基于 Arm Neoverse-V2,ARMv9.0-a);主频提升,L2 缓存翻倍,L3 缓存容量提升,支持 SVE2; 内存:12*DDR5-5600(前代采用 8*DDR5-4800),内存带宽提升 75%;

本实践包括的内容

1. 在亚马逊云科技上分别创建x86芯片以及Graviton4芯片的服务器

2. 构建兼容x86芯片以及Graviton4芯片的多架构容器镜像及Manifest清单

3. 在服务器中根据Manifest清单启动并运行java多架构容器应用

项目实操步骤  

创建Graviton4芯片服务器

1. 首先我们进入亚马逊云科技控制台,进入EC2服务

 2.点击Launch Instance创建一台EC2服务器

3.在芯片架构处,我们选择实例类型为r8g.xlarge(4vCPU和32GiB内存)实例用于创建Graviton4芯片服务器。另外我们还需要创建一个r6i.xlarge实例,实例用于创建Intel x86芯片服务器。

4. 创建SSH登录秘钥对

5.为密钥对命名,并选择pem类型,点击右下角创建。

6.运行以下命令为密钥对授权,用于SSH登录服务器

chmod 400 test-only.pem

7. 为EC2服务器添加VPC和子网配置

8.选择配置防火墙安全组,在防火墙入站规则中添加允许SSH从0.0.0.0/0 IP范围访问

 9.并选择服务器存储,我们选择gp3类型的80GiB的磁盘存储。

通过SSH连接进入服务器

10.通过以下命令SSH登录到EC2服务器中,将创建好的EC2服务器IP地址替换到命令中“EC2实例公网 IP 地址”字段

ssh -i /path/key-pair-name.pem ec2-user@EC2实例公网 IP 地址

为多架构容器创建容器镜像库

11. 进入到ECR服务主页,在左侧菜单栏点击”Repositories“,点击红框创建镜像库

12. 将容器镜像库命名为”multiarchjava“,选择类型为私有,并点击创建

13. 创建完成后,我们可以在镜像库列表中看到我们刚创建的镜像库

14. 我们复制上图中的URI部分,URI格式如下:

{ACCOUNT_ID}.dkr.ecr.{AWS_REGION}.amazonaws.com/{存储库名称}
  • Account_ID为亚马逊云科技账号ID
  • AWS_REGION为ECR镜像库所在区域
  • 存储库名称为”multiarchjava“

15. 接下来我们打开亚马逊云科技云端命令行CloudShell

16. 接下来我们运行以下Shell命令获取ECR镜像库API访问的授权密码

TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
export AWS_REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/placement/region)
aws ecr get-login-password --region $AWS_REGION

运行后会得到以下输出,红框内的部分为密码:

构建多架构容器镜像

17. 在x86芯片服务器中,我们执行下面的命令用于安装启动Docker必要依赖

sudo su - root

## 安装 Amazon CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-$(arch).zip" -o "awscliv2.zip"
unzip -q awscliv2.zip 
./aws/install --update

## 安装 Docker
yum install -y jq git docker
systemctl start docker

18. 在运行以下命令,从远程Github拉取项目代码,构建Docker镜像。其中ECR_URL为我们在前面获取的ECR URL,构建的镜像标签为amd64

ECR_URL=xxxxxxxxxxxx.dkr.ecr.us-west-2.amazonaws.com

git clone https://github.com/ddynwzh1992/javaapp_graviton.git
cd javaapp_graviton/
docker build --tag $ECR_URL/multiarchjava:amd64 .

19. 我们通过以下命令登录ECR镜像库,输入密码授权访问,最后将镜像上传到镜像库中

docker login --username AWS $ECR_URL
docker push $ECR_URL/multiarchjava:amd64

20. 对于Gravition架构上的Docker镜像,我们使用相同的方法构建和上传镜像,唯一的区别是该镜像标签为arm64。

docker build --tag $ECR_URL/multiarchjava:arm64 .

21. 在全部上传成功后,我们会在ECR镜像库中看到两个不同标签的Docker镜像

创建多架构容器Manifest清单并启动容器

22. 我们运行以下命令创建多架构容器的Manifest清单,并推送清单到ECR镜像库中

## 创建 Manifest 清单
docker manifest create $ECR_URL/multiarchjava:javaapp --amend \
  $ECR_URL/multiarchjava:amd64 \
  $ECR_URL/multiarchjava:arm64

## 推送 Manifest 清单
docker manifest push $ECR_URL/multiarchjava:javaapp

23. 我们在ECR镜像库中可以看到新上传的标签为javaapp的Manifest清单,类型为Image Index

 

24. 如果我们想在不同芯片架构的服务器中通过Manifest清单启动镜像,我们需要运行以下命令

docker run -it -p 8010:8010 $ECR_URL/multiarchjava:javaapp

25. 启动成功后会得到如下多架构容器应用日志输出

 

以上就是利用亚马逊云科技自研Graviton4代芯片构建高性能、低成本的Java多架构容器应用程序的下篇内容。欢迎大家关注小李哥和我的亚马逊云科技AI服务深入调研系列,不要错过未来更多国际前沿的AWS云开发/云架构方案。

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

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

相关文章

计算机毕业设计Python电影评论情感分析 电影可视化 豆瓣电影爬虫 电影推荐系统 电影数据分析 电影大数据 大数据毕业设计 机器学习 深度学习 知识图谱

相关技术介绍 豆瓣电影数据采集与可视化分析系统是用当前应用很广泛的Python语言和Flask框架,并结合CSS与HTML搭建Web网页,使用MySQL数据库对数据进行存储,依次来开发实现系统的功能。本系统运行需要的软件有Pycharm、普通浏览器、Navicat f…

AD原理图update为pcb

首先,要在自己的项目下面创建好原理图和PCB,记得保存!!! 点击设计>update 更新成功!

数据结构-图-存储-邻接矩阵-邻接表

数据结构-图-存储 邻接矩阵 存储如下图1,图2 图1 对应邻接矩阵 图2 #include<bits/stdc.h> #define MAXN 1005 using namespace std; int n; int v[MAXN][MAXN]; int main(){cin>>n;for(int i1;i<n;i){for(int j1;j<n;j){cin>>v[i][j];}}for(int…

RM比赛常见的电机(直流无刷电机)

声明&#xff1a;个人笔记&#xff0c;仅供参考 一、M2006电机 M2006 P36 电机采用三相永磁直流无刷结构&#xff0c;具有输出转速高、体积小、功率密度高等特点。该电机内置位置传感器&#xff0c;可提供精确的位置反馈&#xff0c;以 FOC 矢量控制方式使电机产生连续的扭矩。…

Cannot Locate Document 原理图导入pcb出现报错

将原理图update到pcb时报错Cannot Locate Document&#xff1a; 记得保存pcb到你的项目就可以了

爬虫之淘宝接口获取||Python返回淘宝商品详情数据SKU接口

在学习爬虫的过程中&#xff0c;大多数的人都是些豆瓣&#xff0c;招聘网站什么的。这里给出一些工作上能够用得到的内容&#xff0c; 仅供大家参考。 本次需要看的是淘宝的接口&#xff0c; 这个接口与微博寻找接口的方式大致相同。请看详细的寻找方法。首先我们先在百度页面点…

python实现c4d的tp粒子在多个物体上发射思维粒子

基本状态思维粒子只能传入一个物体&#xff0c;在一个物体身上发射粒子。 场景如下&#xff0c;右边的multiEmitter的python标签里的python脚本执行后会在其下面生成数个从pt物体的拷贝&#xff0c;同时拷贝其上的XPresso标签及标签里的内容 下面是pt物体的XPresso标签标签的内…

[ RK3566-Android11 ] 关于 RK628F 驱动移植以及调试说明

问题描述 我这个项目的SDK比较老&#xff0c;移植RK628F最新驱动的调试过程&#xff0c;踩了很多坑&#xff0c;希望大家别踩坑。 解决方案&#xff1a; 首先在FTP上下载最新的RK628的驱动 rk628-for-all-v27-240730 版本。 下载完后 不要直接替换&#xff0c;不要直接替换&a…

Vue获取后端重定向拼接的参数

前言 比如我们要重定向这样一个连接&#xff1a; http://192.168.2.189:8081?nameadmin springboot重定向&#xff1a; Vue获取&#xff1a; getParam(param) {var reg new RegExp("(^|&)" param "([^&]*)(&|$)");var r location.searc…

计算机的错误计算(八十八)

摘要 探讨双曲反正切函数 atanh(x)的计算精度问题。 IEEE 754-2019 中含有 atanh(x)函数。其定义为 例1. 计算 atanh(0.9999999999997) . 不妨用 LibreOffice中的电子表格计算&#xff0c;则有&#xff1a; 若在线运行JavaScript代码&#xff1a; let result Math.atanh(0.…

单电源转正负双电源电路

单电源转正负双电源电路&#xff1a; 1.通过两个DCDC芯片进行降压&#xff1a; 不同负载下电源纹波不同&#xff0c;所以看电源纹波首先先说明负载是什么&#xff1a; 采用TPS5430将单电源转换成双电源的方式供电&#xff1a; 2.通过电荷泵的方式转换电压 成本可以压低&#…

民生水暖工程背后的科技力量引领工程智能化转型

物联网技术的广泛应用&#xff0c;使得物理设备能够实时传输运行状态数据至云端&#xff0c;实现了设备的全面感知与互联互通。每一台机器、每一个传感器都成为数据的源泉&#xff0c;为远程监控提供了坚实的基础。而大数据分析技术的应用&#xff0c;则让这些海量数据得以被高…

R语言统计分析——用回归做ANOVA

参考资料&#xff1a;R语言实战【第2版】 ANOVA&#xff08;方差分析&#xff09;和回归都是广义线性模型的特例&#xff0c;方差分析也都可以使用lm()函数来分析。 # 加载multcomp包 library(multcomp) # 查看cholesterol数据集的处理水平 levels(cholesterol$trt) # 用aov()…

久久派搭建风电系统网站(基于mariadb数据库)

久久派搭建风电系统网站 1、安装mariadb2、设置root账号密码3、设置MariaDB开机自启4、允许远程登录5、还原数据库6、扩容swap7、拷贝数据8、运行系统方法1&#xff1a;通过sh脚本运行方法2&#xff1a;直接运行jar包 文中所需网盘资料及讲解视频在文章末尾哦1。 本文中参考资料…

万能无线航模模拟器加密狗说明书

快速开始 Step1 插入加密狗到你的电脑&#xff0c;手机或MAC的USB口。 Step2 使用加密狗上的按钮&#xff0c;选择一个合适的协议。具体看第一节。 Step3 和遥控器对码&#xff0c;成功后指示灯常亮。具体看FAQ第二节。 Step4 在你的电脑&#xff0c;手机或MAC 安装对…

GD32F103单片机-GPIO

GD32F103单片机-GPIO 一、GPIO介绍二、GD32F103库函数介绍三、GPIO输入输出3.1 GPIO输出-LED闪烁3.2 GPIO输入-独立按键 STM32GPIO部分见STM32F1单片机-GPIO 一、GPIO介绍 GD32的GPIO同STM32一样&#xff0c;GPIO可以配置成8种输入输出模式&#xff0c;由软件配置成推挽输出、…

八、发票校验(2)

第三节 发票校验后台设置 1、设置发票进项税默认值&#xff08;事务代码OMR2&#xff09; 维护指定公司代码的进项税缺省值&#xff0c;在采购业务的发票校验操作中能够快速地指定税码。 ——路径&#xff1a;IMG&#xff1a;物料管理>后勤发票校验>收入发票>维护…

备战秋招60天算法挑战,Day34

题目链接&#xff1a; https://leetcode.cn/problems/coin-change/ 视频题解&#xff1a; https://www.bilibili.com/video/BV1qsvDeHEkg/ LeetCode 322.零钱兑换 题目描述 给你一个整数数组coins&#xff0c;表示不同面额的硬币&#xff1b;以及一个整数amount&#xff0c;表…

为数据仓库构建Zero-ETL无缝集成数据分析方案(上篇)

对于从事数据分析的小伙伴们来说&#xff0c;最头疼的莫过于数据处理的阶段。在我们将数据源的原始数据导入数据仓储进行分析之前&#xff0c;我们通常需要进行ETL流程对数据格式进行统一转换&#xff0c;这个流程需要分配专业数据工程师基于业务情况完成&#xff0c;整个过程十…

力扣每日1题--2181.合并零之间的节点

问题 下面我会向大家介绍我的思考过程和解题思路 解题思路 首先&#xff0c;我们看问题提供给我们的提示部分。第一点给了我们节点的数目&#xff0c;第二点给了我们val的范围&#xff0c;而我们这道题是要让我们求和的问题&#xff0c;那么我们就应该估算一下我们数据的一个…