2018-03-14 14:09:18 weixin_40581617 阅读数 305
  • 阿里云机器学习算法应用实践

    人工智能的商业化应用是下一个风口,阿里云在机器学习算法方面有许多沉淀。本次分享首先是介绍阿里云机器学习PAI,接着会在上面搭建真实的案例,包括心脏病预测、新闻分类等场景。

    13996 人正在学习 去看看 CSDN讲师

阿里云容器服务提供的深度学习解决方案内置了对Tensorflow, Keras, MXnet框架的环境,并支持基于它们的深度学习模型开发、模型训练和模型预测。同时,对于模型训练和预测,用户还可以通过指定自定义容器镜像的方式,使用其他深度学习框架。



热点热

通过阿里云容器服务深度学习解决方案上手Caffe+多GPU训练

作者:wsxiaozhang

一张图看懂阿里云网络产品[十二]云企业网

作者:david陈

玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点

作者:樰篱 

知识整理

Hive高级优化

作者:突突修

比特币的区块结构解析

作者:邴越

Debian 环境下简单配置 Bind9 服务

作者:行者武松

Hive中文件存储格式及大小比较测试

作者:突突修

CLI使用案例4:灵活配置CLI

作者:成喆

美文回顾

为什么要使用 Python 生成器?该如何使用 Python 生成器?

作者:马达达

2018年最新Linux云计算入门学习路线图

作者:不是吴彦祖

用深度学习识别人脸openface和dlib

作者:秦玉坤

美工跟程序员合作应该注意哪些问题?

作者:浮生递归

一个正在被API驱动的互联网时代

作者:止水

MSSQL - 最佳实践 - 数据库备份链

作者:风移

ApsaraDB for SQL Server 混合云场景一种解决方案

作者:石沫


  • 往期精选回

3月8日云栖精选夜读:【AI女神节特稿】你不能不知道的13位中国人工智能女性
3月7日云栖精选夜读:如何提升集群资源利用率? 阿里容器调度系统Sigma 深入解析
3月6日云栖精选夜读:如何实现32.5万笔/秒的交易峰值?阿里交易系统TMF2.0技术揭秘
2018-10-11 22:24:19 eo63y6pKI42Ilxr 阅读数 437
  • 阿里云机器学习算法应用实践

    人工智能的商业化应用是下一个风口,阿里云在机器学习算法方面有许多沉淀。本次分享首先是介绍阿里云机器学习PAI,接着会在上面搭建真实的案例,包括心脏病预测、新闻分类等场景。

    13996 人正在学习 去看看 CSDN讲师

介绍


现如今在谈论数据的价值的时候,经常提到的概念之一就是深度学习,或者更广泛的说是人工智能。深度学习系统通常通过大规模的数据集和神经网络算法来训练和完善应用模型,这就需要强大的计算集群,高性能可扩展的存储系统来实现。

深度学习的基本概念


人工智能(AI,Artificial Intelligence)指由人制造出来的机器所表现出来的智能,通常AI尝试创造类人的用于通用目的的智能设备。


机器学习(ML,Machine Learning)是AI的一个分支,通常通过训练的方式来解决特定的问题,例如图片识别,语音识别等。


深度学习(DL,Deep Learning)是机器学习的一个分支,通常指机器学习中使用的神经网络算法超过一层,就称为深度学习。其中最经常使用的是卷积神经网络(CNN,Convolutional Neural Networks),通常包括输入层,隐层(多层),输出层组成的多层网络,并且只有响铃的层之间有连接,同一层及跨层之间无连接,是一种接近人类大脑的层次结构的分层结构。


三者的关系如下图所示:


640?wx_fmt=png


深度学习在最近几年得到了飞速的发展,许多深度学习的框架涌现了出来。这些框架都依赖于计算图的概念,计算图定义了需要执行的计算顺序,并且计算图可以并行地在GPU中优化和运行。目前比较流行的深度学习框架有TensorFlow,Caffee,Torch等,同时一些新的框架也不断涌现出来。


深度学习数据处理流程


深度学习通常包括以下数据处理流程:


640?wx_fmt=png


  • 数据采集:

    根据业务需要,采业务需要的的数据。同时,也有专门的数据公司,提供数据,可以直接购买。

  • 清洗标注:
    采集后的原始数据可能会存在有缺失值、重复值、无效数据等问题,在使用之前需要进行处理。处理的过程,通常针对不同的任务和数据集属性的不同而不同。例如,汽车驾驶中等待红绿灯的时间采集的数据是要删除的。

  • 模型训练:
    构建适当的算法和模型,用准备好的训练集训练和修正模型。这通常需要GPU的训练集群来进行训练。


