在阿里云HPC和容器服务上,像梵高一样作画-阿里云开发者社区

开发者社区> 必嘫> 正文

在阿里云HPC和容器服务上,像梵高一样作画

简介: 利用阿里云HPC和容器服务,轻松创造梵高风格的图片
+关注继续查看

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

本文是该系列中的第四篇文章, 将为您介绍如何利用阿里云的服务瞬间变身梵高,给自己生活中的图片带来不一样的艺术气息。

1890年7月29日,梵高在一片麦田里结束了自己的年仅37岁的生命,他给全世界留下《星夜》、《向日葵》与《有乌鸦的麦田》这些伟大的作品。特别当看到《星夜》中像焰火一样闪亮的星星时,你是否感受到了他对绘画火焰般的热情。

梵高曾写道:“我常想,要是我能够多花些时间来画真正的风景画,那该多好!我经常看到各种奇景,使我不由自主地说:我在画上从来没有见过这么好的风景。” 这是大师和后世共同的遗憾。

而随着科技的发展,到了今天,我们也能够创造出和梵高风格近似的艺术作品。具体来说,就是利用深度学习,将梵高的风格从他的作品中提取出来,并赋予到我们现有的图片,就可以得到用梵高风格画出来的新的图片。这里会使用一个叫做neural-style的TensorFlow实现来完成这个任务,它基于强大的深度神经网络(VGG19)来对图片进行处理。以下就是输入图片, 我们要将其转化为有星夜风格的图片:

input.jpg

然而,部署和运行这个算法可不简单,它至少需要:

  • 深度学习本身需要大规模的矩阵计算,但我们不想要花费几天、几个星期,甚至几个月来等待结果;因此利用GPU加速计算过程是必须的选择
  • 安装CUDA,Cudnn,Bazel,TensorFlow及其依赖,neural-stlye这些工具和库的复杂度,装过的宝宝心里都苦;因此GPU应用的简化部署也是必须的
  • 作为深度学习实验环境相对于其它系统,更为脆弱,而参数、配置和依赖库的变化,都会导致系统停止工作,重复的环境搭建不可避免;因此不断的重复部署和配置也是必须的

而HPC容器服务很好的利用Docker技术简化了GPU上应用部署和配置,同时又增加了以Nvidia GPU卡为粒度的调度和隔离,很好的满足了以上的3个需求。我们用一个简单的例子向您展示使用HPC上容器服务,可以一键式画出星空风格的街景。

利用HPC容器服务一键式运行neural-style模仿梵高作画

1. 购买北京HPC后,按照北京HPC使用容器服务的文档在HPC机器上部署容器服务。

2. 当安装完成后,确认容器服务上支持了GPU,可以看到每台阿里云HPC上有两个GPU,其中还有每个GPU的配置

HPC-Cluster.png

3. 为了简化部署,我们提供了一个预先构建的neural style的镜像

  • registry-internal.cn-beijing.aliyuncs.com/cheyang/neural-style

以下创建是该镜像的Dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:0.10.0-devel-gpu

RUN cd / \
    && git clone https://github.com/anishathalye/neural-style.git \
    && cd neural-style \
    && wget http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat

RUN pip install SciPy Pillow NumPy

WORKDIR /neural-style

CMD ["python","neural_style.py","--content", "/neural/input.jpg","--styles", "/neural-style/examples/1-style.jpg", "--output", "/neural/output.jpg"]

4. 按照在HPC容器服务上创建OSS数据卷创建一个OSS数据卷,并且用OSS客户端的图片上传上去

oss-client.png

5. 用如下的docker-compose模板部署到阿里云HPC容器服务上,就可以按照《星夜》的风格(1-stlye.jpg)生成我们期望看到的图片。

version: '2'
labels:
  aliyun.project_type: "batch"
services:
  neural:
    image: registry-internal.cn-beijing.aliyuncs.com/cheyang/neural-style:latest
    command:
       - "python" 
       - "neural_style.py" 
       - "--content" 
       - "/neural/input.jpg" 
       - "--styles" 
       - "/neural-style/examples/1-style.jpg" 
       - "--output" 
       - "/neural/output.jpg"
    labels:
      - aliyun.gpu=1
    volumes:
       - neural:/neural

