亚马逊AWS官方博客

by AWS Team | on |

 

AWS Limit Monitoring ——书到用时方恨少,资源提限需趁早!    29 Dec

Amazon Polly – 支持47种语音与24种语言的文本到语音转换服务  19 Dec

开发者预览版——EC2实例(F1)携手可编程硬件    19 Dec

Amazon Lex – 构建对话语音与文本界面    15 Dec

如何在AWS上安装使用分布式TensorFlow    13 Dec

New feature launched to AWS China (BJS) region, operated by SINNET – Amazon RDS for SQL Server – Support for Native Backup/Restore to Amazon S3    5 Dec

由光环新网运营的AWS中国北京(BJS)区域现推出新RDS功能–支持SQL Server 本机备份/还原到Amazon S3   27 Nov

Amazon S3 和 Amazon Glacier 降价    27 Nov

构建健壮的混合云网络——BJS DX+VPN篇    23 Nov

构建健壮的混合云网络——BJS DX篇    23 Nov

构建健壮的混合云网络——BJS VPN篇    23 Nov

GPU为 Amazon Graphics WorkSpaces 提供助力    21 Nov

Amazon QuickSight全面上线——更快更易用的大数据商务分析服务    21 Nov

Amazon EC2 产品价格调降通知(C4,M4, 和T2实例)    21 Nov

利用 CloudWatch 搭建无人值守的监控预警平台    16 Nov

一键搞定云端网络环境,让您轻松迁移至AWS!    9 Nov

程序员的深度学习入门指南    07 Nov

如何在 AWS上构建基于 OpenSwan 的软件 VPN 解决方案    01 Nov

AWS的在线云计算专家,你用了吗?    31 Oct

利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶    26 Oct

CloudFront常见错误配置及解决方法    25 Oct

使用DMT工具迁移北京区域的数据库    18 Oct

VPC中NAT的那点事     17 Oct

CloudWatch Events监控您应用的安全    8 Oct

Oracle数据库迁移到AWS云的方案    28 Sep

使用AWS的数据库迁移DMS服务    28 Sep

手把手教你使用Amazon EMR进行交互式数据查询    27 Sep

使用Oracle Data Pump将数据库迁移到AWS的RDS Oracle数据库    26 Sep

手把手教你快速部署流量压测工具 – Bees with Machine Guns    26 Sep

优秀的领导者如何更进一步迈向伟大?    24 Sep

现代IT高管已然化身首席变革管理官    24 Sep

利用云方案进行实验时的四要与四不要    24 Sep

来自成功云企业的十项诀窍    24 Sep

助你决胜云时代的人才其实近在眼前    13 Sep

手把手教你如何用Lambda + Alexa调用echo设备    01 Sep

AWS Kinesis的Javascript交互方法    25 Aug

基于AWS 平台跳板机配置    08 Aug

如何使用AWS 命令行分段上传大文件    02 Aug

我喜欢我的Amazon WorkSpaces    02 Aug

算法改变世界 - 从Prisma 的走红说开去    02 Aug

为员工进行云培训时的11条箴言    07 Jul

畅谈CIO该如何合并业务和技术    07 Jul

协同合作伙伴 合力加速上云战略    07 Jul

在云端试验时的“有所为和有所不为”    07 Jul

专线直连AWS建立混合IT环境实务指南    01 Jul

手把手教你调校AWS PB级数据仓库    20 Jun

Token Vending Machine:移动应用客户端安全访问AWS服务的解决方案    20 Jun

分布式神经网络框架 CaffeOnSpark在AWS上的部署过程    16 Jun

打造DIY版Echo:树莓派+ Alexa 语音服务    01 Jun

使用Docker封装IPSec安全网关    30 May

将VMware 中的Ubuntu 12.04 映像导入成Amazon EC2 AMI    30 May

如何使用AWS Auto-reboot和Auto-recovery进一步提升单机高可用    16 May

AWS CTO对过去十年的经验总结 – 十条军规    12 Apr

AWS上的游戏服务:Lumberyard + Amazon GameLift + Twitch    12 Apr

为AWS北京区管理控制台集成ADFS访问    12 Apr

AWS的十年创新之路    12 Apr

空荡的数据中心,120种妙用!    12 Apr

媒体洞察 | 让企业自由发展的云时代    12 Apr

亚马逊 风力发电厂在福勒岭启动了!    12 Apr

AWS Limit Monitoring ——书到用时方恨少,资源提限需趁早!

by AWS Team | on |

如何在AWS产品将要达到限额的时候得到通知,确保可以提前做好提升限额的准备?

Trusted Advisor (TA) 可以基于区域提供使用资源的限额以及用量,与此同时AWS 可以基于TA 监测的指标信息,当使用量达到产品限额的80%时触发邮件通知用户指定的邮箱。

工作原理

该解决方案使用AWS Lambda 自动检测服务用量以及限额并计算使用占比,当使用占比达到80%时,Lambda 将触发一个Amazon Simple Notification Service 主题 (Amazon SNS),为预先设定好的邮箱(邮箱组)发邮件通知。

监测本帐户限额(设置时间:大约5分钟)

1.点击以下AWS官方文档中的“Launch Solution”按钮:http://docs.aws.amazon.com/solutions/latest/limit-monitor/deployment.html

默认指向美东区域。一旦您在美东区域完成部署之后,AWS Limit Monitoring将为您监测当前设置账户在各个区域的使用情况。

2.系统自动生成S3 的URL,无需进行其它操作,点击下一步。

3.指定待监测的AWS帐户ID、通知邮箱(组)等参数,进入下一步。

4.检查确认参数正确后完成创建。

监测其他帐户限额

您也可以利用这种方式监控其他帐户限额,只需要在每个被监控的帐户中创建一个IAM角色,并赋予其权限,允许其通过跨帐户角色进行API 操作,获取被监测帐户的资源使用限额信息即可。

*注[1]:如果创建堆栈过程中设置多个账户,需要分别对除了设置账户之外的其他账户进行如上操作。