以上步骤完成后,会将训练完的模型部署到实际的应用环境中,实际使用模型来进行验证。部署完成后,我们可以在实际的应用场景中检验模型的好坏,同时用实际环境中的场景来验证和完善模型。


以上各个步骤的工作负载特征如下:


640?wx_fmt=png


从上面的表里,可以看出,AI各个流程中,工作负载表现出了很大的差别,这对存储系统提出了很高的要求。不仅要支撑顺序读写的大块工作负载,也要支撑随机读写的小块IO的工作负载。


深度学习对计算力的需求


深度学习近年来取得突破性的进展,离不开三个方面:大数据,深度学习模型,计算能力的提升(尤其是GPU在训练场景中的大量应用)。随着问题规模的不断增大,数据量的不断增加,以及训练用的神经网络深度的深度的不断增加,对计算能力的需求也越来越大。


640?wx_fmt=png


例如,Nvidia新发布的NVIDIA DGX-2服务器,包含了16个GPU单元,单个机器已经可以提供2Peta flops的计算能力。


谷歌的高级研究员、Google Brain 项目的负责人 Jeff Dean 曾说道,事实证明,我们真正需要的是超过现在 100 万倍的计算能力,而不只是区区几十倍的增长。


深度学习对存储系统的需求


共享需求


现在的深度学习通常是由规模庞大的高性能计算集群来完成的,多个节点并行的读取数据,协同的来处理一个任务。因此,在深度学习的场景中,需要一个共享的存储空间来收集和存储数据。将数据共享的好处包括,深度学习模型准备好后,立马可以开始运行,另外也省去了来回拷贝搬运数据的麻烦。


高性能需求


另外,深度学习需要大量的数据来训练模型,因此存储系统要提供高带宽来保证数据的流动足够快,以满足需求。另外,在训练的过程中,算法通常需要随机读取训练集中的训练样本进行训练,因此在训练过程中,随机读的负载占大多数,并且多数图片的训练场景中,图片文件的大小多数在1MB以下,这就对存储系统的IOPS提出了很高的要求。


生命周期管理需求


深度学习的场景中,还要有完善的数据生命周期的管理功能。数据从采集到清洗,标注,到训练,然后到归档,一直处于一个流动的状态,存储系统要提供完善的数据流动机制和管理机制,管理起数据的全生命周期。
传统的NFS存储,虽然提供了共享的命名空间,但是存在以下问题,单服务器节点是冥想的瓶颈,NFS协议本身带来的overhead,无法提供足够的带宽,无法满足数据访问低延迟的需求。另外,也无法提供一个生命周期管理的功能。

因此,深度学习的存储系统,一方面需要提供一个统一的命名空间来共享数据给前端的高性能计算集群,另一方面为了保证训练业务的流畅性,要提供高带宽高IOPS以满足需求,最后还需要提供完善的生命周期管理功能。


阿里云文件存储NAS


阿里云文件存储NAS是一个弹性扩展,高可靠,高可用,高性能的分布式文件系统。它基于 POSIX 文件接口,天然适配原生操作系统,共享访问,同时保证一致性和锁互斥,并且性能随容量线性扩展。


阿里云文件存储NAS架构:

640?wx_fmt=png


第一层是计算层,使用标准文件协议NFS/SMB或兼容posix的定制化客户端来访问文件存储。第二层是阿里云网络负载均衡ALB,把客户端请求轮转发送到前端机。第三层是负责协议处理的前端机,协议尽量做到无状态,涉及状态部分下沉到元数据管理层。第四层是元数据管理,把目录树结构转变成key-value对,通过基于log structure merge tree的分布式key-value来实现。第五层是元数据和数据持久化在盘古,使用盘古的分布式存储量提供高达10PB,和99.999999999%的数据可靠性,容量可弹性扩展,按需使用。


元数据和数据分离,NAS Protocol前端机IO直连盘古,把数据位置信息和元数据一起更新,前端机通过元数据更新盘古文件的信息。盘古文件是会散在整个集群的,所以前端机读写可充分利用整个集群的IO能力。


安全隔离,基于VPC安全组提供网络隔离和ACL访问控制,保证海量容器使用共享存储时的数据安全隔离。同时提供容器到文件存储的传输加密,保障数据传输过程在不被窃取和篡改。


数据备份,阿里云文件存储提供文件系统级的数据备份功能,可以基于灵活的备份策略提供多副本的数据保护,在发生数据误删除,错误修改的情景时,可以使用历史副本恢复数据。


关于文件存储NAS的详情,请参考:https://www.aliyun.com/product/nas


阿里云CPFS并行文件系统


随着高性能并行计算大规模商业化时代的到来,传统并行文件系统面临诸多挑战,存储资源的急剧增长、成本高、运维管理复杂度大、大规模存储系统的稳定性、性能随规模无法完全线性扩展等一系列问题困扰广大客户,CPFS应运而生。


