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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 利用阿里云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)

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
22天前
|
Kubernetes 容器
阿里云容器服务 ACK 产品技术动态(202310)
阿里云容器服务 ACK 产品技术动态(202310)
|
29天前
|
JSON Kubernetes 监控
阿里云容器服务 ACK 产品技术动态(202310)
容器服务 Kubernetes 版 ACK Feature:ACK 支持服务网格场景 Sidecar 加速 ACK 支持服务网格场景 Sidecar 加速,即服务网格 Sidecar 模式下,业务注入 Sidecar 之后,可通过开启 Sidecar Acceleration using eBPF 组件来实现同节点下 Sidecar 和 Sidecar 之间、同 Pod 下业务容器和 Sidecar之间的 TCP 网络通信加速。
205 1
|
2月前
|
容器
阿里云容器服务 ACK 产品技术动态(202309)
阿里云容器服务 ACK 产品技术动态(202309)
|
2月前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务 ACK 产品技术动态(202309)
简介: 容器服务 Kubernetes 版 ACK Feature:备份中心备份计划功能优化:控制台支持备份任务模糊搜索、根据创建时间排序及通过克隆快速生成立即备份和备份计划。
419 1
|
3月前
|
Kubernetes 网络协议 应用服务中间件
阿里云容器服务K8s基础入门(四)
阿里云容器服务K8s基础入门
256 0
|
3月前
|
弹性计算 Kubernetes Serverless
阿里云容器服务K8s基础入门(三)
阿里云容器服务K8s基础入门
227 0
|
3月前
|
弹性计算 Kubernetes 调度
阿里云容器服务K8s基础入门(二)
阿里云容器服务K8s基础入门
279 0
|
3月前
|
存储 Kubernetes 负载均衡
阿里云容器服务K8s基础入门(一)
阿里云容器服务K8s基础入门
294 0
|
3月前
|
存储 Kubernetes 文件存储
使用阿里云容器服务和容器网络文件系统搭建WordPress网站
本教程介绍如何通过阿里云容器服务ACK和容器网络文件系统CNFS搭建一个简单的弹性、高可用WordPress网站,使用CNFS回收站进行数据恢复,验证quota和CNFS在线扩容。
104 0
|
3月前
|
人工智能 Kubernetes Cloud Native
26场技术分享,阿里云容器服务负责人易立领衔带来容器、AI、Serverless、中间件最佳实践
26场技术分享,阿里云容器服务负责人易立领衔带来容器、AI、Serverless、中间件最佳实践
相关产品
容器镜像服务
容器服务Kubernetes版
推荐文章
更多