*注[2]:被监控帐户注册商用级别或企业级别支持服务适用此方式。

步骤一:创建IAM 角色

1.登陆被监控的账户,创建一个IAM role

2.为该IAM role 命名为- LimitCheckRole

3.选择IAM role 的类型为跨账户角色

4.输入创建堆栈中设置的账户的12 位账户 ID

步骤二:为创建的IAM 角色赋予三个权限:

1.为该IAM 角色分别赋予ReadOnlyAccess

2.为该IAM 角色分别赋予AWSSupportAccess

3.创建自定义Policy:

3.1 点击创建policy

3.2选择自定义policy

3.3将以下政策粘贴在政策正文,为当前policy 命名,点击validate policy,验证成功之后,点击create policy。

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Sid": "Stmt1455149881000",

            "Effect": "Allow",

            "Action": [

                "cloudformation:DescribeAccountLimits",

                "dynamodb:DescribeLimits"

            ],

            "Resource": [

                "*"

            ]

        }

    ]

3.4返回创建的IAM 角色LimitCheckRole

3.5赋予刚刚创建的自定义policy

当某个产品用量达到限额80%的情况下,设置的邮箱将收到以下提醒信息:

届时您可以通过开启案例进行该项产品的限额提升。

常见问题

Q: 为什么我需要关注追踪我的产品限额?

A: 通过追踪关注产品限额,可以及时了解自己的产品是否达到了当前限额,可以进行提前规划部署。

Q: Limit monitoring 可以监控哪些产品的限额?

A:

  • Amazon Elastic Compute Cloud(Amazon EC2)
  • Amazon Elastic Block Store (Amazon EBS)
  • Amazon Relational Database Service(Amazon RDS)
  • Amazon Simple Email Service (Amazon SES)
  • Amazon Virtual Private Cloud( Amazon VPC)
  • Auto Scaling
  • Elastic Load Balancing (ELB)
  • Identity and Access Management (IAM)

Q: AWS Limit Monitor可以同时查询多个账户的的指标么?

A: 可以,您在设置limit monitoring 过程中设置多个账户,并未每一个额外的账户赋予相应的IAM权限之后,即可对多个账户进行限额监控。

每一个监控的账户需要订阅商用/企业付费支持。

Q: 我可以在哪些区域使用该功能?

A:目前北京区域不适用。

对于海外账户,建议您在美东(US East)区域进行部署,即可实现对账户任意区域资源限额的监控。

参考指南

http://docs.aws.amazon.com/solutions/latest/limit-monitor/overview.html

https://aws.amazon.com/answers/account-management/limit-monitor/

https://aws.amazon.com/premiumsupport/ta-faqs/

作者介绍

李金萍

亚马逊AWS CS Concierge专员,负责AWS企业级支持服务客户的成本、账单和帐户等非技术问题的解答。

Amazon Polly – 支持47种语音与24种语言的文本到语音转换服务

by AWS Team | on |

在准备写下这篇文章时,我的思绪不禁回到了自己的孩提时代(那时候大部分时间都用在了看电视上)。上世纪六十到七十年代,出现了大批热门的计算机与机器人语音产品。一瞬间,哈尔-9000、B9(来自〈迷失太空〉)、初代《星际旅行》中的计算机以及罗茜(来自〈摩登家庭〉)等形象再次涌现在我眼前。那个时候,人们都热衷于这种机械生成的语音——声音精准、清晰且缺乏人类应有的情感。

时间快速推进,如今我们已经拥有大量出色的计算机生成语音应用及用例可供选择,业界将其称为文本到语音或者简称TTS功能。娱乐、游戏、公共发布系统、电子学习、电话、辅助应用及设备乃至个人助手都已经开始将其引入。其中大部分应用能够很好地对接移动环境,但本地处理及存储型方案则表现平平。

你好, Polly

为了解决此类用例的实际需求(当然也包括其它大家能够想到的场景),我们推出了Polly,这项云服务能够将文本转化为逼真的语音,并允许大家将其用于您的工具及应用程序当中。Polly目前支持总计47种男声/女声表达并涵盖24种语言(暂不支持中文),而更多语言及语音选项亦在路线图规划之中。

Polly的设计目标在于解决语音生成工作中的大部分常见挑战。举例来说,我们以“live”一词为例,“I live in Seattle”代表我生活在西雅图,而“Live from New York”则代表由纽约发回的现场直播,二者在意义上显然存在差别。Polly能够理解这种同一词汇在不同语境下的含义,并给出完全不同的发音。类似的例子还有“St.”。根据语言类别及上下文背景的不同,其可以代表(或者应该发音为)“Street(街道)”或者“saint(圣)”。Polly同样能够准确识别二者间的差别。另外,Polly亦能够处理单位、分数、缩写、货币、日期、时间以及其它复杂的语言成分与表达方式。

为了实现这一目标,我们与以Polly支持的目标语言为母语的语言专家们进行合作。我们要求每位参与者利用其选定的语种提供大量单词与短语发音,并将音频拆分为声音单元,即双音素。

Polly在处理普通文本时拥有良好表现。大家只需要提交文本,Polly即可顺利完成接下来的工作,即以音频文件或者流媒体的方式给出精准、自然且与人类相似的语音表达。对于其它更为复杂的应用,大家可以使用SSML(即语音合成标记语言)为Polly提供更多附加信息。举例来说,如果您的文本内容中包含多种语言(例如英语与法语混杂),则可利用SSML作出标记以纠正发音。

在本文中我无法直接提供相关语音片段,因此感兴趣的朋友可以直接访问Polly Consolehttps://console.aws.amazon.com/polly)并亲自加以尝试。大家只需要输入文本内容并点击Listen to speech(听取语音)即可:

大家也可以将生成的音频保存在MP3文件并将其运用于您的应用程序当中。

以下为完全展开的语言与地区菜单:

技术细节

