基于Docker的Tensorflow实验环境

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 利用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服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1天前
|
并行计算 Ubuntu Docker
Docker环境Ubuntu20.04安装Python3.10版本
Docker环境Ubuntu20.04安装Python3.10版本
14 0
|
1天前
|
JavaScript 前端开发 测试技术
Docker环境下部署Ghost开源内容管理系统
【5月更文挑战第9天】Docker环境下部署Ghost开源内容管理系统
10 0
|
1天前
|
网络安全 Docker 容器
测试开发环境下centos7.9下安装docker的minio
测试开发环境下centos7.9下安装docker的minio
14 1
|
1天前
|
Shell 数据安全/隐私保护 Docker
docker安装anaconda3 python环境
docker安装anaconda3 python环境
11 0
|
1天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
1天前
|
算法 计算机视觉 Docker
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
|
1天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用合集之关于在Docker环境中部署和维护PolarDB-X,有相关文章可以参考吗
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
1天前
|
数据可视化 Linux Docker
Linux系统使用Docker部署Dashy导航页服务并实现公网环境访问
Linux系统使用Docker部署Dashy导航页服务并实现公网环境访问
|
1天前
|
Web App开发 Linux 数据安全/隐私保护
如何在Docker环境下安装火狐浏览器并结合内网穿透工具实现公网访问
如何在Docker环境下安装火狐浏览器并结合内网穿透工具实现公网访问
|
1天前
|
存储 运维 Kubernetes
构建高效稳定的容器化运维环境:Docker与Kubernetes的协同
【4月更文挑战第14天】 在当今快速发展的云计算时代,容器技术以其轻量级、快速部署和易于管理的优势,成为现代应用交付的标准。本文将深入探讨如何通过Docker和Kubernetes的整合使用来构建一个高效且稳定的容器化运维环境。我们将分析Docker容器的基本概念,探索Kubernetes在容器编排方面的强大能力,以及两者结合所带来的益处。文章还将讨论在实际部署中可能遇到的挑战,并提出相应的解决方案。