CPFS(Cloud Parallel File System)是基于定制版Lustre的并行文件系统,,提供大型并行数据处理能力,数据存储到群集中的多个数据节点,多个客户端可以同时访问这些数据,为大型高性能计算机集群提供高IOPS、高吞吐、低时延的数据存储服务。


CPFS架构:


640?wx_fmt=png


CPFS架构在盘古之上,利用Pangu的block接口为Lustre提供块设备。网络支持Infiniband和以太网。CPFS有以下特点:


  • 超高的数据可靠性
    基于飞天盘古分布式存储系统构架的Lustre持久化存储,多份数据拷贝,99.99999999%数据可靠性,远高于传统存储厂商提供的磁盘阵列raid的可靠性。

  • 深度优化可用性
    基于paxos ring的仲裁调度,自动检测异常服务节点,并在分钟级别重新提供服务,远高于传统存储厂商提供的手动配置HA的可用性。

  • 符合标准的POSIX/MPI接口,无需对应用做任何修改

  • 高性能,高并发,容量、性能水平扩展


关于并行文件存储CPFS的详情,请参考:https://help.aliyun.com/document_detail/66278.html

CPFS目前处于公测阶段,要申请CPFS的测试请到如下链接:
https://www.aliyun.com/product/nas


阿里云深度学习解决方案


解决方案架构


640?wx_fmt=png


数据上传:


阿里云提供两种数据上传的方式:


  • 闪电立方
    闪电立方Lightning Cube是阿里云为TB乃至PB级数据迁移提供的服务。它使用定制设备,安全,高效,低成本的帮助您把海量数据从本地机房迁移到云端或者是从云端迁移会本地机房。
    关于闪电立方的详情,请参考:https://www.aliyun.com/product/mgw

  • 高速通道

    阿里云高速通道(Express Connect)服务,帮助您在VPC间、VPC与本地数据中心间搭建私网通信通道,提高网络拓扑的灵活性和跨网络通信的质量和安全性。使用高速通道可以使您避免绕行公网带来的网络质量不稳定问题,同时可以免去数据在传输过程中被窃取的风险。
    关于高速通道的详情,请参考:https://www.aliyun.com/product/expressconnect


计算集群:


计算集群方面,阿里云提供GPU云服务器,为AI深度学习优化,提供强大高效的计算能力;还提供了一站式的弹性高性能计算(E-HPC)的公共云服务,便于管理和使用集群;在应用层,还提供了阿里云容器服务,一键生成AI容器集群。


  • GPU云服务器/弹性裸金属服务器(神龙):


    GPU云服务器是基于GPU应用的计算服务,多适用于AI深度学习,视频处理,科学计算,图形可视化,等应用场景,型号有AMD S7150, Nvidia M40, Nvidia P100,Nvidia P4,Nvidia V100阿里云成为中国首家与NGC GPU加速容器合作的云厂商。
    关于GPU云服务器的详情,请参考:https://www.aliyun.com/product/ecs/gpu


    弹性裸金属服务器(ECS Bare Metal Instance)是一种弹性可水平伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点,分钟级的交付周期助你的企业获得实时的业务响应能力,助力核心业务飞速成长。
    关于GPU云服务器的详情,请参考:https://www.aliyun.com/product/ebm


调度方式可以选择E-HPC或者容器服务:


  • 弹性高性能计算(E-hpc):

    弹性高性能计算(E-HPC)基于阿里云基础设施,为用户提供一站式公共云HPC服务,面向教育科研,企事业单位和个人,提供快捷,弹性,安全和与阿里云产品互通的技术计算云平台。
    关于容器服务的详情,请参考:https://www.aliyun.com/product/ehpc

  • 容器服务:

    容器服务提供高性能可伸缩的容器应用管理服务,支持用Docker和Kubernetes进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。容器服务简化了容器管理集群的搭建工作,整合了阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器运行环境。
    关于容器服务的详情,请参考:https://www.aliyun.com/product/containerservice


存储系统


文件存储NAS容量弹性扩展,按需使用,对于集群规模小于20台的集群,满足其深度学习工作负载对文件系统的带宽和IOPS需求。对于大规模的并发极高的集群,推荐使用并行文件系统CPFS。
同时,对于冷数据,阿里云提供了OSS对象存储系统,并且提供了Filesync的迁移服务,可以方便的将冷数据归档。