通过Console使用Polly当然非常便利,不过大家也可以采取其它方式以实现更具动态的使用途径。大家可以在文本或者SSML当中调用SynthesizeSpeech API函数。大家可以直接将输出结果以流媒体形式直接交付至用户,或者生成MP3或Ogg文件以备需要时播放。Polly能够以MP3或者Vorbis格式生成高质量(最高采样率为22 kHz)音频,亦可以PCM格式生成电话质量级(8 kHz)音频。

大家也可以利用AWS命令行界面(CLI)生成音频。例如:

Polly会对全部闲置数据进行加密,并通过SSL连接进行音频传输。所提交文本与提交者间的关联将被移除,以加密形式存储最多6个月,并被用于维护及改进Polly功能。

价格与上线时间

大家每月可以利用Polly处理500万字而无需支付任何费用。在此之后,每个字的处理价格为0.000004美元,或者折合为音频生成约为每分钟0.004美元。本篇博文的语音转换价格约为0.018美元,而《哈克贝利-费恩历险记》全文的语音转换亦仅需约2.4美元。

Polly目前已经在美国东部(北弗吉尼亚州)、美国西部(俄勒冈州)、美国东部(俄亥俄州)以及欧洲(爱尔兰)服务区上线,大家可以从今天开始加以使用。

-Jeff

原文链接:

https://aws.amazon.com/cn/blogs/aws/polly-text-to-speech-in-47-voices-and-24-languages/

 

开发者预览版——EC2实例(F1)携手可编程硬件

by AWS Team | on |

你是否曾经在通用型工具与专用型工具之间左右为难?通用型工具可以解决多种不同的难题,但却未必是特定问题的最佳解决选项。相反,专用型工具擅长处理特定问题,但工具的使用频率往往不会很高。

工程师们在设计架构及指令集时同样需要考虑这一问题。他们始终追求能在更加通用的工作负载范围内,提供更佳性能表现的解决方案。然而新型工作负载与工作条件不断涌现,只有定制化硬件才是性能最佳之选。这就要求我们在其中找到平衡点:是要极出色的性能水平,还是要保证以年甚至季度为周期进行衡量的开发生命周期?

走入FPGA时代

作为一种备受瞩目的解决方案,我们迎来了基于定制化硬件的现场可编程门阵列机制,或者简称为FPGA。相较于单纯着眼于一种特定功能的专用型芯片,FPGA拥有更为出色的灵活性。其能够在现场完成编程,而后再接入PC主板的插槽当中。每块FPGA中包含一组固定且数量可观的简单逻辑门。对FPGA进行编程“基本上”就是将这些逻辑门彼此对接,从而建立起必要的逻辑功能(包括AND、OR以及XOR等等)或者存储元素(触发器与移位寄存器)。不同于CPU的串行本质(即数个并行元素)以及固定大小的指令集与数据路径(通常为32位或64位),FPGA能够以编程方式并行执行更多操作,而这些操作本身几乎不设任何宽度或者规模限制。

这种高并行模式非常适合用于构建定制化加速器,从而处理计算密集型工作负载。在经过有针对性的编程之后,FPGA能够在基因组学、抗震分析、金融网络分析、大数据搜索以及加密算法及应用领域提供高达30倍的速度增量。

希望这些优势能够鼓励大家尝试利用FPGA加速您的应用程序!不过必须承认,要实现这样的效果,我们还需要克服一系列挑战。首先,FPGA从传统角度讲属于大规模专用型系统的一类组件。大家无法单纯购买一款并将其接入自己的台式机。相反,实现FPGA型解决方案要求我们完成硬件原型设计、硬件设备构建、大规模生产以及漫长的销售与部署周期等筹备工作。漫长的实现时间会限制FPGA的适用性,这也意味着摩尔定律指导下的CPU类解决方案也许更具成本效益。

但我们相信,我们能够在这方面做得更好!

全新F1实例

现在,我们发布了全新F1实例的开发者预览版。除了构建应用及服务供您自己使用之外,大家也可以将其进行打包并在AWS Marketplace中出售并进行复用。总体而言,大家将能够避免使用FPGA支持型解决方案所带来的高昂资本投入与时间消耗,我们提供的方案将带来与其它类型软件相同的商业模式。大家将能够通过云工具设计您自己的逻辑、模拟方案以及验证流程,而后在数天之内将其推向市场。

F1实例配备有英特尔Broadwell E5 2686 v4处理器(基本速度为2.3 GHz,Turbo模式下全核心可达2.7 GHz,Turbo模式下单核最高可达3.0 GHz),最多976 GiB内存、最高4 TB NVMe SSD存储以及一到八块FPGA,这意味着其能够为大家提供充足的资源以构建自己的核心FPGA逻辑。各FPGA专用于此实例,且以隔离方式确保在多租户环境下的不致相互影响。

下在来看该FPGA的具体规格(请注意,单一F1实例中最多可使用八块FPGA):

  • Xilinx UltraScale+ VU9P,采用16纳米制程工艺制造。
  • 64 GiB ECC保护内存,配合288位总线(四DDR4通道)
  • 专用PCIe x 16 CPU接口
  • 约250万逻辑元素
  • 约6800套数字信号处理(简称DSP)引擎
  • 提供虚拟JTAG接口用于调试

在包含超过一块FPGA的实例当中,专用PCIe架构允许各FPGA共享同一套内存寻址空间并通过PCIe Fabric以最高每秒12 GB的单工速率实现彼此通信。单一实例中的各FPGA共同接入一套400 Gbps双向环状结构以实现低延迟水平与高传输带宽(大家需要定义自有协议以使用这项高级功能)。

FPGA开发流程

作为这套开发者预览版中的组成部分,我们还提供FPGA开发者AMI。大家可以在内存优化型或者计算优化型实例当中启动该AMI,从而实现开发与模拟,而后利用F1实例进行最终调试及测试。

此AMI包含多款开发者工具,大家可以在AWS Cloud当中免费加以使用。您需要使用VHDL或者Verilog编写FPGA代码,而后利用Xilinx Vivado设计套件(当然也可以使用第三方模拟工具、高级语言编译器、图形编程工具以及FPGA IP库)对代码进行编译、模拟与验证。

