基于Docker的Tensorflow实验环境

简介: 利用Docker和阿里云容器服务轻松在本地和云端搭建Tensorflow的学习环境
+关注继续查看

tensorflow_jpeg

本系列将利用Docker和阿里云容器服务,帮助您上手TensorFlow的机器学习方案

机器学习作为人工智能重要的技术,已经在计算机视觉、自然语言处理、医学诊断等等领域得到了广泛的应用。TensorFlow 是谷歌推出的开源的分布式机器学习框架,它也是Github社区上最受关注的机器学习项目,目前点赞已经超过3万个星。

TensorFlow提供了多种安装方式,配置也相对简单,但是对于初学者而言,从零开始搭建一个TensorFlow学习环境依然具有一些挑战。幸运的是TensorFlow提供了基于Docker的部署方式,开发者可以快速上手。

本文是系列中的第一篇文章,会基于Docker快速创建一个Tensorflow学习环境。

准备Docker环境

为了利用Docker和Docker Compose编排搭建实验环境,我们需要

安装Docker for Mac/Windows 或在Linux上安装Docker和Docker Compose。可以使用阿里云提供Docker EngineDocker Toolbox的镜像网站

本地环境搭建

在GitHub上有很多Tensorflow的学习资料, 其中 https://github.com/aymericdamien/TensorFlow-Examples 是一个很好的教程。在文中提供了由浅入深的示例来介绍Tensorflow的功能。

首先执行如下命令获得教程代码 (包含对Tensorflow 1.0 的支持)

git clone https://github.com/denverdino/TensorFlow-Examples
cd TensorFlow-Examples

为了运行这个教程你需要安装Tensorflow的执行环境,并配置"jupyter", "tensorboard"来进行交互操作。

一个最简单的方法是在当前目录,创建如下的docker-compose.yml模板

version: '2'
services:
  jupyter:
    image: registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:1.0.0
    container_name: jupyter
    ports:
      - "8888:8888"
    environment:
      - PASSWORD=tensorflow
    volumes:
      - "/tmp/tensorflow_logs"
      - "./notebooks:/root/notebooks"
    command:
      - "/run_jupyter.sh"
      - "/root/notebooks"
  tensorboard:
    image: registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:1.0.0
    container_name: tensorboard
    ports:
      - "6006:6006"
    volumes_from:
      - jupyter
    command:
      - "tensorboard"
      - "--logdir"
      - "/tmp/tensorflow_logs"
      - "--host"
      - "0.0.0.0"

执行如下命令一键创建Tensorflow的学习环境

docker-compose up -d 

我们可以检查启动的Docker容器

yili@yili-mbp:~/work/TensorFlow-Examples$ docker-compose ps

              Name                            Command               State                Ports               
------------------------------------------------------------------------------------------------------------
tensorflowexamples_jupyter_1       /run_jupyter.sh /root/note ...   Up      6006/tcp, 0.0.0.0:8888->8888/tcp 
tensorflowexamples_tensorboard_1   tensorboard --logdir /tmp/ ...   Up      0.0.0.0:6006->6006/tcp, 8888/tcp 

可以直接通过 http://127.0.0.1:8888/ 从浏览器中访问Tensorflow的Jupyter交互实验环境

登录密码为: tensorflow

14738178907665

通过 http://127.0.0.1:6006 从浏览器中访问模型可视化工具TensorBoard
注:可以运行 http://127.0.0.1:8888/notebooks/4_Utils/tensorboard_basic.ipynb 来实验Tensorboard的功能,示例中Tensorboard容器配置的log目录是 “/tmp/tensorflow_logs”。对于用户自己的notebook,可以参照tensorboard_basic在代码中设置log的输出路径。

14738194651219

注:

  • 其中registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:1.0.0是基于tensorflow/tensorflow:1.0.0镜像构建的,只添加了apt源和pipy源的阿里云镜像。 大家也可以参照https://github.com/denverdino/tensorflow-docker中的Dockerfile自己构建,预先添加自己所需的python库、算法库等资源。
  • 利用volumes机制,jupyter可以直接从当前notebooks目录获取示例。jupyter和tensorboard两个容器也通过可以文件卷来共享事件日志。

阿里云容器服务上体验

阿里云容器服务支持Docker Compose模板部署,通过下面模板我们可以轻松把Tensorflow的学习环境部署到云端