阿里云深度学习解决方案设计关注点


  • 提供强大计算能力的同时,还保证了弹性和易用性:
    神龙服务器,既具有裸服务器的性能,又有虚拟机的弹性,并且使用E-HPC提供了简单高效的集群管理和调度系统。
    一键部署容器集群,快速建立训练环境。
    文件共享方面,文件存储NAS和CPFS并行文件系统按需使用,灵活扩展。

  • 保证稳定性的同时,提供了全生命周期的数据管理和灵活高效的数据流动机制:
    文件存储NAS和CPFS高可靠,高稳定,保证业务的连续性。
    数据从采集到训练,归档,使用高效的数据传输工具,压缩数据流动时间。
    从采集到归档,完全的数据生命周期管理。

  • 保证高可靠性的同时,提供了高性能:
    高效可靠的容器管理,支持海量容器秒级启动,并经过阿里超大规模验证。
    文件存储NAS和CPFS并行文件系统基于盘古架构,提供了11个9个高可靠性的同时,提供了高带宽和高IOPS。


阿里云深度学习解决方案部署配置


利用E-HPC部署计算集群


建立集群


登录管理控制台,定位到 弹性高性能计算 > 集群,选择地域(如华东1),单击 创建集群。

640?wx_fmt=png


选择硬件配置,网络配置等参数,配置共享存储(文件存储NAS)!

640?wx_fmt=png


共享存储在这里配置过后,计算集群节点系统起来后,会自动挂载文件系统NAS。


注意:目前CPFS处于公测阶段,如果要使用CPFS并行文件系统,需要手动在服务器节点的终端里执行挂载命令。


选择软件配置,基础配置等参数,最后点击确认创建集群。确认配置清单,配置拓扑图,大约经过20分钟,您可以回到E-HPC集群列表页面,查看新集群状态。若新集群所有节点皆处于正常状态,则集群已创建完毕。


详细步骤及参数,请参考:https://help.aliyun.com/document_detail/57937.html?spm=a2c4g.11186623.2.11.32767c13pITowJ


使用集群:


登录集群,并使用作业调度系统提交作业。目前E-HPC支持两种作业调度软件PBS pro和
SLURM。详细步骤请参考:

https://help.aliyun.com/document_detail/58269.html



利用Kubernetes构建集群


Kubernetes集群部署


1.创建Kubernets集群


640?wx_fmt=png


2.确认集群配置


640?wx_fmt=png


3.集群创建成功


640?wx_fmt=png


阿里云NAS文件存储部署


1.创建NAS文件系统

640?wx_fmt=png


2.添加挂载点

640?wx_fmt=png


640?wx_fmt=png


3.成功添加挂载点,挂载地址用于后续对接容器使用


640?wx_fmt=png


Kubernetes集群对接NAS存储


  1. 为集群创建存储卷


640?wx_fmt=png


2.成功创建NAS存储卷


640?wx_fmt=png


640?wx_fmt=jpeg


end

利用Python构建一个简单的推荐系统

使用Python创建自己的第一个神经网络模型吧

阿里巴巴搜索引擎平台Ha3揭秘

断点调试和日志调试之间的平衡点 --- 函数计算调试之Python篇

更多精彩

2017-08-23 10:34:48 u012361116 阅读数 675
  • 阿里云机器学习算法应用实践

    人工智能的商业化应用是下一个风口,阿里云在机器学习算法方面有许多沉淀。本次分享首先是介绍阿里云机器学习PAI,接着会在上面搭建真实的案例,包括心脏病预测、新闻分类等场景。

    13996 人正在学习 去看看 CSDN讲师

《使用变分自编码器VAE训练出深度生成模型》       

       本周我们使用无监督深度学习算法变分自编码器VAE来做一些有趣的事情,通过对mnist数据集的学习,捕捉图像的结构变化(倾斜角度、圈的位置、形状等变化),生成数据集里没有的图像。


直播主题:使用变分自编码器VAE训练出深度生成模型

直播时间:20170823  周三晚 20:00

直播地址:https://www.douyu.com/2181595

学习QQ群1567810612  

学习QQ群2218089115 

(获奖者务必加入QQ群,群1、群2加入任何一个均可)

直播嘉宾: 


谭创创

负责国家级大学生创新项目一项,发表SCI一篇,将深度学习应用于医疗。

热爱机器学习,擅长TensorFlow

分享内容:

1. mnist数据集介绍

2. 变分自编码器的原理

3. 解读本次实验代码

4. 使用PAI的TensorBoard 评估实验效果

 

环境及数据说明:

环境需求:  Python +Tensorflow

数据下载地址: 

http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/50654/cn_zh/1487561924421/train.tfrecords?spm=5176.doc50654.2.2.EU4ykl&file=train.tfrecords

 

有奖互动

一、最佳实践

  1、截止到82418点,完成本期实验

  2、实验过程分享至天池技术圈

  3生成图片手写数字最清晰10名同学

互动规则:完成上述3个步骤,并且TOP3的同学将得到《机器学习应用实践》书籍1本,top4-10淘宝U盘一个