下面来看一段简单8位计数器的Verilog代码示例:

虽然这些语言常被描述为使用类C语法,但这并不代表大家可以直接使用现有代码并通过重新编译将其应用于FPGA当中。相反,大家需要首先对FPGA编程模式进行深入了解,学习布尔代数,而后掌握传播延迟与时钟脉冲边沿等概念。在此基础之上,大家才能够开始考虑将FPGA引入您的业务环境。如果这些底层知识对您来说太过艰深,大家亦可使用各类现有高级综合工具,包括OpenCL等,进行FPGA编程。

在启动自己的实例后,我进行登录、安装多款软件包并设置许可管理器,而后即可运行Vivado工具。接下来,我RDP到桌面,打开一个终端窗口并以GUI模式启动Vivado:

我随后打开该示例项目(counter.xpr),这就是我初次尝试后的FPGA设计与开发成果:

在一番探索之后,我了解了如何建立自己的首个FPGA(其实我基本上就是到处点点并了解其作用; 我本人在这方面甚至连新手都算不上):

从这里开始,我可以测试自己的设计并将其打包为Amazon FPGA镜像(简称AFI),而后将其运用在自有应用或者发布至AWS Marketplace当中。我还将继续摸索,希望能用几周时间弄清一切并向大家汇报。

F1硬件开发工具包

在了解了F1实例之后,我的第一个问题是如何处理FPGA、CPU以及主内存之间的接口。F1硬件开发工具包(简称HDK)当中包含多款预配置I/O接口及示例应用,适用于包括主机到FPGA、FPGA到内存以及FPGA到FPGA等的多种通信方法。其还提供编译脚本、参考示例以及一套现场调试工具。这套工具包可供F1开发者预览版的各位用户随意使用。

总结评述

总体来讲,F1实例、云开发工具与相关功能的结合共同实现了独特且强大的FPGA型应用方案。FPGA模式的强大性能及灵活性如今已经可供每位AWS用户使用; 可以肯定,这将激发出前所未有的应用方式与企业业务实现途径。

预览版现已上线!

正如之前提到,全新 F1实例现已在美国东部(北弗吉尼亚州)区域推出开发者预览版(我们还将在2017年年初将该实例的正式版本推向其它服务区)。如果大家此前拥有FPGA编程经验并对F1实例很感兴趣,请访问:

https://aws.amazon.com/ec2/instance-types/f1/

马上报名加入。

-Jeff

原文链接:

https://aws.amazon.com/cn/blogs/aws/developer-preview-ec2-instances-f1-with-programmable-hardware/

 

Amazon Lex – 构建对话语音与文本界面

by AWS Team | on |

尽管能够“说话”的计算机确实令人振奋,但学会了倾听与回应的计算机无疑更加出色!如果大家曾经使用过Amazon Echo,一定体会过在Alexa服务支持下的交互模式是多么简单、实用和强大。

今天,我们利用与Amazon Alexa相同的深度学习技术(ASR,即自动语音识别;NLU,自然语言理解),为大家带来能够在您的对话应用程序内生效的新服务。大家可以利用Amazon Lex服务构建聊天机器人及其它类型的Web与移动应用程序,其将带来逼真的对话交互能力。您的聊天机器人能够提供信息、支持应用程序、简化工作行为,或者为其它机器人、无人机乃至玩具提供控制机制。

Amazon Lex的设计目标在于帮助大家快速实现上述目标。大家首先可在Lex Console中设计您的对话,即为Lex提供某些示例性短语以构建自然语言模型。在此之后,您即可公布自己的Amazon Lex机器人并利用其处理来自您用户的文本或者语音对话内容。Amazon Lex是一项全托管服务,因此大家无需为其配套基础设施的设置、管理或者规模伸缩而费心。

您的聊天机器人目前可接入Facebook Messenger; 面向Slack与Twilio的整合工作正在进行当中。在AWS方面,Amazon Lex可与AWS Lambda、AWS Mobile Hub以及Amazon CloudWatch进行协作。您也可在代码中使用Amazon DynamoDB、Amazon Cognito以及其它服务。

Amazon Lex允许大家利用AWS Lambda函数以实现聊天机器人的业务逻辑,其中包括接入您的企业应用及数据。配合刚刚公布的、适配于AWS Mobile Hub的SaaS集成能力,大家可以使用自己构建的企业生产力机器人为客户、联系人、领导层,以及存储于其它SaaS应用程序内的企业数据提供对话界面。

综合上述内容,大家现在能够利用全部相关组件来构建全面集成化解决方案。Amazon Lex可由移动应用为起点,并可逐步推进至逻辑实现层面。

Amazon Lex概念

下面我们将对Amazon Lex的各项基本概念加以阐述:

机器人 –  一个包含了所有对话组件的聊天机器人。

意图 –  意图代表使用这个机器人的用户所希望达成的目标(包括购买机票、安排预约或者获取天气预报信息等)。

话语 –  话语指的是以语音或者文本形式表达的短语。每个话语会调用一项意图。“我想预订酒店”或者“我想预订鲜花”就是两条简单的话语。

槽位 – 每个槽位代表着满足用户意图所对应的数据片段。槽位内容拥有具体类别; 差旅机器人一般使用的槽位包括城市、州或者机场。

提示 –  提示表现为问题,用于要求用户提供某些数据(以填充槽位)来表述其意图。

实现 –  实现代表的是能够达成用户意图的业务逻辑。Lex支持利用Lambda函数作为实现手段。

机器人、意图以及槽位具备版本控制机制,因此大家可以在多开发者环境当中,在诸如开发、测试、分段以及生产等流程间设定明确的边界。大家可以为机器人创建多种别称,并将其映射至各组件的特定版本当中。

构建一套机器人

大家可以通过Lex Console定义Lex机器人并为其设置全部组件。作为起步,大家可以首先使用我们提供的样例或者直接创建您理想中的定制化机器人:

您可在下一页面中定义您的话语及其配套槽位:

而后利用以下设置对机器人进行自定义:

您可以通过交互进行机器人测试并随时调整,直到其反应与预期相符:

