在Kubernetes集群中使用GPU资源
Kubernetes(下文简称为k8s)具有对机器的资源进行分配和使用的能力,比如k8s可以指定容器最多使用多少内存以及使用多少CPU计算资源。那么问题来了,一般来说容器就是使用CPU和内存资源,那么对于需要使用显卡的Pod,k8s也能够支持吗?答案当然是可以啦!目前k8s不仅支持容器请求GPU资源,还支持请求几块显卡的GPU资源,这使得k8s在深度学习等场景下也有了用武之地。
所以本文的主要内容就是如何在k8s集群中使用GPU资源
Kubernetes(下文简称为k8s)具有对机器的资源进行分配和使用的能力,比如k8s可以指定容器最多使用多少内存以及使用多少CPU计算资源。那么问题来了,一般来说容器就是使用CPU和内存资源,那么对于需要使用显卡的Pod,k8s也能够支持吗?答案当然是可以啦!目前k8s不仅支持容器请求GPU资源,还支持请求几块显卡的GPU资源,这使得k8s在深度学习等场景下也有了用武之地。
所以本文的主要内容就是如何在k8s集群中使用GPU资源
上了Docker怎能不上Kubernetes(下文简称为k8s)呢,k8s是一款旨在提供跨主机集群的自动部署、扩展以及运行应用程序容器的平台。至于它具体是什么,有什么好处,可以自行网络搜索(主要是好处太多了罗列不过来)
本文的主要内容为在服务器上如何安装k8s以及搭建单master节点的k8s集群
Docker官方提供了Docker Hub作为Docker公共仓库,大家可以上传或者下载镜像。但是对于企业来说将生产环境的镜像放在公共仓库是不安全的,所以企业有必要搭建自己的私有仓库。Docker官方提供了开源的registry镜像,可以用于搭建Docker私有仓库。但是它没有管理界面,缺少运维和管理功能,并不适用于企业搭建
由VMware中国研发团队负责开发的开源企业级Docker Registry——Harbor,以Docker官方提供的开源registry为基础,增加了Web UI、用户权限管理、日志等一系列便于运维和管理的功能,可以帮助企业快速搭建企业级的Docker私有仓库。所以Harbor成为了第一选择
本文的主要内容为如何使用Harbor搭建Docker私有仓库,并简单说明下使用中的注意事项
随着公司GPU服务器数量的增加,深度学习开发环境的部署逐渐成为了负担。因为机器本身环境配置的差异,即使经验丰富的人也会遇到一些全新的问题,需要耗费时间去解决。而Docker与生俱来的Build once, Run anywhere
特点使得多机器统一环境部署变得极为容易,所以使用Docker势在必行
本文的主要内容为在腾讯云的GPU服务器上如何安装Docker,并能支持GPU的使用
(用了Docker后,就可以跟前文介绍的Anaconda拜拜了,因为conda只做到了Python环境隔离,并且每个虚拟环境还是要手动配置)
在学习Python多进程的过程中,虽然Process和Pool都能实现多进程的功能,但是侧重点各有不同:
Process需要自己管理进程,起一个Process就是起一个新进程
Pool是进程池,它可以开启固定数量的进程,然后将任务放到一个池子里,系统来调度多进程执行池子里的任务
所以从直观感受上更倾向于使用Pool,但是使用过程中却发现Pool存在一些问题(或者说与Process的差异),所以记录下来给大家分享一下
直奔主题,为什么要做这件事情?
所以通过查资料以及实验完成了这件事情,并记录下来以供有同样需求的朋友参考
文章修改记录:
文章首发于微信公众号:链家产品技术团队,欢迎搜索关注~
公司前一阵搞了两台GPU服务器,终于有“玩具”可以玩了~用的卡是最新的P100(好吧,真正最新的是V100,不过还没铺货)。本着爱折腾的精神,自然就开始了折腾它们的征程(结果是我被折腾了。。。)
以前自己也搭建过TensorFlow的开发环境(见链接),所以一开始以为这次也不会难,结果。。。咳咳,还是要正视自己的水平的。因为服务器上装的是系统是CentOS,以前自己捣鼓的时候用的是Ubuntu,差别还是不少的,所以特此记录自己踩过的坑,也给其他人一些经验帮助。
这次折腾总共分为两个阶段:最初打算直接通过pip下载TensorFlow安装包安装,结果完全失败,不过在此期间摸清了许多限制条件,也为第二个阶段——通过编译的方式安装TensorFlow打下了基础。
系统版本:CentOS release 6.8 (Final) 64位
本文是在学习David Silver所教授的Reinforcement learning课程过程中所记录的笔记。因为个人知识的不足以及全程啃生肉,难免会有理解偏差的地方,欢迎一起交流。
课程资料:http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html
上一节讲的东西是基于已知的MPD,也就是有模型学习,而实际中很多情况下MDP是未知的,各个状态之间的转移概率以及reward很难得知,所以这种环境称为model free。
首先先讲model free prediction,类似于DP中的policy evaluation,去估计这个未知的MDP中各个状态的value function。]
下一节会讲model free control,类似于DP中的policy iteration,去最优化这个未知的MDP中各个状态的value function。
本文是在学习David Silver所教授的Reinforcement learning课程过程中所记录的笔记。因为个人知识的不足以及全程啃生肉,难免会有理解偏差的地方,欢迎一起交流。
课程资料:http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html
这一部分是用动态规划来解决MDP问题,所以先介绍下什么是动态规划
Dynamic Programming(动态规划),是用来解决一些复杂的问题,将复杂的问题分解为一些子问题,然后分别解决这些子问题,最后再把解决方案合并得到复杂问题的解