二、嘉宾互动抽奖 

互动时间:8月23日直播活动后(直播后准时开始)

互动时长:15-30分钟

互动地址:https://tianchi.aliyun.com/competition/new_articleDetail.html?postsId=2416

互动规则:

       周三直播后,对于视频中的内容或者机器学习PAI有问题的同学可以在互动时间内留言提问 @谭创创 老师 回答

      每逢问题楼层尾数为9,例如9,19,29,39,……即可获得天池定制淘公仔U盘一个!U盘内自带天池历届大赛优胜队伍思路代码,限量30个,先到先得!


【推荐课程】

上周三机器学习录播回顾:CTR中的GBDT+LR融合方案

https://tianchi.aliyun.com/competition/new_articleDetail.html?spm=5176.8366600.2238.1.5ca91ac5nV9TNm&raceId=&postsId=2238

更多机器学习免费系列课程:

https://tianchi.aliyun.com/competition/new_articleDetail.html?spm=5176.8366600.4851167.1.5ca91ac5CLNIEV&raceId=&postsId=1515



2018-06-26 16:09:16 dongjbstrong 阅读数 8882
  • 阿里云机器学习算法应用实践

    人工智能的商业化应用是下一个风口,阿里云在机器学习算法方面有许多沉淀。本次分享首先是介绍阿里云机器学习PAI,接着会在上面搭建真实的案例,包括心脏病预测、新闻分类等场景。

    13996 人正在学习 去看看 CSDN讲师

自己电脑性能不达标,所以需要使用云平台来进行深度学习训练,在众多平台中比较之后,选择了阿里云。期初以为是租用GPU服务器,但是这种方式有点类似于给你一台新电脑,上面什么软件都没有安装,需要自己去配置,配置比较麻烦,而且安装各种包的时候,是需要扣钱的。后来看到阿里云上有机器学习的产品,也就是PAI,用了一下,可以运行我的数据了,故把过程中遇到的问题总结在这里。

 

1.首先按照阿里云深度学习的介绍进行相关服务的开通和充值。这个文档中有用tensorflow做图像分类的案例,只是应用到具体模型中还存在着一些问题。

 

2.数据集最好先做成.tfrecords文件,这样可以快速地进行读写操作。然后上传到oss;多个代码文件可以用7zip打包成.tar.gz格式,再上传到oss;

 

3.代码文件中,将tensorflow所保存的checkpoint的路径设置为FALGS.checkpointDir,将读取tfrecords文件的路径设置为FLAGS.buckets;在主程序中使用:为什么这么做?因为查看PAI在运行时的日志,可以看出:PAI在执行的时候,会输入下面这些命令,所以通过解析这些命令,就可以获得对应的信息,从而使得PAI能够正确地去oss中读取文件,也能够正确地将文件写入到oss中。

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--buckets', type=str, default='', 
                        help='tfrecords data path.')
    parser.add_argument('--checkpointDir', type=str, default='',
                        help='checkpoint data path')
    parser.add_argument('--summaryDir', type=str, default='',
                        help='summary path')
    
    FLAGS = parser.parse_args()

    train(check_path=FLAGS.checkpointDir, data_path=FLAGS.buckets,
          log_path=FLAGS.summaryDir)

 

 

 

 

 

 

4.进入PAI,配置tensorflow的时候,

    i)python代码文件需要选择oss里刚才所下载的那个.tar.gz压缩包;

    ii)python主文件直接写上主文件名称即可,比如main.py

    iii)数据源目录选择oss里面的tfrecords文件所在的文件夹

 

5.右键查看日志的时候,可以点击蓝色链接,打开log_view,

然后,双击ODPS Tasks下的内容,

之后,双击左侧的Tensorflow Task,

之后,

stdout可以查看程序的输出,stdErr可以查看程序运行的一些信息,比如说哪里出错了,可以用于排查。

 

6.训练完成之后,从oss下载文件即可。

 

2017-11-23 19:49:09 Lo_Bamboo 阅读数 38394
  • 阿里云机器学习算法应用实践

    人工智能的商业化应用是下一个风口,阿里云在机器学习算法方面有许多沉淀。本次分享首先是介绍阿里云机器学习PAI,接着会在上面搭建真实的案例,包括心脏病预测、新闻分类等场景。

    13996 人正在学习 去看看 CSDN讲师

神经网络训练需要强大的GPU支持,自己搭建成本太高,并且有时候出差等原因,无法将庞大的机箱搬走。因此,就产生了将深度学习网络训练的任务搬到云端的想法。由于初次使用,遇到不少大坑,花了两天时间才完整的实现。
要实现的功能:
- 安装anaconda管理库
- 远程访问jupyter notebook
- 将本地文件和服务器端文件互传
- 安装tensorflow的GPU版本
- 服务器不用的时候释放,下次直接再用,节省费用

