王希刚 发布于 12月08, 2018

Kubeflow使用Kubernetes进行机器学习

Kubeflow是Google推出的基于kubernetes环境下的机器学习组件,通过Kubeflow可以实现对TFJob等资源类型定义,可以像部署应用一样完成在TFJob分布式训练模型的过程。最初的设计是将Kubernetes和Tensorflow结合实现对Tensorflow分布式训练的支持。但是仅仅实现对Tensorflow的支持还是远远不够的,Kubeflow社区又陆续对各种深度学习框架进行支持,例如:MXNet, Caffee, PyTorch等。使得机器学习算法同学只需关心算法实现,而后续的模型训练和服务上线都交给平台来做,解放算法同学使其专做自己擅长的事儿。

阅读全文 »

李钢 发布于 11月24, 2018

C++多线程中的锁和条件变量使用

在做多线程编程时,有两个场景我们都会遇到:

  1. 多线程访问共享资源,需要用到锁;
  2. 多线程间的状态同步,这个可用的机制很多,条件变量是广泛使用的一种。

今天我用一个简单的例子来给大家介绍下锁和条件变量的使用。

代码使用C++11

阅读全文 »

张超 发布于 11月19, 2018

MQTT协议之连接

上篇文章中简单介绍了MQTT协议报文的格式,本篇文章将就集中的连接协议进行详细的介绍,以及自己对该协议的一些思考和理解。

阅读全文 »

吕程 发布于 11月10, 2018

了解凸包及Graham scan

Graham's scan是一种在时间复杂度为O(n log n)的平面中找到有限点集的凸包的方法。它以 Ronald Graham的名字命名,他在1972年发表了原始算法。该算法找到沿其边界排序的凸包的所有顶点。它使用堆栈有效地检测和去除边界中的凹陷。

阅读全文 »

王希刚 发布于 11月08, 2018

深入理解 nvidia-docker2.0

NVIDIA于2016年开始设计NVIDIA-Docker已便于容器使用NVIDIA GPUs。 第一代nvidia-docker1.0实现了对docker client的封装,并在容器启动时,将必要的GPU devicelibraries挂载到容器中。但是这种设计的方式高度的与docker运行时耦合,缺乏灵活性。存在的缺陷具体如下:

阅读全文 »

王希刚 发布于 11月06, 2018

nvidia-docker2在kubernetes上实践

现在公司线上所有的k8s集群对GPU资源的使用都是nvidia-docker 1.0(历史遗留问题)。但是现在的kubernetes1.9推荐使用device plugin的方式来对接外部厂商的资源。这样所有的厂商资源就不要kubernetes去特定的支持,而是各服务厂商只要按照kubernetes提供的device plugin实现自己的一套就可以了。今天就针对nvidia-docker2.0 进行了下测试。在此做下记录。

阅读全文 »

武伟 发布于 09月26, 2018

rpm自动化打包工具

运维开发团队为了能够让开发人员方便快捷的安装开发依赖包,以提高开发人员的开发效率。特意为开发人员提供了一款可以自助制作rpm包的全自动打包工具。利用该自助打包工具,开发人员可以在最短的时间内随心所欲的制作出满足特定需求rpm包。

阅读全文 »