version: '2'
services:
  jupyter:
    image: registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow-examples:1.0.0
    volumes:
      - "/tmp/tensorflow_logs"
    environment:
      - PASSWORD=tensorflow
    labels: 
      aliyun.routing.port_8888: jupyter
    command:
      - "/run_jupyter.sh"
      - "/root/notebooks"
  tensorboard:
    image: registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:1.0.0
    labels: 
      aliyun.routing.port_6006: tensorboard
    volumes_from:
      - jupyter
    command:
      - "tensorboard"
      - "--logdir"
      - "/tmp/tensorflow_logs"
      - "--host"
      - "0.0.0.0"

注:

  • 利用aliyun.routing标签,我们可以轻松定义Jupyter和TensorBoard的访问访问端点
  • 如果是老集群,需要点击容器服务agent升级来提供所需特性和稳定性增强。

几分钟之后,我们就可以在云端有一个学习环境来体验Tensorflow。

14738212612862

14738177187646

14738178032537

14738178506257

总结

我们可以利用Docker和阿里云容器服务轻松在本地和云端搭建Tensorflow的学习环境。Docker作为一个标准化的软件交付手段,可以大大简化应用软件的部署和运维复杂度。阿里云容器服务支持以Docker Compose的方式进行容器编排,并提供了众多扩展,可以方便地支持基于容器的微服务应用的云端部署和管理。

阿里云容器服务还会和高性能计算(HPC)团队一起配合,之后在阿里云上提供结合GPU加速和Docker集群管理的机器学习解决方案,在云端提升机器学习的效能。

想了解更多容器服务内容,请访问 https://www.aliyun.com/product/containerservice

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
18天前
|
弹性计算 应用服务中间件 nginx
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
33 0
|
2月前
|
Kubernetes Java Maven
无需依赖Docker环境制作镜像
随着高版本的Kubernetes弃用Docker,企业也可以不依赖Docker环境了,但是DevOps通过Kubernetes部署的话,仍然需要制作镜像,那么在没有Docker环境的情况下如何制作呢?推荐一款谷歌的开源工具Jib,[github地址](https://github.com/GoogleContainerTools/jib),它是一个无需Docker守护进程——也无需深入掌握Docker最佳实践的情况下,为Java应用程序构建Docker和OCI镜像, 它可以作为Maven和Gradle的插件,也可以作为Java库。
|
2月前
|
开发框架 .NET Linux
基于 Alpine 环境构建 aspnetcore6-runtime 的 Docker 镜像
apline linux 环境,构建 asp.net core 应用程序的基础镜像。--- The glow of a firefly may be faint, but when it shines, it challenges the darkness.
179 1
|
2月前
|
tengine Linux 应用服务中间件
基于 Alpine 环境源码构建 alibaba-tengine(阿里巴巴)的 Docker 镜像
当前 alibaba-tengine 发布版本为 v3.0.0,github 源码地址:https://github.com/alibaba/tengine/releases/tag/3.0.0
377 1
|
3月前
|
关系型数据库 MySQL Linux
使用Linux环境下的Docker搭建MySQL主从集群
本文记录了一次在Linux环境下的Docker搭建MySQL主从集群的过程。主从集群读写分离,从节点只负责读取数据。
94 0
|
3月前
|
Linux 虚拟化 Docker
Linux环境下修改Docker版本
本文介绍了一种修改Docker版本的方法,此方法不会删除原本的配置文件、镜像等。
104 0
|
3月前
|
存储 Docker 容器
Linux环境下修改Docker的工作目录
本文介绍了Linux环境下如何更改Docker的工作目录,从而避免docker占用过多的系统盘空间。
229 0
|
3月前
|
Linux 测试技术 虚拟化
Linux环境下Docker的安装
本文介绍了Linux环境下Docker的安装。记录了基于CentOS7的Docker-ce:v20.10.11的安装。
57 0
|
3月前
|
Linux Docker 容器
Linux环境下Docker的卸载
本文可以满足完整卸载Docker的需求。文章记录了在Linux环境下Docker的卸载过程,包括Docker软件包、镜像、容器、数据卷等文件的删除。
335 1
|
3月前
|
弹性计算 Go 开发者
如何使用 Docker 来将 Go Web 项目容器化,并实现在不同环境中快速部署和运行?
如何使用 Docker 来将 Go Web 项目容器化,并实现在不同环境中快速部署和运行?
50 0
相关产品
容器镜像服务
容器服务Kubernetes版
推荐文章
更多