注意:本文主要解决常见的坑。
1、anaconda 安装慢,阿里云的GPU服务器很贵的,时间就是金钱在这里体现的淋漓尽致。
2、jupyter notebook无法远程访问,或者直接报错sock无法连接错误
3、从github上下载文件慢的要命,且有文件大小限制(100M)
4、服务器端查看一切正常,远程就是无法访问问题

针对以上种种问题,我综合了网上各位大神的文章,汇总到一起,实现从零开始的目标。减少环境搭建时间,把时间花在机器学习本身上。

本文服务器端采用的是阿里云ubantu 16.04版本,我的电脑也是。


创建帐号及设置

阿里云服务器的购买过程简化一点:选择地域》选择实例:异构计算,GPU计算》镜像:镜像市场,搜索深度学习ubantu版本(已经安装好了显卡驱动和cuda8.0)》其他的按需配置》设置密码

几点要注意的地方:
1、一般选择按量付费,包月包年太贵。土豪随意啊。我会在后面说怎么很便宜的把自己的数据和配置保存下来。用的时候再复制出来。
2、镜像的选择问题,一定在镜像市场里找到已经安装好驱动和cuda8.0的,不然我相信你会哭的。我觉得阿里云做技术很马虎啊,你不装驱动,让我自己装,有故意收黑钱的嫌疑。
3、安全组配置,我会后面着重说明,现在选择默认就可以了。

采用SSH方式访问远程服务器

在本地电脑打开终端,输入:

ssh root@47.93.*.*#输入自己的公网IP

然后会打印出:

The authenticity of host '47.93.*.* (47.93.*.*)' can't be established.
ECDSA key fingerprint is SHA256:r60avP7Lyz01MRTFN9mbekDAcwZWv8tFUmMlo6dr/m0.
Are you sure you want to continue connecting (yes/no)? 

yes
首次登录会提醒你,系统自动创建密匙

Warning: Permanently added '47.93.*.*' (ECDSA) to the list of known hosts.

输入你购买服务器时,输入的密码。如果购买时没有输入密码,此时会让你设置。PS:给没用过Linux系统的提醒一下,输入密码不会显示,完成后回车即可。

root@47.93.*.*'s password: 

这是你就可以看到成功登录的页面

Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-62-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Welcome to Alibaba Cloud Elastic Compute Service !

更改主机名称及host

刚登录进去,主机名是一串非常长的随机编码,很难记住,我建议更改掉。

我采用的vim编辑器,系统默认安装的。如果第一次用,肯定很难熟悉,建议先百度一下vim的基本用法。PS:有点罗嗦,但是第一次,肯定很茫然。习惯了之后效率确实很高。

删除,起个自己熟悉的名字。

vim /etc/hostname#ubantu的在此目录下,其他系统按需更改

更改完成后,重启才会起作用。暂时不要重启。继续

vim /etc/hosts

把刚才自己修改的名字加入

127.0.0.1       localhost
127.0.0.1       bamboo_aliyun #新增

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

如果不设置此项,每次用sudo会一直提醒。

sudo: unable to resolve host iZ2ze3v1xxtg5z3w2nb8oaZ

查看一下是否已经安装好了驱动和相关的包。

root@GPU_aliyun:~# ls
deep_learning  nvidia  NVIDIA_CUDA-8.0_Samples
exit#推出SSH登录

现在阿里云控制台重启一下服务器。

创建新用户

重新用root登录服务器,与上同,不再贴代码。进入后发现主机的名称已经变成你设置的了。

notes:此地方有大坑,要注意。创建新用户有两个命令。一个是useradd和adduser。我建议用adduser,按照提示一直操作,就会自动完成。如果采用useradd如果不加参数的话,会创建一个三无产品。
1、无Home Directory
2、无密码
3、无系统Shell

1、adduser用户创建过程(两者任选其一)

sudo adduser bamboo

自动创建过程:

