
在4月19号的旧金山AWS技术峰会上,亚马逊CTO Werner Vogels宣布了多项AWS新功能,其中就包括众人期待已久的FPGA实例F1。
F1 实例配有最新的 16 nm Xilinx UltraScale Plus FPGA,目前有f1.2xlarge和f1.16xlarge两种类型,其中f1.2xlarge配备有1个FPGA卡, f1.16xlarge配备有8个FPGA卡。
使用 F1 实例部署硬件加速在许多高性能计算 (HPC) 应用程序中非常有用,可解决需要高带宽、增强型联网和较高计算能力的复杂科学、工程和业务问题。F1 实例尤其适用于有时间要求的应用程序,如临床基因组学、实时视频处理和财务风险分析。
因为这段时间都在学习神经网络,所以F1实例最吸引我的是在FPGA上部署神经网络模型,神经网络的前向计算以高频脉冲的方式同时发生在门电路构成的神经网络单元上,想想都让人激动。
不过FPGA这个东西确实太专业了,入门学习曲线不是一般的陡,启动F1实例运行一个简单的Hello World都需要折腾一番。
所以在这里记录一下自己启动F1实例运行Hello World的过程,供各位参考,希望可以让大家开始开始FPGA的旅程。
### 启动f1实例
f1实例的启动过程和一般的EC2启动过程类似,有关AWS账号的准备,EC2创建过程的细节请大家参考相关技术文档。以下只列出一些需要注意的地方。
测试时我选择了“弗吉尼亚北部”这个区域,也就是us-east-1区域。
启动f1实例时强烈推荐使用 AWS FPGA Developer AMI 镜像, FPGA Developer AMI 包括一个预先打包的工具开发环境,其中含有用于模拟 FPGA 设计、编译代码及构建和注册 AFI 的脚本和工具。
在启动实例的第一步,选择系统镜像的时候选择“AWS Marketplace”,然后搜索“FPGA”就可以找到FPGA Developer AMI, 该镜像在弗吉尼亚北部区域的ID为:ami-3afc6f2c,镜像选择界面截图如下。