此后,您可以生成一条回调URL以将其应用在Facebook(或者其它支持平台)当中:

在本届re: Invent大会结束后,我将拿出更多时间对这项服务的相关细节进行深入阐述。

价格与上线时间

Amazon Lex目前已经在美国东部(北弗吉尼亚州)服务区提供预览版本,大家可以马上开始利用其构建自己的对话应用!

在登录之后,您每月可以发出1万条文本请求与5千条语音请求,且首年之内无需支付任何费用。在此之后,每1千条语音请求收费4美元,而每1千条文本请求收费0.75美元。

-Jeff

原文链接:

https://aws.amazon.com/cn/blogs/aws/amazon-lex-build-conversational-voice-text-interfaces/

Amazon Rekognition – 深度学习支持下的图像检测与识别服务

by AWS Team | on |

看到这张图片时,你的大脑是如何理解它的呢?

你可能看到一只动物、一只宠物、一只狗或者更为具体——一只金毛犬。图像与这些标签之间的联系并非硬性嵌入您的大脑,而是在看过成百上千张这样的图片之后,你的大脑才能够直接给出正确的解读。通过多个不同层面的认知,我们学会了如何区分动物与植物,猫与狗,以及其它犬种与金毛犬间的差异。

深度学习之于图像检测

然而,事实证明:为计算机赋予和人类同等水平的理解能力是一项相当困难的任务。在数十年的研究过程中,计算机科学家们尝试利用各种方法来解决这一难题。时至今日,计算机科学领域已经达成广泛共识——即解决该问题的最佳途径为深度学习。深度学习利用特征抽象化与神经网络相结合的方法输出结果。这一方法甚至曾被伟大的科幻作家Arthur C. Clarke评论为“简直与魔法无异”。

然而,深度学习仍然需要投入相当高昂的成本。首先,大家需要耗费可观的精力与时间进行训练。从本质角度讲,这意味着我们需要为学习网络提供范围极广的已标记示例(“这是一只狗”、“这是一只宠物”等等),从而确保其能够将图像中的特征性内容与标签联系起来。这个阶段需要占用可观的计算资源,特别是考虑到神经网络自身的实际规模以及多层级属性。训练阶段完成之后,成熟的网络即可更为轻松地评估其它新型图像。其结果通过传统置信水平(0%至100%)表现,而非直接给出不容置疑的事实。如此一来,大家将能够决定自己的应用适合搭配怎样的精度。

Amazon Rekognition介绍

今天,我将向大家介绍Amazon Rekognition。我们的计算机视觉小组多年以来一直致力于开发深度学习方案,并以此为基础推出了这项完备的服务,其目前每天已经能够分析数十亿张图片。该服务利用成千上万对象及场景进行训练,因此现在可供大家的应用程序直接使用。如果大家对此抱有兴趣,那么不妨在着手深入研究并编写代码以利用Rekognition API之前,访问下面的网址:

https://console.aws.amazon.com/rekognition/home

查看我们提供的相关演示。

Rekognition在设计初期就充分考虑到了规模化使用需求,能够识别场景、物品以及面部图像。在获取图像之后,Rekognition能够返回一份标签列表。对于那些包含一张或者多张面孔的图像,它会为每张面孔返回范围框及其属性。下面让我们来看看其如何分析文章开头的这幅金毛犬图片(顺带一提,这只小美女名叫Luna):

如大家所见,Rekognition以高置信水平将Luna标记为一只动物、一只狗、一只宠物以及一只金毛犬。必须强调的是,这些标签相互独立,这意味着该深度学习模型并没有明确理解各标签之间的关系,例如狗与动物。其只是之前Rekognition训练时使用的素材恰好将这两个标签与以狗为中心的内容加以关联。

下面再来看Rekognition如何分析我和妻子两人的合照:

Amazon Rekognition找到了我们的面部位置,并用框体将其圈出,同时告知我妻子的表情非常幸福(这张照片拍摄于她生日当天,能让她感到幸福也是我发自内心的期许)。

大家也可以利用Rekognition比较不同面孔,并询问其是否在给定照片中找到了其它面孔。