root@GPU_aliyun:~# sudo adduser bamboo
Adding user `bamboo' ...
Adding new group `bamboo' (1000) ...
Adding new user `bamboo' (1000) with group `bamboo' ...
Creating home directory `/home/bamboo' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for bamboo
Enter the new value, or press ENTER for the default
    Full Name []: bamboo
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 
Is the information correct? [Y/n] y

使用新帐号登录系统:

bamboo@bamboo-WorkBook:~$ ssh bamboo@39.106.143.143

在root帐号下,设置sudo权限

sudo vim /etc/sudoers
# User privilege specification
root    ALL=(ALL:ALL) ALL
bamboo  ALL=(ALL:ALL) ALL

否则,会使用后面chmod命令会报以下错误:

bamboo is not in the sudoers file.  This incident will be reported.

设置文件夹权限(一定要设置,如果不设置后面安装程序会有问题)

bamboo@GPU_aliyun:~$ sudo chmod -R 777 /home/bamboo/

至此已经新帐号添加完成
2、useradd用户创建过程

创建用户,并把用加入root 和bamboo组

sudo useradd -g root bamboo

由于是三无产品,你需设置一下登录密码

sudo passwd bamboo

由于无shell,用新用户进入后,不显示路径,TAB键也不起作用,因此,我们需要添加shell

usermod -s /bin/bash bamboo

设置sudo权限

vim /etc/sudoers
# User privilege specification
root    ALL=(ALL:ALL) ALL
bamboo  ALL=(ALL:ALL) ALL

除了上述命令行的解决方式外,你也可以手动编辑passwd文件添加shell

vim /etc/passwd

重新用新用户登录系统

ssh bamboo@47.93.*.*#输入自己的公网IP

将用户目录的权限修改为,所有人可以读写执行。

sudo chmod -R 777 /home/bamboo/

如果不修改权限的话,在安装Anaconda时,会报出一下错误:
PermissionError(13, ‘Permission denied’)

PS:权限管理我还没完全搞清楚,我认为肯定有更加简洁的方法,但此方法确实能工作。如果对用户权限管理比较清楚的大神请留言更有效的方法。还有我之前在阿里云上配置其他服务器程序的时候发现root帐号内容,远程是无法访问的(估计是为了安全性考虑)。所以就直接新建帐号,大家可以试一下,给我留言,我更新一下博客


配置阿里云安全组

因为阿里云为了安全起见,默认只开放了22、80等少数端口。而jupyter notebook默认采用8888端口,因此在安全组配置中,需要将此端口开放。
如果一切都正常,就是无法远程访问,有90%的可能性就是安全组规则配置的问题。
设置过程:云服务器管理控制台》云服务器ECS》网络和安全》安全组》配置规则》添加安全组规则
添加安全组规则


Anaconda安装(清华源)

由于Anaconda默认的源在国外,下载速度极其缓慢。我采用清华的源。
直接用wget 下载

sudo wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.0.1-Linux-x86_64.sh

执行安装过程:

sudo bash Anaconda3-5.0.1-Linux-x86_64.sh

提示你,是否阅读协议,回车接受

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue

是否接受协议,yes

Do you accept the license terms? [yes|no]

安装位置确认,回车

Anaconda3 will now be installed into this location:
/home/bamboo/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

确定安装位置之后,需要等待安装一些默认的包,会让你选择一次bashrc.这时候一定要写yes

Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/bamboo/.bashrc ? [yes|no]
[no] >>> yes

提示你如果要让bashrc起作用,要打开一个新的终端。但测试不起作用。

For this change to become active, you have to open a new terminal.

于是,我就直接配置环境变量

sudo vim /etc/environment

把自己的安装目录添加到后面

:/home/bamboo/anaconda3/bin

立即激活环境变量

source /etc/environment

测试是否安装成功

conda --version

如果安装成功,会显示出当前conda的版本

conda 4.3.30

更新conda install的源

# 添加Anaconda的TUNA镜像
conda config --add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

更新一下conda

conda update conda

创建jupyter notebook运行环境,可以方便管理各类库

conda create -n jupyter_notebook python=3

激活环境

source activate jupyter_notebook

安装深度学习所需要的所有库

conda install numpy#测试是否能安装,后面也可按需安装

如果要退出环境的话,执行:

source deactivate#暂时不执行

安装jupyter notebook

在conda环境安装jupyter notebook,会自动安装相关依赖的包,并且独立。因此,我采用jupyter notebook 安装。每次在conda环境中使用,防止发生一些莫名奇妙的错误。

由于在本地使用和远程使用有着本质上的区别。因此,配置上也有很大的不同。由于之前我一直在本地使用,觉得应该不用配置什么东西,结果白白浪费了大量的时间和钱。本文会先主要说明远程访问的配置过程。

服务器端安装及测试jupyter notebook 是否正常

安装jupyter notebook

conda install jupyter notebook

测试

jupyter notebook --ip=127.0.0.1

终端输出正常即可
jupyter notebook

配置jupyter notebook远程访问

默认jupyter notebook 是不需要配置文件的。因此,需要用以下命令生成该文件。
主要配置一下内容:
- 设置远程访问密码
- 设置可访问ip,全局访问
- 禁用服务器端启动浏览器

jupyter notebook --generate-config

生成文件后,文件在该目录下

Writing default config to: /home/bamboo/.jupyter/jupyter_notebook_config.py

打开jupyter_notebook_config.py文件

vim /home/bamboo/.jupyter/jupyter_notebook_config.py

设置可以访问服务器的ip

c.NotebookApp.ip = '*'

notes:很多教程把该ip设置为127.0.0.1,这样你只能在本地访问,远程是无法访问的。这是大坑中很大的一个。

打开ipython

ipython

调用passwd()函数生成密匙,把密匙复制下来,后面会有用

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: 
Verify password: 
Out[2]: 'sha1:8361f5f08937:081cdf40730cb5548e2c213ddd36813a5313192f'

加入上面生成的密匙

c.NotebookApp.ip = '*'
c.NotebookApp.password = 'sha1:8361f5f08937:081cdf40730cb5548e2c213ddd36813a5313192f'

设置不在服务器端自动打开浏览器

c.NotebookApp.ip = '*'
c.NotebookApp.password = 'sha1:8361f5f08937:081cdf40730cb5548e2c213ddd36813a5313192f'
c.NotebookApp.open_browser = False

到目前位置所有远程的配置的所有工作已经全部完成。赶快启动一下jupyter notebook是不是可以访问。

jupyter notebook

终端开始输出:
这里写图片描述
远程访问测试

47.93.*.*:8888

登录界面
这里写图片描述
进入后,跟本地操作一样的
这里写图片描述
测试正常后,将CTRL+C停止


文件互传

很多时候,我们是在本地先写好jupyter notebook文件,只需要在云服务器上训练一下。因此,文件的传递是非常重要的功能。scp是采用ssh传递文件的一种方式,比较简单易行。
上传过程:

scp -r /home/bamboo/文件路径/文件名/ bamboo@47.93.*.*:/home/bamboo/
#scp -r表示传递文件内所有文件
#scp 直接传递单个文件

我提前把下载过程贴出来,正常是训练完成后,下载文件。
下载过程:

scp -r bamboo@47.93.*.*:/home/bamboo/文件路径/ /home/bamboo/文件路径/文件名/

非常好理解,都是从前向后传


训练神经网络

安装自己需要的tensorflow-gpu版本

conda install tensorflow-gpu=1.1

重新启动jupyter notebook

jupyter notebook

可以正常打开,并且找到自己的文件了。
这里写图片描述
查看一下gpu是否正常
这里写图片描述
运行程序,速度确实快了很多啊,大概算了一下,是我的笔记本cpu版的48倍,确实挺靠谱。
这里写图片描述
在后台,看了一下GPU版本
这里写图片描述

训练已经完成,tensorflow保存的参数复制下来:

scp -r bamboo@47.93.*.*:/home/bamboo/文件路径/ /home/bamboo/文件路径/文件名/

制作自定义镜像

自定义镜像费用比较低,大概是0.2元/G/月。相对于租赁服务器的费用很低了。

制作过程:选择实例》管理》实例详情》更多》创建自定义镜像
这里写图片描述

最重要的说明:自定义镜像创建完成后,一定要将实例释放掉。否则,阿里云会一直计费的。会一直计费的。会一直计费的。重要的事说三遍


利用自定义镜像创建实例

有了自定义镜像,你再次使用阿里云的服务器就变得简单了很多。不需要之前冗长的配置过程了。在购买的时候,选择同之前相同的配置。镜像选择自定义镜像。

这里写图片描述

这里写图片描述

登录进入了,发现之前的配置依然存在。

root@iZ2ze1289s0kuqzkxpxpazZ:/home/bamboo# ls
anaconda3  Anaconda3-5.0.1-Linux-x86_64.sh  tv-script-generation

用之前设置的普通用户登录:

bamboo@iZ2ze1289s0kuqzkxpxpazZ:~$ ls
anaconda3  Anaconda3-5.0.1-Linux-x86_64.sh  tv-script-generation
bamboo@iZ2ze1289s0kuqzkxpxpazZ:~$ conda --version#测试conda

输出正常:

conda 4.3.30

用scp上传下载文件,开始你的新的任务就可以了。

jupyter notebook#启动正常,按上述方式继续访问。

本文采用阿里云GPU计算服务器 + conda +tensorflow-gpu+ jupyter notebook 架构,实现远程训练神经网络的功能。很多研究深度学习和机器学习的博友,并不是很专业的运维人员,因此,在环境配置上花费大量时间是无意义的。因此,就诞生这篇博文,我也是个运维小白,也很多不完善的地方。大家多留言,我尽量完善该博文,作为一个参考资料。

bamboo书于西安

更新记录:
2017年11月23日 完成初稿,自定义镜像创建实例未完成
2017年11月26日 自定义镜像创建实例完成
git是个很有用的工具,计划把git在服务器端的配置也加上

参考:
conda官网教程

没有更多推荐了,返回首页