随着全球科技变革的推进,人工智能成为各大公司的研究热点和战略重心。TensorFlow是谷歌推出的开源机器学习框架,自开源以来便受到极大关注,是GitHub社区上***的机器学习、深度学习项目之一。目前,TensorFlow可以在多个云平台上部署运行,但仍存在软件的依赖与管理问题,而利用Docker技术具有的快速部署与可移植等优势,可以实现TensorFlow的虚拟化异构,解决TensorFlow环境依赖的问题,并为科研人员及工程师提供便捷的开发环境,具有现实的应用意义。
本文将介绍一种快速搭建TensorFlow开发环境的方法,通过华为云上的容器服务一键式部署,5分钟完成免费的云上TensorFlow环境的搭建。
传统搭建方式
传统深度学习开发环境搭建在虚机或物理机上,需要事先准备好一台可访问外网的虚拟机或物理机,然后配置yum源,下载安装一系列的系统库,然后通过pip安装常用的机器学习、深度学习相关python库。如果你使用的GPU模式的TensorFlow,还需要手动安装指定版本英伟达显卡驱动,CUDA计算库。整个安装过程非常繁琐,你会碰到各种奇怪的问题,很多基本用法在不同版本之间都是不同的,而且有时并不是安装一个库的问题,同时涉及与系统库的交互,对于没有具备linux相关知识的人将是个极大挑战性的任务。
华为云容器部署
容器化部署就非常简单,不仅功能和传统方式的一样,同时由于镜像使用的是官网镜像,只需要关注TensorFlow的版本即可,无需担心依赖库版本匹配问题。
方法如下:
***步:注册华为云账号并实名认证(如已有华为云实名认证账号可直接进行下一步)
账号注册
进入华为云官网首页https://www.huaweicloud.com,点击右上角的【注册】按钮:
设置账号名、密码、手机号、短信验证码并勾选“我已阅读并同意《华为云用户协议》和《隐私政策声明》”,单击【同意协议并注册】即可完成注册。
实名认证
用户注册完华为云账号后需要进行实名认证才能使用相关服务,实名认证流程也非常简单,在用户中心可以看到实名认证的提示信息,根据页面引导选择用户类型和认证类型进行认证即可。
第二步:开通3天免费容器集群
在【云容器引擎】-【体验中心】-【初级案例】模块找到购买集群,单击【体验】按钮根据界面引导进行免费集群和节点的创建。页面链接:https://console.huaweicloud.com/cce2.0/?region=cn-north-1&locale=zh-cn#/app/guidance/list
资源创建完后,到【云容器引擎】-【资源管理】-【节点管理】找到容器节点弹性ip后记录下来,在第三步部署Tensorflow应用时会用到。页面链接:https://console.huaweicloud.com/cce2.0/?locale=zh-cn®ion=cn-north-1#/app/resource/node/list
第三步:Tensorflow环境一键式部署
在【应用编排服务】-【模板市场】-【公共模板】找到Tensorflow示例模板,单击【创建堆栈】按钮开始部署。(页面链接:https://console.huaweicloud.com/aos/?region=cn-north-1&locale=zh-cn#/app/demoTemplate/demoDetail?id=62e89c6c-7910-8e1a-626d-50b35faccc6b
通过这个模板,就可以一键式的完成一个TensorFlow开发环境的部署,并可以通过Jupyter Notebook的界面进行深度学习程序的开发和验证。)
填写部署参数,堆栈名称、弹性IP(第二步中记录的弹性IP) 、填写Jupyter notebook的登陆密码
一键式部署示例模板,5分钟内创建成功。
● 进入堆栈详情,在输出参数中有开发环境的访问地址,点击链接即可:
输入创建堆栈时填写的登陆密码即可访问Jupyter notebook进行开发:
小狗检测示例
我们可以在刚创建好的开发环境跑个简单的人工智能小程序:检测上传的小狗图片,识别小狗种类。
先在Jupyter notebook上传一张小狗图片“dog.jpg”。
新建python的开发页面
将下面这段小程序的代码粘贴到python页面,按住shift+回车键执行。
from keras.applications import ResNet50 from keras.preprocessing.image import img_to_array, load_img from keras.applications import imagenet_utils from keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as np import io import tensorflow as tf def prepare_image(img_path, target): img = load_img(img_path, target_size=(224, 224)) if img.mode != "RGB": img = img.convert("RGB") x = img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) return x model = ResNet50(weights="imagenet") graph = tf.get_default_graph() image = prepare_image("dog.jpg", target=(224, 224)) with graph.as_default(): preds = model.predict(image) results = imagenet_utils.decode_predictions(preds) data = [] for (imagenetID, label, prob) in results[0]: print("Category: ", label, "Probability: ", float(prob)) |
查看执行结果。执行过程耗时大概20秒左右。识别结果置信度***为玩具贵宾犬66.78%,第二名是迷你贵宾犬29.71%,检测结果正确。
这就是一个基于华为云容器部署的Tensorflow开发环境,以及一个简单的开发示例,如果开发的程序需要进行大规模的训练,建议使用GPU集群资源,它能够更高效地执行图像的计算。另外,若开发过程发现我们的镜像提供的计算库不够丰富,可以在Jupyter Notebook页面执行shell命令,安装python库。如果还想订制个人化的开发环境,可以手动构建镜像上传至华为镜像仓库,然后修改模板元素及参数,生成适合个人场景的模板。