本系列将利用 Docker 技术在阿里云 HPC 和容器服务上,帮助您上手 TensorFlow 的机器学习方案
本文是该系列中的第四篇文章, 将为您介绍如何利用阿里云的服务瞬间变身梵高,给自己生活中的图片带来不一样的艺术气息。
1890 年 7 月 29 日,梵高在一片麦田里结束了自己的年仅 37 岁的生命,他给全世界留下《星夜》、《向日葵》与《有乌鸦的麦田》这些伟大的作品。特别当看到《星夜》中像焰火一样闪亮的星星时,你是否感受到了他对绘画火焰般的热情。
梵高曾写道:"我常想,要是我能够多花些时间来画真正的风景画,那该多好!我经常看到各种奇景,使我不由自主地说:我在画上从来没有见过这么好的风景。" 这是大师和后世共同的遗憾。
而随着科技的发展,到了今天,我们也能够创造出和梵高风格近似的艺术作品。具体来说,就是利用深度学习,将梵高的风格从他的作品中提取出来,并赋予到我们现有的图片,就可以得到用梵高风格画出来的新的图片。这里会使用一个叫做实现来完成这个任务,它基于强大的深度神经网络(VGG19)来对图片进行处理。以下就是输入图片, 我们要将其转化为有星夜风格的图片:
然而,部署和运行这个算法可不简单,它至少需要:
而 HPC 容器服务很好的利用 Docker 技术简化了 GPU 上应用部署和配置,同时又增加了以 Nvidia GPU 卡为粒度的调度和隔离,很好的满足了以上的 3 个需求。我们用一个简单的例子向您展示使用 HPC 上容器服务,可以一键式画出星空风格的街景。
1. 购买北京 HPC 后,按照的文档在 HPC 机器上部署容器服务。
2. 当安装完成后,确认容器服务上支持了 GPU,可以看到每台阿里云 HPC 上有两个 GPU, 其中还有每个 GPU 的配置
3. 为了简化部署,我们提供了一个预先构建的 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. 按照创建一个 OSS 数据卷,并且用 OSS 客户端的图片上传上去
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
注:
6. 可以到容器服务的应用状态页面查看进度,当发现应用完成后,就可以下载星夜风格的图片了
这样就可以看到星夜版的街景了
7. 如果你部署了,就可以一站式的在计算过程中监控 GPU 的使用率,内存使用率和温度。这是实际的应用中非常有价值的数据,比如 Nvidia GPU 在温度高到一定程度的时候,是会导致计算停滞等问题。通过基础架构监控,帮您对基础架构的使用一目了然。
可以看到,在利用容器服务可以使 HPC 上运行模仿梵高的 Neural Style 是如此的轻松写意,只需要一个镜像和一个 Docker Compose 文件,容器服务帮您搞定其它。您还可以在此之上尝试其他的机器学习应用,体验加快创新速度的愉悦。
利用阿里云 HPC 和容器服务,您除了可以获得高性能计算的洪荒之力,还可以简单的掌控这种能力,实现快速测试、部署机器学习应用,进而加速机器学习产品化的速度。容器服务了提供 GPU 资源的调度和管理,再加上对象存储,日志、监控等基础设施能力,帮助用户专注于利用机器学习创造商业价值。
想了解更多容器服务内容,请访问
想了解如何在 HPC 上使用容器服务,请访问
来源: