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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 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)

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,全面助力云上体育盛会
本文讲述了阿里云容器服务,通过安全稳定的产品能力和成熟的稳定性保障体系,全面助力云上体育赛场,促进科技之光与五环之光交相辉映。
阿里云容器服务,全面助力云上体育盛会
|
5天前
|
人工智能 Prometheus 监控
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
本文介绍了在阿里云容器服务 ACK 上部署 NVIDIA NIM,结合云原生 AI 套件和 KServe 快速构建高性能模型推理服务的方法。通过阿里云 Prometheus 和 Grafana 实现实时监控,并基于排队请求数配置弹性扩缩容策略,提升服务稳定性和效率。文章提供了详细的部署步骤和示例,帮助读者快速搭建和优化模型推理服务。
45 7
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
|
26天前
|
Kubernetes 负载均衡 安全
【技术揭秘】阿里云容器服务Ingress高级玩法:如何轻松实现客户端原始IP透传,提升应用安全性与用户体验!
【8月更文挑战第17天】本文介绍如何在阿里云容器服务中配置Ingress以透传客户端原始IP地址。通过Ingress可实现HTTP负载均衡等功能。需在Ingress定义文件中添加特定注解,如`nginx.ingress.kubernetes.io/real-ip-header: X-Real-IP`。创建并应用Ingress配置后,后端服务可通过读取`X-Real-IP`头获取真实IP。此举有助于安全审计及流量分析。
36 2
|
1月前
|
弹性计算 运维 Kubernetes
阿里云容器化管理云上应用一键部署评测报告
阿里云容器服务Kubernetes版(ACK)作为阿里云在容器化领域的旗舰产品,以其卓越的性能、便捷的操作体验和高度的可扩展性,赢得了众多企业的青睐。
|
17天前
|
存储 运维 数据安全/隐私保护
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
|
1月前
|
弹性计算 运维 负载均衡
基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
【8月更文挑战第3天】基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
|
2月前
|
弹性计算 Kubernetes 监控
阿里云 ACK 容器服务评测
在现代企业的数字化转型过程中,容器化技术逐渐成为提高应用部署效率、增强系统弹性和灵活性的关键手段。阿里云的容器服务 Kubernetes 版(ACK)是一个完全托管的 Kubernetes 容器管理服务,旨在帮助企业轻松实现应用的容器化管理和部署。本文将对阿里云 ACK 容器服务的核心功能、性能表现及实际使用体验进行评测,帮助读者更好地理解这一产品。
131 0
|
2月前
|
人工智能 运维 安全
阿里云容器服务ACK:高效管理云上应用的容器化解决方案
阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)为开发者提供了一套全面的容器化管理解决方案,旨在简化云上应用的部署、运维和管理。本文将深入探讨ACK的功能、优势及应用场景,为开发者展现容器化技术在云环境下的强大能力。
161 0
|
4月前
|
人工智能 运维 Kubernetes
阿里云容器服务ACK AI助手正式上线带来的便利性
作为开发者想必大家都知道,云原生容器技术的优势,尤其是近两年的随着容器技术的迅猛发展,Kubernetes(K8s)已成为广泛应用于容器编排和管理的领先解决方案,但是K8s的运维复杂度一直是挑战之一。为了应对这一问题,就在最近,阿里云容器服务团队正式发布了ACK AI助手,这是一款旨在通过大模型增强智能诊断的产品,旨在帮助企业和开发者降低Kubernetes(K8s)的运维复杂度。那么本文就来详细讲讲关于这款产品,让我们结合实际案例分享一下K8s的运维经验,探讨ACK AI助手能否有效降低K8s的运维复杂度,并展望ACK AI助手正式版上线后的新功能。
321 2
阿里云容器服务ACK AI助手正式上线带来的便利性
|
4月前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。

相关产品

  • 容器计算服务