这一切强大的处理能力皆可通过一组API函数进行访问,大家可以利用控制台(https://console.aws.amazon.com/rekognition/home)进行快速演示。举例来说,大家可以调用DetectLabels从而通过编程方式重现我给出的第一个示例,或者调用DetectFaces以重现我的第二个示例。大家可以对进行多次调用IndexFaces,从而帮助Rekognition作好识别面部信息的准备。每一次对IndexFaces进行调用,Rekognition都会从图片中提取出部分特性(被称为面部矢量),存储这些矢量并丢弃该图像。大家可以创建一套或者多套Rekognition收集库,并在每套库内存储多个相关面部矢量组。

Rekognition能够直接将处理图像保存在Amazon简单存储服务(简称S3)当中。事实上,大家亦可以利用AWS Lambda函数处理任意规模的新近上传图像。大家还可以利用AWS身份与访问管理(简称IAM)服务对指向Rekognition API的访问加以控制。

Rekognition的实际应用

那么,大家能够利用Rekognition做什么有趣的事?我个人倒是有很多想法。

如果大家已经拥有大量图像,则可利用Amazon Rekognition对其进行标记与索引。由于Rekognition属于一项服务,因此大家能够每天处理数百万张图像,而无需为底层基础设施的设置、运行以及规模伸缩费心。大家可以随时运用视觉搜索、标签浏览以及一切交互式发现模式。

大家也可以利用Rekognition配合多种不同验证及安全背景。大家可以对摄像头上显示的面孔与存档照片进行比较,从而判断是否允许对方进入安全区域。大家也可以执行视觉监控,即从照片中找出那些值得关注或者追踪的对象或者人物。

大家可以构建“智能化”营销公告牌,利用其收集观看人员的相关统计数据。

已经上线

Rekognition服务目前已经在美国东部(北弗吉尼亚州)、美国西部(俄勒冈州)以及欧洲(爱尔兰)服务区上线,大家从今天开始即可使用。作为AWS免费层的组成部分,大家每月可利用其分析最多5000张图像并存储最多1000个面部矢量,免费周期为一年。在此之后(或者您需要对处理容量进行扩展),大家需要以分层方式根据分析图像以及所存储面部矢量的具体数量付费。

还想了解更多信息?我们将于美国中央时区时间12月14日星期三的上午4:00到5:00召开网络研讨会,感兴趣的朋友可以访问:

https://publish.awswebcasts.com/content/connect/c1/7/en/events/event/private/23850344/41359021/event_registration.html?connect-session=graysonbreezdndrpkw7uwmhrgxc&sco-id=55023367&campaign-id=JB&_charset_=utf-8

进行注册。

中国区的AWS用户也不用着急,我们将会很快举办一场AWS re:Invent 2016的回顾活动,全面为大家介绍此次发布的新功能与新服务。敬请期待!

-Jeff

原文链接:

https://aws.amazon.com/cn/blogs/aws/amazon-rekognition-image-detection-and-recognition-powered-by-deep-learning/

 

如何在AWS上安装使用分布式TensorFlow

by AWS Team | on |

前言

近几年来,深度学习得到了长足的发展,伴随着深度学习的发展,深度学习框架也变得越来越为人们所熟知。TensorFlow是谷歌开源的深度学习框架,自开源以来得到了业界的认可和支持,特别是在TensorFlow分布式版本发布以后,更多的深度学习专业人士开始使用TensorFlow进行分布式的深度学习研究。

深度学习框架底层需要硬件资源的支持,特别需要GPU实例的支持,而AWS云端弹性的GPU实例无疑是深度学习从业人员手中最灵活的资源。

本文将介绍在AWS上使用GPU实例安装配置分布式TensorFlow的过程,希望可以让读者快速搭建自己的深度学习环境,尽快深入到自己的生产应用中或者是研究领域中。

环境准备

首先我们需要为TensorFlow安装准备基础环境,其中包括AWS账号的创建,IAM用户的创建,VPC的划定等工作。有关这些具体工作的细节在本文就不详细讲述了,这些方面的细节请参考相关博文或者技术文档。

准备好账号之后就需要启动两台GPU实例进行设置,考虑到启动实例后需要进行一些软件部署,建议先启动一台GPU实例,安装设置好TensorFlow之后创建实例的AMI镜像,然后通过镜像启动第二台GPU实例,这样比较节省时间。

本文以Ubuntu作为基础环境,所以在启动实例的时候选择操作系统时选择Ubuntu镜像,本例选择的是。

进一步需要做的是选择实例类型,在AWS上的GPU实例有G2和P2两种大的类型。

P2使用了NVIDIA的K80 GPU,实例的具体配置如下:

G2使用了NVIDIA的K520 GPU,实例具体配置如下:


选择你希望使用的实例类型,然后按照EC2启动向导启动该实例。关于EC2启动的不同选项请参考相关文档,这里需要留意的是“置放组”选项,如果我们启动多个EC2实例运行TensorFlow并进行分布式计算,把这些实例放在一个“置放组”内会有效提高实例间的网络通讯效率。

实例启动后通过ssh工具连接到该实例上开始安装过程。

安装TensorFlow

准备好EC2实例后,通过ssh工具连接到实例上,开始以下安装工作。

因为TensorFlow安装需要较长时间,所以建议连接到EC2实例上以后通过screen命令或者tmux命令启动session管理,这样安装过程中出现ssh连接中断也可以继续完成安装工作。

首先需要安装相关的依赖包,具体命令如下:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential git python-pip libfreetype6-dev libxft-dev libncurses-dev libopenblas-dev gfortran python-matplotlib libblas-dev liblapack-dev libatlas-base-dev python-dev python-pydot linux-headers-generic linux-image-extra-virtual unzip python-numpy swig python-pandas python-sklearn unzip wget pkg-config zip g++ zlib1g-dev
sudo pip install -U pip

安装完依赖包以后接着安装CUDA包,本例中我是直接下载了CUDA 8.0的本地deb包进行安装,安装命令如下,读者在参考使用以下命令时注意修改对应的URL链接和版本号:

wget https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb -O cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
 
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
CUDA安装比较简单,主要时间消耗在下载CUDA安装包上。安装了CUDA包以后,可以通过nvidia-smi命令查看本地的GPU设备情况,一方面检查GPU硬件情况,一方面也可以确认CUDA安装是否成功。

在我的G2.xlarge实例上安装CUDA并执行nvidia-smi命令后输出如下:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N/A |
| N/A   33C    P0     1W / 125W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
安装了CUDA后接着安装CuDNN,安装CuDNN需要到NVIDIA网站上注册,注册以后才能下载。这里略去注册过程,读者可以自行到以下网站注册:

https://developer.nvidia.com/rdp/cudnn-download

我下载的是cudnn-8.0-linux-x64-v5.1.tgz文件,下载后的安装命令如下:

tar -zxf ./cudnn-8.0-linux-x64-v5.1.tgz
 
sudo cp -R cuda/lib64/* /usr/local/cuda-8.0/lib64
 
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/

然后我们需要设置一些环境变量,我将以下配置加入~/.bashrc文件中,并用source ~/.bashrc命令让配置生效。

export CUDA_HOME=/usr/local/cuda-8.0
export CUDA_ROOT=/usr/local/cuda-8.0
export PATH=$PATH:$CUDA_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_ROOT/lib64

安装了NVIDIA的相关组件后我们还需要安装bazel,为了安装bazel,我们需要先安装java8,具体命令如下:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

安装java8会有图形化向导,按照向导指引安装就好了。

安装了java8以后执行以下命令安装bazel:

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install bazel
sudo apt-get upgrade bazel

经过以上准备,相关的软件都安装配置好了,可以开始编译TensorFlow了。

首先把TensorFlow项目克隆到本地:

git clone --recurse-submodules https://github.com/tensorflow/tensorflow

接着进入tensorflow目录并运行configure命令为编译做准备,注意要加上sudo,否则会出现权限的问题。

cd tensorflow
 
sudo ./configure

执行./configure会出现文本配置界面,在选择不同选项时几乎可以都使用缺省值,当然在选择是否有GPU支持时要选择Y,然后就是要注意“Cuda compute capability”一项,如果你选择的实例类型是G2,这里需要输入3.0,因为G2实例使用的GPU是K520,只能支持Cuda compute capability 3.0。如果你选择的机型是P2,因为使用的GPU是K80,可以使用缺省的Cuda compute capability,本例使用的TensorFlow版本缺省的是3.5。

具体选项请参考以下截图:

如果你为G2实例类型选择了3.5或者更高版本,运行TensorFlow时会出现以下错误信息:

Ignoring visible gpu device (device: 0, name: GRID K520, pci bus id: 0000:00:03.0) with Cuda compute capability 3.0. The minimum required Cuda capability is 3.5.

配置好以后通过bazel命令编译,注意使用sudo命令:

sudo bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

编译需要一段时间,编译完成后使用buildpippackage命令为python构建pip包,以下命令中的/tmp/tensorflow_pkg目录是pip包输出的临时文件,可以根据你自己的环境进行调整:

sudo bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

构建了pip包以后使用pip命令进行安装,注意以下命令中的/tmp/tensorflow_pkg/tensorflow-0.11.0-cp27-cp27mu-linux_x86_64.whl是上一个命令生成的whl包文件路径,其中包括了具体的版本号,在你自己编译的时候需要留意这个版本号是否有变化:

sudo pip install /tmp/tensorflow_pkg/tensorflow-0.11.0-cp27-cp27mu-linux_x86_64.whl

以上命令执行完以后就成功安装了TensorFlow了,可以开始测试了。

测试与分布式部署

神经网络的测试经常使用mnist数据集进行,TensorFlow中自带了mnist的样例,安装好TensorFlow以后通过以下命令可以进行测试:

python tensorflow/tensorflow/models/image/mnist/convolutional.py

一切正常的话,很快convolutional.py命令就可以执行完成,结束后会输出准确率。

测试结束后,进一步需要做的事情就是分布式部署。如开篇讲到的,在AWS上可以使用镜像(AMI)简化新实例启动过程中的安装工作。

基本做法就是选中以上步骤配置的EC2实例,然后选择“”操作执行镜像创建的操作。当我们需要启动第二台GPU实例时,选择刚创建的镜像进行启动就好了。

启动第二台实例时注意选择第一台实例使用的子网,减少其它因素的干扰。如果对网络性能有特别要求,还可以将两台实例放在同一个“置放组”中,提高两台GPU实例之间的网络通讯速度。

另外,如下文所示,TensorFlow不同进程启动的时候会使用不同的端口,本例使用的是2222和2223端口。为了让两个GPU实例可以通过这些端口通讯,需要设置两个GPU实例所使用的安全组,开放2222,2223,2224的入站访问。

在tensorflow的源代码目录中有个分布式样例文件叫:./tensorflow/tools/dist_test/python/mnist_replica.py,是已经写好的分布式代码。

该python程序通过–pshosts指定参数服务的IP和端口,通过–workerhosts指定工作进程的IP地址和端口。

本例中使用的两台GPU实例的ip地址分布是172.31.24.117和172.31.30.43,我在172.31.24.117上运行参数服务器进程,命令如下:

python ./tensorflow/tools/dist_test/python/mnist_replica.py --ps_hosts=172.31.24.117:2222 --worker_hosts=172.31.24.117:2223,172.31.30.43:2223 --job_name=ps --task_index=0 

注意这里的参数–job_name=ps用于指定本进程的角色。

接着在172.31.24.117上起第一个worker进程,命令如下:

python ./tensorflow/tools/dist_test/python/mnist_replica.py --ps_hosts=172.31.24.117:2222 --worker_hosts=172.31.24.117:2223,172.31.30.43:2223 --job_name=worker --task_index=0 

这个命令和第一个启动参数服务器的命令几乎一样,差别就是–job_name=worker这个参数。

接着在172.31.30.43上启动第二个worker进程,命令如下

python ./tensorflow/tools/dist_test/python/mnist_replica.py –ps_hosts=172.31.24.117:2222 –worker_hosts=172.31.24.117:2223,172.31.30.43:2223 –job_name=worker –task_index=1
因为都是启动worker进程,所以两个启动worker进程的命令都是用的 –jobname=worker 参数,关键在于第一个worker进程使用taskindex=0 参数,而第二个worker进程使用task_index=1 参数。

执行以上命令后稍等片刻两个worker进程就会开始mnist数据集的训练,从日志输出上可以看出两个worker进程分别负责了部分样本的训练。

结语

以上就是AWS上编译安装TensorFlow并执行分布式训练的过程,完成以上环境搭建以后就可以开始你自己的分别式神经网络训练了。

作者介绍:

邓明轩

亚马逊AWS解决方案架构师,拥有15年IT 领域的工作经验,先后在IBM,RIM,Apple 等企业担任工程师、架构师等职位;目前就职于AWS,担任解决方案架构师一职。喜欢编程,喜欢各种编程语言,尤其喜欢Lisp。喜欢新技术,喜欢各种技术挑战,目前在集中精力学习分布式计算环境下的机器学习算法。

New feature launched to AWS China (BJS) region, operated by SINNET – Amazon RDS for SQL Server – Support for Native Backup/Restore to Amazon S3

by AWS Team | on |

As a managed database service, Amazon RDS takes care of the more routine aspects of setting up, running, and scaling a relational database. We first launched support for SQL Server in 2012. Continuing our effort to add features that have included SSL support, major version upgrades, transparent data encryption, enhanced monitoring and Multi-AZ, we have now added support for SQL Server native backup/restore.

SQL Server native backups include all database objects: tables, indexes, stored procedures and triggers. These backups are commonly used to migrate databases between different SQL Server instances running on-premises or in the cloud. They can be used for data ingestion, disaster recovery, and so forth. The native backups also simplify the process of importing data and schemas from on-premises SQL Server instances, and will be easy for SQL Server DBAs to understand and use.

Support for Native Backup/Restore

You can now take native SQL Server database backups from your RDS instances and store them in an Amazon S3 bucket. Those backups can be restored to an on-premises copy of SQL Server or to another RDS-powered SQL Server instance.  You can also copy backups of your on-premises databases to S3 and then restore them to an RDS SQL Server instance. SQL Server Native Backup/Restore with Amazon S3 also supports backup encryption using AWS Key Management Service (Note) across all SQL Server editions. Storing and transferring backups in and out of AWS through S3 provides you with another option for disaster recovery.

You can enable this feature by adding the SQL_SERVER_BACKUP_RESTORE option to an option group and associating the option group with your RDS SQL Server instance. This option must also be configured with your S3 bucket information and can include a KMS key to encrypt the backups.

Start by finding the desired option group:

Then add the SQL_SERVER_BACKUP_RESTORE option, specify (or create) an IAM role to allow RDS to access S3, point to a bucket, and (if you want) specify and configure encryption:

After you have set this up,  you can use SQL Server Management Studio to connect to the database instance and invoke the following stored procedures (available within the msdb database) as needed:

  • rds_backup_database – Back up a single database to an S3 bucket.
  • rds_restore_database – Restore a single database from S3.
  • rds_task_status – Track running backup and restore tasks.
  • rds_cancel_task – Cancel a running backup or restore task.

To learn more, take a look at Importing and Exporting SQL Server Data.

Note
Key Management Service is not currently available in AWS China (BJS) region, operated by SINNET. You may go to other AWS regions to deploy this service.

由光环新网运营的AWS中国北京(BJS)区域现推出新RDS功能 – 支持SQL Server 本机备份/还原到Amazon S3

by AWS Team | on |

Amazon RDS作为托管数据库服务,负责关系数据库设置、运行和扩展方面的多种常规工作。我们于 2012 年首次推出对 SQL Server 的支持。之后一直在努力丰富和完善各项功能 (包括 SSL 支持、主要版本升级、透明数据加密、增强监控和多可用区),现在又增加了对 SQL Server 本机备份/还原的支持。SQL Server 本机备份包括所有数据库对象:表、索引、存储过程和触发器。这些备份通常用于在本地或云中运行的不同 SQL Server 实例间迁移数据库。它们可用于数据提取、灾难恢复等。本机备份还可简化从本地 SQL Server 实例中导入数据和架构的过程,并且便于 SQL Server 数据库管理员了解和使用。

支持本机备份/还原

您现在可以从 RDS 实例中进行本机 SQL Server 数据库备份,并将其存储在 Amazon S3 存储桶中。这些备份可以还原到 SQL Server 的本地副本或另一个支持 RDS 的 SQL Server 实例。您还可以将本地数据库备份复制到 S3,然后再将其还原到 RDS SQL Server 实例。使用 Amazon S3 进行的 SQL Server 本机备份/还原还支持在所有 SQL Server 版本中使用 Key Management Service (附注)进行备份加密。通过 S3 在 AWS 中存储和传入/传出备份将为您提供另一种灾难恢复选择。您可以通过在选项组中添加 SQL_SERVER_BACKUP_RESTORE 选项并将该选项组与 RDS SQL Server 实例相关联的方法来启用此功能。此选项还必须配有您的 S3 存储桶信息并且可包含 KMS 密钥才能对备份进行加密。首先找到所需的选项组:

然后添加 SQL_SERVER_BACKUP_RESTORE 选项,指定 (或创建) IAM 角色,以允许 RDS 访问 S3、指向存储桶并 (根据需要) 指定和配置加密:

设置此选项后,您可以使用 SQL Server Management Studio 根据需要连接到数据库实例并调用以下存储过程 (在 msdb 数据库中提供):

rds_backup_database – 将一个数据库备份到 S3 存储桶。
rds_restore_database – 从 S3 中还原一个数据库。
rds_task_status – 跟踪正在运行的备份和还原任务。
rds_cancel_task – 取消正在运行的备份或还原任务。
要了解更多信息,请参阅导入和导出 SQL Server 数据

*附注:KMS服务尚未于由光环新网运营的AWS中国(BJS)区域提供服务,用户若需使用KMS功能,可至AWS全球其他区域进行操作。

Amazon S3 和 Amazon Glacier 降价

by AWS Team | on |

我们很高兴地宣布,我们整合了S3产品的价格区间,同时调降了存储产品S3和Glacier的价钱。S3产品的价格区间从6个整合至3个 : 0-50TB,50-500TB,以及500TB以上。我们希望帮助客户更加容易理解账单并管理预算。我们也会在全球区域调降S3和Glacier 产品价格达20%以上。以上的更新将更好地帮助用户节省成本,同时如往常一般,享受简单、持久、以及大规模的AWS目标存储服务。

由光环新网运营的AWS中国(北京)区域的存储产品价格调整如下:

Glacier – 0.0334元人民币 每GB每月 56%的降幅

此项价格变动将由2016年12月1日起生效。

除了价格调降之外,Glacier并推出了新的提取数据的选项,让客户有更经济的选择,并且能在更短的时间内提取所需数据,且我们将以费率计价的方式调整为单一的按数据大小计费。

用户现有三种提取数据的方式:

  • 标准:用户可以在三到五小时内得到存档数据,这是之前已经有的方式,并且也是默认的提取数据选项。
  • 加速:若用户偶有突发状况需紧急提取所需数据时,现在可以选择加速提取选项。此选项可以让用户在1-5分钟内得到所需数据,最大支持到250MB的数据提取。我们提供用户两种计费方式:按需及预付费。按需方式类似EC2,在大部分情况下用户都可以使用;而预付费方式,在用户预缴了月费的情况下,保障了用户无论何时都可以使用。
  • 批量:批量提取为Glacier最低价的数据提取选择,用户可用最优惠的价格,在5-12小时内取得所需大量数据,

此项功能变动现已生效。