自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 k8s调度系统以及机器学习平台任务批调度简介

k8s调度系统以及机器学习平台任务批调度简介本文主要介绍了机器学习平台在深度学习任务的批调度上的一些工作以及对k8s调度机制原理的介绍。背景介绍近几年来,AI和大数据异常火热,伴随着AI经常出现的一个词就是机器学习平台,作为一个机器学习平台,平台提供训练所需要的硬件资源,平台也支持使用tfjob分布式训练模型,由于平台部署在私有集群,所以集群内项目的资源是有限的,在项目初期,项目训练任务不多的时候,每个任务都能获取足够的资源进行训练。随着项目里的训练任务越来越多,逐渐暴露出了一些在任务

2021-11-30 20:41:23 1306

原创 快速将k8s crd生成java类

踩坑吐槽k8s是用go写的,大部分利用k8s crd的项目也是用go写的,但是难免遇到使用java项目想操作k8s crd的,当前java对应的k8s第三方库主要有两个,一个是kubernetes-client/java, 一个是fabric8io但是如果这两个库也没有支持相应的crd操作怎么办,网上找了一圈都没发现yaml文件直接转java类的好办法,最后自己是按照yaml文件一个一个字段手写类,但是写起来实在蛋疼,头大,下面分享两种其他更简易的方法。快速将k8s crd生成java类yaml转j

2021-06-05 17:12:59 1024

原创 csapp-程序员的视角

一代神书,很多人推荐这本书,尤其是我这种非科班出身的人来说,确实也需要一本这样打通计算机所有知识环节的书,梳理一下知识图谱。没有直接先上手lab, 准备先粗略的把中文版先过一遍,有时间再看下原版授课视频,再开始做lab, 我预感到这可能得持续几个月甚至半年一年的时间,毕竟干这件事的即时收益不明显,动力不是那么足够,至少没有刷题跳槽这个动力来的足。目前才看到第四章-处理器体系结构,说实话看不懂,云里雾里的,大概是我没好好学计算机组成原理的问题。今天是2021.04.17,记录一下,看看自己什么时候能看完

2021-04-17 18:11:34 239

原创 k8s tfjob批调度-volcano调研

背景最近工作聚焦在机器学习这块,公司采用的kubeflow框架中的tfjob,利用tersorflow进行分布式训练。在训练过程中,发现在整体资源不足的情况下,由于k8s默认调度器调度的粒度是pod,但是tfjob可能对应多个pod, 多个tfjob可能会互相争抢资源而陷入资源死锁。于是开始调研解决方案,优先考虑开源的方案,最终发现2种解决方案:第一种是kube-batch及从此之上衍生的volcano, 可以作为k8s第二调度器,对机器学习、大数据等job类任务批调度做了特殊优化第二种是k8s

2021-04-10 11:19:25 1795

原创 Tersonflow Serving原理

Tersonflow Serving原理前言​当我们将模型训练完毕后,往往需要将模型在生产环境中部署。最常见的方式,是在服务器上提供一个 API,即客户机向服务器的某个 API 发送特定格式的请求,服务器收到请求数据后通过模型进行计算,并返回结果。如果仅仅是做一个 Demo,不考虑高并发和性能问题,其实配合 Flask 等 Python 下的 Web 框架就能非常轻松地实现服务器 API。不过,如果是在真的实际生产环境中部署,这样的方式就显得力不从心了。这时,TensorFlow 为我们提供了 Ten

2021-03-07 20:44:59 466

原创 prometheus-强大的监控框架

prometheus-强大的监控框架prometheus是当前监控k8s最常用的监控框架,并且grafana也支持prometheus搭建可视化监控prometheus组件prometheus架构图如下:prometheus serverprometheus server本身就是一个时间序列数据库,时间序列数据库就是prometheus每隔几秒就会对同一个指标重复查询其值,同一个指标会保存其历史时间段的值,这对于监控来说比较重要,监控需要展示历史阶段不同时间的值,所以叫时间序列数据库expo

2021-02-20 22:33:20 547 1

原创 c++智能指针 shared_ptr weak_ptr unique_ptr 语法 使用 实现

c++最开始设计没有考虑gc(garbage collection)机制,后续c++11推出后STL标准库中增加了三个智能指针类,合理运用下可以让c++程序员摆脱忘记delete或者free的困扰shared_ptr原理是引用计数,用于指针需要被传递复制的时候weak_ptr主要就是为了配合shared_ptr防止出现循环引用(两个对象各持有各自的shared_ptr, 都无法先释放),...