注:

  • aliyun.project_type: "batch"指定该应用使用的是离线应用,如果希望了解离线计算的元语,可以参考在阿里云容器服务中运行离线任务文档
  • aliyun.gpu指定申请的GPU个数。阿里云容器服务负责分配GPU给容器,并且将主机上的GPU卡映射到容器内,这里同时会做到对用户透明。举例来说,如果用户申请一个GPU,而主机上只有/dev/nvidia1可用,将主机上的/dev/nvidia1映射为容器里的/dev/nvidia0,这样就会让用户程序与具体设备号解耦。
  • volumes使用了OSS来存储输入的图片和输出的图片,如果感兴趣可以参考文档容器服务和OSS数据卷

6. 可以到容器服务的应用状态页面查看进度,当发现应用完成后,就可以下载星夜风格的图片了

service-status.png

这样就可以看到星夜版的街景了

output.jpg

7. 如果你部署了监控服务,就可以一站式的在计算过程中监控GPU的使用率,内存使用率和温度。这是实际的应用中非常有价值的数据,比如Nvidia GPU在温度高到一定程度的时候,是会导致计算停滞等问题。通过基础架构监控,帮您对基础架构的使用一目了然。

hpc-monitoring.png

总结

可以看到,在利用容器服务可以使HPC上运行模仿梵高的Neural Style是如此的轻松写意,只需要一个镜像和一个Docker Compose文件,容器服务帮您搞定其它。您还可以在此之上尝试其他的机器学习应用,体验加快创新速度的愉悦。

利用阿里云HPC和容器服务,您除了可以获得高性能计算的洪荒之力,还可以简单的掌控这种能力,实现快速测试、部署机器学习应用,进而加速机器学习产品化的速度。容器服务了提供GPU资源的调度和管理,再加上对象存储,日志、监控等基础设施能力,帮助用户专注于利用机器学习创造商业价值。

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

想了解如何在HPC上使用容器服务,请访问[https://help.aliyun.com/document_detail/48631.html]
(https://help.aliyun.com/document_detail/48631.html)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10086 0
阿里云开源容器技术Cabernets在阿里云上的最佳实践
本文的整理自2017云栖大会-成都峰会上阿里云资深研发工程师谢瑶瑶(初扬)的分享讲义,讲义主要介绍了阿里云上一键部署Kubernetes的相关内容。阿里云上一键部署高可用Kubernetes集群,支持集群弹性伸缩,高度隔离的资源,丰富的安全组策略让您构建高度安全可靠的应用。
1742 0
在阿里云Kubernetes容器服务上打造TensorFlow实验室
利用Jupyter开发TensorFLow也是许多数据科学家的首选,但是如何能够快速从零搭建一套这样的环境,并且配置GPU的使用,同时支持最新的TensorFLow版本, 对于数据科学家来说既是复杂的,同时也是浪费精力的。
4702 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13891 0
湖北阿里云授权服务中心分析云服务器CPU跑满或跑高排查问题
相信很多客户在使用云服务器ECS时,若出现服务的速度变慢,或ECS实例突然断开。这种情况我们一般考虑服务器带宽和CPU是否有跑满或跑高的问题。若您预先创建报警任务,当带宽和CPU跑满或跑高时,系统将自动进行报警提醒。
1839 0
云计算、容器和云原生基础课程 | 图谱精选课程
带你了解云原生技术的演进和趋势方向
150 0
借助阿里云ECS实现传统.NET应用容器化(上)
我们都知道.NET Core应用可以跑在Docker上,那.NET Framework 4.x应用呢?借助阿里云ECS主机(Windows Server 2019 with Container版本),一切变得So Easy!
308 0
《容器上云的攻与守》-云栖演讲实录
今天上午王坚博士讲了一句话我比较有感触,大家做系统的时候,一定要想下你的系统的数据是怎么流转,这些系统的数据是怎么形成闭环。我们在设计阿里云的K8S容器服务ACK的时候也是融入了这些思考。 首先是跟大家先看一下整个容器上云的解决方案。首先因为你已经做过容器,所以当你容器上云的时候,实际上这个事情是非常简单的,我们只需要提供的相应的工具,帮助大家把容器镜像迁入阿里云同时通过工具把K8S的配置迁到阿
877 0
Docker的镜像和容器的区别
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/48252799 Docker的镜像和容器的区别 作者:chszs,版权所有,未经同意,不得转载。
632 0
+关注
必嘫
阿里云技术专家,在应用性能监控和软件交付方面有丰富的实践经验,目前专注于容器服务,微服务以及机器学习等领域。
43
文章
0
问答
来源圈子
更多
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载