启动过程中注意给你的实例指定一个IAM Role, 后续使用AWS CLI命令行工具的时候就需要配置静态的Access Key和Secret Key了。
还有就是安全组配置,缺省的22号端口保留打开状态,另外建议开3389端口,后续如果你希望使用远程连接的方式使用图形化界面需要用到这个端口。
还有一个不需要再强调的就是你启动的f1实例需要有公有IP。
### 系统登录
在f1实例启动后在EC2控制台上找到这台实例的公有IP地址,然后通过ssh命令连接该实例,注意使用的用户名是centos, ssh命令样例如下:
`ssh -i ~/.ssh/<mykey.pem> centos@<ip address>`
登录以后可以看到下面的信息:
` ___ ___ ___ _ ___ _____ __ _ __ __ ___`
`| __| _ \/ __| /_\ | \| __\ \ / / /_\ | \/ |_ _|`
`| _|| _/ (_ |/ _ \ | |) | _| \ V / / _ \| |\/| || |`
`|_| |_| \___/_/ \_\ |___/|___| \_/ /_/ \_\_| |_|___|`
`AMI Version: 1.2.0`
`Readme: /home/centos/src/README.md`
`GUI Setup Steps: /home/centos/src/GUI_README.md`
`AMI Release Notes: /home/centos/src/RELEASE_NOTES.md`
`Xilinx Tools: /opt/Xilinx/`
`Developer Support: https://github.com/aws/aws-fpga/blob/master/README.md#developer-support`
注意这里提到的GUI设置说明文档: /home/centos/src/GUI_README.md,如果你后续希望使用图形化界面,请参考这个文档进行操作。
### 克隆AWS FPGA项目
在远程f1实例上创建一个工作目录,在该工作目录下执行以下命令克隆AWS FPGA 项目:
`git clone https://github.com/aws/aws-fpga.git`
执行完成以后可以看到一个`aws-fpga`目录
### 安装 FPGA SDK
进入`aws-fpga`目录,然后执行以下命令安装FPGA SDK:
`source sdk_setup.sh`
安装命令执行完以后会有以下输出,表示安装成功:
`Done with SDK install.`
`Done with AWS SDK setup.`
这个过程会安装好FPGA管理工具,通过这个管理工具可以查看FPGA卡的情况,列出FPGA卡上的镜像情况,还可以执行加载镜像等操作。
首先我们可以通过`fpga-describe-local-image-slots`命令查看FPGA卡的情况,这里就是FPGA的“image slot”的情况,具体命令请如下:
`sudo fpga-describe-local-image-slots -H`
在我的 f1.2xlarge 实例上有如下输出:
`$ sudo fpga-describe-local-image-slots -H`
`Type FpgaImageSlot VendorId DeviceId DBDF`
`AFIDEVICE 0 0x1d0f 0x1042 0000:00:1d.0`
这里列出的就是`slot 0`的情况,接着你可以使用`fpga-describe-local-image-slots`命令查看这个slot上的FPGA镜像情况:
`sudo fpga-describe-local-image -S 0`
其中参数 `-S` 用于指定希望查看的image slot,参数值就是FPGA image slot的编号。
如果你希望将新的FPGA镜像加载到一个image slot上, 你可以使用命令` fpga-load-local-image`, 同时通过参数 `-S`指定image slot的编号,通过`-I`参数指定需要加载的FPGA镜像ID,如:
`sudo fpga-load-local-image -S 0 -I agfi-0123456789abcdefg`
有关FPGA管理工具的更多信息,请参考以下链接:
https://github.com/aws/aws-fpga/blob/master/sdk/userspace/fpga_mgmt_tools/README.md
### 安装FPGA HDK
安装好FPGA的SDK以后就需要安装FPGA HDK了,具体的安装命令如下:
`source hdk_setup.sh`
这个过程稍长一点,可能需要5到10分钟,执行的命令的时候输出结果中也有提示:
`AWS FPGA-INFO: This could take 5-10 minutes, please be patient!`
如果一切正常,安装成功后会有如下信息:
`AWS FPGA-INFO: DDR4 model build passed.`
`AWS FPGA-INFO: ATTENTION: Don't forget to set the CL_DIR variable for the directory of your Custom Logic.`
`AWS FPGA-INFO: AWS HDK setup PASSED.`
如成功信息里提示的,如果你以后要构建自己的FPGA模块,需要将CL_DIR变量指向你的模块目录,我们在后续的步骤中会进行设置。
### 配置 AWS CLI
因为FPGA镜像创建过程需要使用AWS CLI命令行工具,所以我们需要提前配置好AWS CLI。
在我们使用的这个FPGA Developer AMI中AWS CLI命令行工具已经安装好了,如果你使用其它镜像需要手工安装AWS CLI的话请参考AWS CLI命令行工具的安装文档。
需要注意的时,虽然在FPGA Developer AMI中已经安装好了AWS CLI,但是这个版本不一定是最新的,所以建议通过以下命令先进行升级:
`pip install --upgrade --user awscli`
然后就通过以下命令启动AWS CLI配置过程:
`aws configure`
在配置AWS CLI的过程中一般需要提供Access Key和Secret Key,不过我们的f1实例在启动过程中制定了IAM Role, 而且我给这个IAM Role足够的权限,所以我们这里不需要配置静态的Access Key和Secret Key,我们要做的只是指定区域,这里我们指定区域为us-east-1。
`$aws configure`
`AWS Access Key ID [None]:`
`AWS Secret Access Key [None]:`
`Default region name [None]: us-east-1`
`Default output format [None]:`
### 构建DCP
安装好HDK,配置好工具,就可以开始跑样例了,这里我们使用AWS FPGA项目里的hello world样例,该样例在aws-fpga中的以下目录中:
`./hdk/cl/examples/cl_hello_world`
如之前安装过程中提到的,如果我们使用目录./hdk/cl/examples/cl_hello_world中的样例,我们需要设置CL_DIR变量指向./hdk/cl/examples/cl_hello_world目录,具体命令如下:
`cd ./hdk/cl/examples/cl_hello_world`
`export CL_DIR=$(pwd)`
接下来的工作需要使用Xilinx Vivado工具,所以我们需要检查一下vivado工具是否安装正常,具体命令如下:
`$ vivado -mode batch`
正常的输出如下:
`****** Vivado v2017.1 (64-bit)`
` **** SW Build 1846317 on Fri Apr 14 18:54:47 MDT 2017`
` **** IP Build 1846188 on Fri Apr 14 20:52:08 MDT 2017`
` ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.`
` `
`Sourcing tcl script '/opt/Xilinx/Vivado/2017.1/scripts/Vivado_init.tcl'`
`INFO: [Common 17-206] Exiting Vivado at Fri Apr 21 02:42:35 2017...`
现在我们可以开始构建DCP了,构建命令在`$CL_DIR/build/scripts`中,文件名是`aws_build_dcp_from_cl.sh`,所以具体命令如下:
`cd $CL_DIR/build/scripts`
`$ ./aws_build_dcp_from_cl.sh`
需要注意的是,这个命令的运行时间比较长,需要几个小时的时间才能完成。为了避免ssh会话中断导致构建失败,样例的作者选择在后台运行建构过程。在我们运行`aws_build_dcp_from_cl.sh`命令之后,会马上获得以下输出,不过构建程序会在后台持续运行:
`$ ./aws_build_dcp_from_cl.sh`
`AWS FPGA: Starting the design checkpoint build process`
`AWS FPGA: Checking for proper environment variables and build directories`
`Creating the reports directory`
`Creating the checkpointss directory`
`Creating the checkpoints\/to_aws directory`
`AWS FPGA: Environment variables and directories are present. Checking for Vivado installation.`
`AWS FPGA: Build through Vivado is running as background process, this may take few hours.`
`AWS FPGA: Output is being redirected to 17_04_21-025018.nohup.out`
`AWS FPGA: If you have set your EMAIL environment variable and -notify is specified, you will receive a notification when complete.`
`AWS FPGA: (See $HDK_DIR/cl/examples/README.md for details)`
在以上输出中我们可以注意到,构建日志会输出到文件`xxxx.nohup.out`中,所以我们可以定时查看这个日志文件从而了解构建进程.
当然,时不时跑过来看看日志文件看看是不是构建完成了并不是一个很有效的办法,如果你希望构建程序在结束的时候给你发一封邮件,可以使用`-notify`参数,使用`-notify`参数前需要通过以下命令设置SNS:
`$ export EMAIL=your.email@example.com`
`$ ./$HDK_COMMON_DIR/scripts/notify_via_sns.py`
有关`-notify`参数的更多信息请参考对应的`READMD.md`文件,本例中就不设置了,采用定时查看日志的笨办法。
在构建结束后,我们可以在`xxxx.nohup.out`文件中看到以下信息:
`AWS FPGA: (07:00:53) Finished creating final tar file in to_aws directory.`
然后你可以查看一下这个目录:$CL_DIR/build/checkpoints/to_aws,目录中会有打包好的tar文件,执行ls命令的结果如下:
`$ ls checkpoints/to_aws`
`17_04_21-025018.Developer_CL.tar 17_04_21-025018.manifest.txt 17_04_21-025018.SH_CL_routed.dcp`
### 上传文件到S3
在构建的dcp以后,我们需要将tar文件上传到S3上,然后才能通过AWS CLI命令构建FPGA image。
为了上传文件到S3上,我们需要创建对应的S3桶,这个过程可以通过AWS控制台完成,也可以使用AWS CLI命令行工具完成,有关S3的具体操作请参考相关文档。
本例使用AWS CLI来创建S3桶并上传文件,命令参考如下:
`$ aws s3 mb s3://<bucket-name> --region us-east-1`
`$ aws s3 cp $CL_DIR/build/checkpoints/to_aws/*.Developer_CL.tar s3://<bucket-name>/<dcp-folder-name>/`
接着我们还需要为日志文件创建一个目录,其实在S3上没有目录的概念,整个文件路径和文件名就是这个文件的key,所以样例中创建目录的方法就是直接上传一个空文件到我们需要的目录中,具体命令如下:
`$ touch LOGS_FILES_GO_HERE.txt `
`$ aws s3 cp LOGS_FILES_GO_HERE.txt s3://<bucket-name>/<logs-folder-name>/`
因为我们上传的tar文件最后会交由AWS对应账号完成构建工作,同时构建日志还需要由AWS对应账号写回到我们的S3桶中,所以我们需要为我们的S3桶设置桶访问策略,让AWS账号可以访问这些文件和目录。具体的访问策略样例如下,我们需要把下面的策略配置拷贝到我们的S3桶的“访问策略”设置中。注意样例中的 和 等内容,要把它们修改成真实的桶名和对应路径。
` {`
` "Version": "2012-10-17",`
` "Statement": [`
` {`
` "Sid": "Bucket level permissions",`
` "Effect": "Allow",`
` "Principal": {`
` "AWS": "arn:aws:iam::365015490807:root"`
` },`
` "Action": [`
` "s3:ListBucket"`
` ],`
` "Resource": "arn:aws:s3:::<bucket-name>"`
` },`
` {`
` "Sid": "Object read permissions",`
` "Effect": "Allow",`
` "Principal": {`
` "AWS": "arn:aws:iam::365015490807:root"`
` },`
` "Action": [`
` "s3:GetObject"`
` ],`
` "Resource": "arn:aws:s3:::<bucket-name>/<dcp-folder-name>/<tar-file-name>"`
` },`
` {`
` "Sid": "Folder write permissions",`
` "Effect": "Allow",`
` "Principal": {`
` "AWS": "arn:aws:iam::365015490807:root"`
` },`
` "Action": [`
` "s3:PutObject"`
` ],`
` "Resource": "arn:aws:s3:::<bucket-name>/<logs-folder-name>/*"`
` }`
` ]`
` }`
设置完S3的桶访问策略以后我们需要验证一下策略写的对不对,不然策略写错了,AWS对应账号拿不到需要的tar文件,就不能成功构建FPGA image了,而且我们分析问题还不知道如何下手。
验证S3桶策略的脚本在下面这个文件里:
aws-fpga/hdk/common/scripts/check_s3_bucket_policy.py
如果执行出现`INFO: Passed`字样就表示策略设置正确。
不过在有些python环境下`check_s3_bucket_policy.py`运行会报下面这个错误:
`AttributeError: PolicyStatement instance has no attribute 'principals_re'`
发现这个错误的话需要手工改一下`check_s3_bucket_policy.py`文件。
用你习惯的编辑器打开文件`check_s3_bucket_policy.py`,然后找到下面的代码:
`class PolicyStatement:`
` def __init__(self, statement, principal=None):`
` self.statement = statement`
` self.process_policy_statement(statement, principal)`
` self.principals_re = []`
` self.actions_re = []`
` self.notactions_re = []`
` self.resources_re = []`
然后把`self.process_policy_statement(statement, principal)`这句放到其它变量设置之后,像下面这样:
`class PolicyStatement:`
` def __init__(self, statement, principal=None):`
` self.statement = statement`
` self.principals_re = []`
` self.actions_re = []`
` self.notactions_re = []`
` self.resources_re = []`
` `
` self.process_policy_statement(statement, principal)`
然后就不会报错了,具体运行`check_s3_bucket_policy.py`命令的参考和对应输出如下:
`$ check_s3_bucket_policy.py --dcp-bucket fpga.use1.damondeng.com --dcp-key fpgajarfile/17_04_21-025018.Developer_CL.tar`
` --logs-bucket fpga.use1.damondeng.com --logs-key logfile`
`INFO: Passed`
一切准备好就可以开始运行` aws ec2 create-fpga-image` 命令构建FPGA image了,命令参考如下:
`$ aws ec2 create-fpga-image --name DamonFPGAOne `
`--description "Testing FPGA Image" --input-storage-location Bucket=fpga.use1.damondeng.com,Key=fpgajarfile/17_04_21-025018.Developer_CL.tar`
`--logs-storage-location Bucket=fpga.use1.damondeng.com,Key=logfile`
如果你发现AWS CLI命令报下面这个错误,则你的AWS CLI版本不够,需要运行`pip install --upgrade --user awscli`进行升级:
`Invalid choice: 'create-fpga-image', maybe you meant:`
` `
` * create-image`
` *`
运行正常的情况下你会获得类似这样的输出:
`{`
` "FpgaImageId": "afi-046ead8eb3a0e3112",`
` "FpgaImageGlobalId": "agfi-06fdb0f3cea076195"`
`}`
其中”FpgaImageId”是本区域唯一的image ID,”FpgaImageGlobalId”是全球唯一的image ID,后面我们加载FPGA image时要使用过的是全球唯一的”FpgaImageGlobalId”,以agfi开头。
开始构建FPGA image后需要等待一段时间,你可以查看你指定的保存日志的S3桶以了解进展。
如果你在日志目录里看到有个新目录产生,里面有个叫`State`的文件中出现`{State=available}` 字样就表明构建成功了。接着就可以加载你的FPGA image了。
在加载新的FPGA image之前记得先清除现有image:
`sudo fpga-clear-local-image -S 0`
接着通过以下命令加载FPGA image:
`sudo fpga-load-local-image -S 0 -I agfi-06fdb0f3cea076195`
如之前描述的,这里`-S`参数用于指定image slot,`-I`参数用于指定FPGA image的镜像ID,注意是全球唯一,以agfi开头的镜像ID。
为了检查FPGA image是否加载成功,可以使用`fpga-describe-local-image`命令,执行输出的样例如下:
`$ sudo fpga-describe-local-image -S 0 -R -H`
`Type FpgaImageSlot FpgaImageId StatusName StatusCode ErrorName ErrorCode ShVersion`
`AFI 0 agfi-06fdb0f3cea076195 loaded 0 ok 0 0x04151701`
`Type FpgaImageSlot VendorId DeviceId DBDF`
`AFIDEVICE 0 0x1d0f 0xf000 0000:00:1d.0`
其中可以看到镜像ID为`agfi-06fdb0f3cea076195`的状态是`loaded`,就是加载成功了。
最后我们就需要运行宿主机上的软件端来测试了,进入`cd $CL_DIR/software/runtime/`目录,这里有个写好的c的代码用于测试,运行以下命令编译软件测试端:
`$ cd $CL_DIR/software/runtime/`
`$ make all`
编译成功后通过`./test_hello_world`命令执行,以下是执行结果:
`$ sudo ./test_hello_world`
`AFI PCI Vendor ID: 0x1d0f, Device ID 0xf000`
`===== Starting with peek_poke_example =====`
`register: 0xdeadbeef`
`Resulting value matched expected value 0xdeadbeef. It worked!`
`Developers are encourged to modify the Virtual DIP Switch by calling the linux shell`
`command to demonstrate how AWS FPGA Virtual DIP switches can be used to change a CustomLogic functionality:`
`$ fpga-set-virtual-dip-switch -S (slot-id) -D (16 digit setting)```
`In this example, setting a virtual DIP switch to zero clears the corresponding LED, even if the peek-poke example would set it to 1.`
`For instance:`
`# fpga-set-virtual-dip-switch -S 0 -D 1111111111111111`
`# fpga-get-virtual-led -S 0`
`FPGA slot id 0 have the following Virtual LED:`
`1010-1101-1101-1110`
`# fpga-set-virtual-dip-switch -S 0 -D 0000000000000000`
`# fpga-get-virtual-led -S 0`
`FPGA slot id 0 have the following Virtual LED:`
`0000-0000-0000-0000`
这个样例有两部分,一部分是peek_poke部分,就是寄存器的读写。样例为了说明FPGA寄存器的功能是否起作用,将输入的比特位做了交换。
如`./test_hello_world.c`中的代码所描述的:
`uint32_t value = 0xefbeadde;`
`uint32_t expected = 0xdeadbeef;`
`/* read it back and print it out; you should expect the byte order to be`
` * reversed (That's what this CL does) */`
第二个部分是虚拟LED的使用,测试者可以通过FPGA管理工具设置virtual-dip开关,以类似掩码的形式影响虚拟LED的显示,比如,原来虚拟LED的输出是`1010-1101-1101-1110`我通过`fpga-set-virtual-dip-switch` 设置了 `1111111100000000`值, 虚拟LED的输出就是1`010-1101-0000-0000`:
`[centos@ip-172-31-8-87 runtime]$ sudo fpga-set-virtual-dip-switch -S 0 -D 1111111100000000`
`[centos@ip-172-31-8-87 runtime]$ sudo fpga-get-virtual-led -S 0`
`FPGA slot id 0 have the following Virtual LED:`
`1010-1101-0000-0000`
到这里我们的Hello World就成功啦,虽然比一搬的软件Hello World麻烦好多,但是要知道这里可是直接操控硬件喔。
### 后续工作
在跑完Hello World样例以后可能会有不少人想了解这个开发环境的图形化访问的问题。
如文中提到的,当你通过SSH登录到FPGA实例时,FPGA Developer AMI的欢迎文字中有提到GUI界面的设置。这里提到的方法概括起来就是在centos上启动xrdp,然后通过MS的远程桌面程序进行连接。
在centos端的命令拷贝如下:
`sudo yum install -y kernel-devel # Needed to re-build ENA driver`
`sudo yum groupinstall -y "Server with GUI"`
`sudo systemctl set-default graphical.target`
`sudo yum -y install epel-release`
`sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm`
`sudo yum install -y xrdp tigervnc-server`
`sudo systemctl start xrdp`
`sudo systemctl enable xrdp`
`sudo systemctl disable firewalld`
`sudo systemctl stop firewalld`
设置完记得给centos用户设置一个密码,否则远程桌面登录不了:
`sudo passwd centos`
当你通过远程桌面登录centos后,就可以看到图形化界面了。更多可以参考Jeff Bar的博客[](https://amazonaws-china.com/blogs/aws/developer-preview-ec2-instances-f1-with-programmable-hardware/)
以下是从该博客拷贝的远程图形界面截图:

最后希望大家可以在FPGA的世界里找到自己的方向,开始创建自己的芯片系统真是一件让人兴奋的事情。
**作者介绍**

邓明轩
AWS解决方案架构师;拥有15年IT 领域的工作经验,先后在IBM,RIM,Apple 等企业担任工程师、架构师等职位;目前就职于AWS,担任解决方案架构师一职。喜欢编程,喜欢各种编程语言,尤其喜欢Lisp。喜欢新技术,喜欢各种技术挑战,目前在集中精力学习分布式计算环境下的机器学习算法。
原文链接:
https://amazonaws-china.com/cn/blogs/china/running-hello-world-on-fpga/
更多内容推荐
好诗相伴 02|见古今:古今不变唯精神
我们这个话题一共三讲,讲了侠客精神、文人风骨和家国情怀三个方面的诗。
2021-09-15
Rust 异步编程之 Pin 与 Unpin(四)
2021-06-24
AWS 上关于云计算,大数据,人工智能的介绍
本文主要介绍了AWS上对云计算,大数据,人工智能的理解以及三者之间的关系的简单解释
2023-08-29
开源工具系列 3:Prowler
Prowler 是一个命令行工具,可帮助您进行 AWS 安全评估、审计、强化和事件响应。
2023-02-06
AWS CEO 再回应:不会从亚马逊剥离,可能会继续收购
其多年来已经投资了数十家小公司。
AWS CodeWhisperer 上手初体验安装与使用
代码生成器最近有点多,为了提高效率最近在我的 VSCode 上先后安装了 Bito、Codeium、Tabnine AI Assistant 等等,还有本文中刚有 AWS 推出的 CodeWhisperer。接下来就来看看这款 AI 代码生成器如何使用吧。
2023-06-06
AWS Inspector
介绍一个AWS的安全类服务 - Amazon Inspector
2022-07-14
基于 Graviton2 处理器构建容器化基因分析工作负载
相对于基于传统 x86架构的处理器来说,Amazon 设计的基于 ARM 架构的 Graviton 处理器为 EC2中运行的云工作负载提供了更佳的性价比。基于 Graviton2 的实例支持广泛的通用型、突发型、计算优化型、内存优化型、存储优化型和加速计算型工作负载,包括应用程序
2023-07-21
如何获得一场黑客马拉松的胜利?听听 AWS 特约评委怎么说
5月9日,以“码力集结,与众不凡”为主题的FinClip Hackathon 圆满结束!本次开发大赛吸引了来自各行业的2000多名移动开发者汇聚一堂,150位参赛选手同台竞技,共同探索「小程序 」技术的能力边界。
2022-05-30
每周一起背 10 句 | week 09
本周我们进入了最后一篇语料。我把本周一起读过的句子放在这里,你可以试试背诵这些句子,感受下和之前背诵的句子有什么不同。
2020-07-11
Amazon Aurora 读写能力扩展之 ShardingSphere-JDBC 篇
文章来源亚马逊 AWS 官方博客
2022-04-27
覆巢之下(1)
熟悉科技行业的人,往往都不可避免的了解过AWS(Amazon Web Service),AKA,亚马逊云服务。对于没有技术背景的人,也许比较难以理解这个所谓的玄而又玄的“云服务”到底是怎么个玩意儿?接下来我会尝试使用一些比较容易理解的例子来解释一下这个云服务到底提
2023-08-01
启科量子解决方案实践:使用 QuTrunk+AWS Deep Learning AMI(TensorFlow2)构建量子神经网络
TensorFlow是一个非常流行和重要的AI深度学习框架,QuTrunk也同样支持与之结合一起使用。本文主要介绍在AWS实验环境中使用QuTrunk结合TensorFlow来完成量子神经网络构建的实验。实验前,我们首先介绍下本示例中使用到的两个技术资源:AWS DLAMI和TensorFlow。
2023-02-08
结束语
2020-08-13
33|AI 前沿:ChatGPT 资料精选集
本精选集的目的在于提供一个便捷的参考资源,帮助你全面掌握ChatGPT。
2023-05-01
Transfer Reinforcement Learning 和 Few-shot Reinforcement Learning
2020-08-27
使用 QuTrunk+Amazon ParallelCluster3 进行并行计算
1.丘秉宜;2.邵伟;3.黄文;4.郭梦杰;5.刘利;6.刘波
2022-12-27
StarRocks on AWS 回顾 | Data Everywhere 系列活动深圳站圆满结束
7 月 30 日,StarRocks 解决方案架构师王天宜受邀出席 AWS User Group Data Everywhere 主题活动,分享了 StarRocks 如何对实时数仓进行极速统一分析。
2022-08-10
AWS CEO Adam Selipsky 演讲 Keynote @ re:Levent2022
Join Adam Selipsky, CEO of Amazon Web Services, as he looks at the ways that forward-thinking builders are transforming industries and even future, powered by AWS. He highlights innovations in data, infrastructure, security, and more that
2022-12-05
使用启科 QuPot+Runtime+QuSaaS 进行量子应用开发及部署 - 调用 AWS Braket 计算后端
使用启科QuTrunk开发的量子应用可以通过QuSaaS 部署到启科QuPot云环境中对用户提供服务。本文将介绍如何使用QuTrunk进行AWS云上应用程序的开发和如何通过QuSaaS将量子应用部署到QuPot平台,并且QuTrunk计算后端调用AWS Braket服务。具体展示之前,先和大家简
2023-01-31
推荐阅读
WordPress 基于亚马逊云的部署实践(二)- 资源申请
2023-11-19
Amazon CodeWhisperer(亚马逊云 AI 大模型下应用创新——自动代码生成插件:AWS toolkit)以 IntelliJ IDEA 2023.1 为例的实测使用
2023-11-09
5. Knative 的实现原理
2023-09-27
加餐|基础模型:AI 时代的新篇章
2023-05-17
程序员的私人助理:Amazon Q
118|结束语:人生苦短,我用 Pyhon
2023-10-27
高性价比 AWS Lambda 无服务体验
2023-11-08
电子书

大厂实战PPT下载
换一换 
周廷帅 | 百度 App产品研发部/前端资深工程师
徐瑶 | Fabarta 向量引擎研发专家、Apache Kudu PMC Member
崔宇 | 去哪儿网 机票客户端开发负责人
评论