背景介绍
PyTorch是由Facebook人工智能研究院于2017年1月在github上开源的深度学习框架,一经开源就迅速吸引了人们的眼球。其历史可以追溯至2002年使用Lua语言的Torch框架,并由其幕后团队一手打造。PyTorch作为Torch框架的继任者,并不仅仅只是移植代码并提供接口,而是深入支持了Python,对大量模块进行了重构,并新增了最先进的变量自动求导系统,成为时下最流行的动态图框架。
在入门时,PyTorch提供了完整的文档,并有着活跃的社区论坛,对于新手而言上手遇到的难关容易解决。更深入一些,在特性设计上,PyTorch对于抽象出的概念较少,易于理解,同时提供的API的设计理念与Torch一脉相承,符合人的一般思维,接口优雅。而框架最核心的性能方面,PyTorch的速度表现在许多评测中胜过TensorFlow和Keras等知名框架。
本文将以一个使用了pytorch的demo代码pytorch-classify为例,通过华为云上的容器服务一键式部署,5分钟完成免费的云上pytorch代码的部署。
传统部署方式
首先是准备环境。先有个服务器,这台服务器需要能够被外部访问。而后在操作系统里使用yum安装需要的python(3.6.5)、pip、git,再通过pip等方式获取到代码需要的依赖(pytorch 0.4.1),准备好软件依赖后检查pytorch-classify代码所需的各项环境配置是否满足要求。而后通过git拉取版本代码放入环境内,通过脚本运行起来。
在简单环境下,这种部署方式是没有任何问题的。但是由于真实环境复杂,事情并没有那么简单,上面的每一步都可能会有问题,并且有些问题很难处理。比如说安装软件的时候,环境上已有2.7.11的python版本,并且已经为另外一个项目所使用,那么此时的你并不一定有能力与魄力选择将python版本升级并还能保证一切都是ok的。
本方法在复杂环境下部署时间上限与影响范围极难估计,只适合简单应用的部署。
华为云上容器部署方式
容器依托操作系统提供的沙箱机制,能够将应用及其运行环境直接打包为镜像,一次打包多次运行。同时,依托于Kubernetes(k8s)等容器编排引擎,容器支持自动化部署以及大规模可伸缩的应用容器化管理,这些特性大大方便了应用的部署。K8s使应用系统变成了一系列应用相关的配置,简单同时不易出错,在部署大型应用系统的时候也有一战之力。
一个应用系统一般会有多个应用相关的配置,虽然现在升级的时候只需要修改配置项,但是由人工逐项操作不免依然费时费力还容易出错。此时,你需要华为云的应用编排服务(AOS)。
在AOS中,一个应用系统对应一个堆栈,堆栈由模板加配置生成,只需要修改配置,其他一切由AOS负责。
依然以pytorch-classify这个应用为例,经过AOS设计器的设计,可以表示成上图表示的应用系统。一切清清楚楚,所见即所得。
实操环节
由于传统部署方式各种操作较为不便,没有提供实操的步骤。下文提供的是华为云上容器部署方式的操作指南,操作一遍之后即可得体会到AOS的便捷之处。
后文中AOS模板中包含了代码,这种方式常见于开发环境,即代码与环境分离,代码的变动相较于环境而言较大的情况下。而在生产环境推荐直接将代码打包进入镜像中使用,但是对于当前演示没有影响。
操作如下:
一、注册华为云账号并实名认证(如已有华为云实名认证账号可直接进行下一步)
1.账号注册
进入华为云官网首页,点击右上角的【注册】按钮:
设置账号名、密码、手机号、短信验证码并勾选“我已阅读并同意《华为云用户协议》和《隐私政策声明》”,单击【同意协议并注册】即可完成注册。
2.实名认证
用户注册完华为云账号后需要进行实名认证才能使用相关服务,实名认证流程也非常简单,在用户中心可以看到实名认证的提示信息,根据页面引导选择用户类型和认证类型进行认证即可。
二、开通3天免费容器集群
1.在【云容器引擎】-【体验中心】-【初级案例】模块找到购买集群,单击【体验】按钮根据界面引导进行免费集群和节点的创建。
2.资源创建完后,到【服务列表】-【弹性公网IP】找到创建好的弹性ip后记录下来,在第三步部署pytorch-classify应用时会用到。
三、pytorch-classify代码一键式部署
1.在【应用编排服务】-【模板市场】-【公共模板】模块找到pytorch-classify应用,进入模板详情页,单击【创建堆栈】按钮。
2.填写相关入参信息,包括堆栈名称、弹性ip等,并选择刚才创建的集群:
在输入中填入从第二步中获取到的弹性ip地址。
pytorch-classify选项卡中可以填写镜像的地址,由于该选项有默认值,直接略过即可。所有参数设置完以后,点击【下一步】,点击【创建堆栈】。
3.一键式部署pytorch-classify:
1分钟后堆栈创建成功。
4.进入堆栈详情,在输出参数中有pytorch-classify的访问链接,点击链接:
5.可以正常使用应用的功能:
写在最后的话
前文中的AOS模板包含了整个应用系统中所必须的各项配置,如应用的部署、依赖的配置项、外部访问所需要的服务,但是AOS能力并不止于此。AOS还有能力对于资源如虚机、网络、安全组以及中间件如数据库、消息队列等进行创建等编排操作,再大的应用也和前文的操作一样,一键式部署搞定~
如对AOS感兴趣,可以访问AOS帮助中心了解详细内容。