2020-11-22 14:43:16 247

原创 c++优先队列 priority_queue 二叉堆 最大堆实现

文章目录前言一、priority_queue使用方式1.初始化方式2.成员函数二、 二叉堆的实现原理二、自己实现的priority_queue 最大堆代码前言c11 stl中提供优先队列的数据结构,可以实现最大堆和最小堆一、priority_queue使用方式1.初始化方式std::prioriry_queue<int> tmp; //默认最大堆std::priority_queue<int, vector<int>, std::greater<int

2020-11-16 15:32:07 435

原创 leetcode 207. 课程表 -- 图论 拓扑排序

一 题目描述二 解题思路这道题是图论问题,是典型的拓扑排序问题,拓扑排序后可判断有向图是否有环可以采用DFS和BFS解题三 实现代码// BFSclass Solution {public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { // 拓扑排序,可以不需要课程个数 // 针对这道题这里可以直接用vector<int&

2020-11-11 00:47:42 241

原创 c++ next_permutation 下一个排列 全排列

文章目录一、next_permutation二、使用步骤三、next_permutation实现代码一、next_permutationnext_permutation是stl按照字典序获取下一个排列的函数,常与vector搭配使用二、使用步骤2.1 获取下一个排列#include <iostream>#include <algorithm>#include <vector>using namespace std;int main() { .

2020-11-07 23:37:45 1219

原创 tcp三次握手 四次挥手 参数调优

1.三次握手

2020-11-02 19:53:13 432

原创 c++ 字符串分割

作为一名c++程序员,经常遇到的一件尴尬事件就是c++没有一个专门用来字符串分割的函数,每次都要调用组合技,这里总结一下几种方法1.利用string的 find && substr#include <iostream>#include <string>#include <vector>using namespace std;void mysubstr() { string tmp("0.0..0.0."); vector&

2020-11-01 22:30:19 1392 8

原创 《redis设计与实现》

提高系统架构的性能,增加缓存层是常见的优化方式,redis和memcache是当前采用较多的缓存组件,redis被称为数据结构数据库redis和memcache的区别:redis和memcahce都是基于内存的key-value存储memcache的事件模型是多线程reactor模型, 性能更好,但是只支持一种key-value类型,复杂的数据结构需要用户自己做序列化redis是单线程,但是支持更多的数据结构,并且支持持久化和主从复制redis常作为互联网高并发请时的中间件,但是会有以下常见的三种

2020-11-01 19:29:03 233

原创 排序-冒泡、选择、插入、快速、归并

排序算法是一种很重要的算法,虽然c++ stl中有sort函数,但是还是要了解其中常用的几种排序算法,至于std::sort源码实现使用的排序算法是混合式排序,详见std::sort源码剖析std::sort只支持vector,array等迭代器支持随机存取的容器,因为内部是快排和堆排std::list这种不支持随机存取,内部有单独的sort函数,实现是迭代版归并排序有些排序算法时间复杂度都是受限原数据的排序情况的,比如最坏的情况原数组完全逆序,快速排序时间复杂度是O(n^2),但是最好的情况原数组已

2020-11-01 18:43:07 191

原创 《操作系统导论》

一、虚拟化1.什么是寄存器,是硬件还是虚拟出来的软件寄存器是cpu自带的硬件操作系统的某些特性需要硬件支持,比如分页TLB就有硬件支持和软件支持,但是硬件支持更高效2.为什么需要操作系统,没有操作系统的早期程序是怎么运行的没有OS,一台机器只能运行一个程序,运行多个需要人工干预执行,并且可能相互影响3.cpu调度经历FIFE(先到先执行)、时间片轮转、优先级、多级反馈队列,目前大多采用多级优先调度队列,同时兼顾各进程运行完成时间和系统响应时间4.虚拟内存操作系统为隔离各进程,对进程申请内存

2020-10-29 15:00:43 685

原创 博客园账号转移

之前在博客园陆陆续续写过几篇文章,今天决定切到csdn来,想了想,大概是3个原因:1.编辑器不好用,吐槽一下,界面复古,功能不全2.关注功能不太好,排名系统没有csdn这么明显,感觉写了也没人看的亚子,所以也没怎么写3.之前用微信扫码登陆csdn, ID竟然是随机的,而且还没办法更改,强迫症所以不想在这写,现在更改了,于是可以切过来了,更改ID链接最后给个链接指向我的博客园,不知道能不能迁移...

2020-10-28 00:17:00 873

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除