avatar
文章
87
标签
0
分类
12
归档
分类
照片
关于
搜索
CodeTalks
搜索
归档
分类
照片
关于
搜索

CodeTalks

关于 Monorepo 的一点想法
发表于2021-08-08|编程分享
Google、Facebook 的单一代码仓库已闻名遐迩,不过在没有真正接触过实际的 Monorepo 项目之前,可能很难想象 Monorepo 是怎么工作的。我在学校里的时候也没太理解,直到去了微信实习才看到了真正的 Monorepo,当然他们不是全 BG 共享代码,实际上单个 repo 的规模要比 Google 那种全公司共享要小,使用也不是特殊的客户端,就是普通的 git,也没有使用 git-vfs 之类的,而是把代码全拉下来开发。不过,虽然只是 Google 真正的 Monorepo 的模仿,也能管中窥豹,大致理解 Monorepo 的特点。 最大的感受是,量变引起质变,当代码仓...
使用 Ray Tune 进行分布式调参
发表于2021-05-26|编程分享
之前学习了怎么使用 PyTorch 进行分布式训练,不过,手动计算参数启动进程还是比较麻烦的。Berkeley 的 RISELab 开发了 Ray 这个框架来简化分布式计算程序的编写。Ray 有以下几个优点: 支持在多种云平台一键部署集群 支持 Autoscaling,可以节省成本 支持多种深度学习框架,比如 PyTorch、TensorFlow 通过 Ray 统一的编程 API,写好的程序既可以在本地集群跑,本地集群资源紧张的时候也可以直接放到云端跑,不需要改代码,集群管理和调度都不需要我们自己操心。同时,Ray 还提供了调参库,等模型迭代成熟之后可以直接使用 Ray Tune 进...
PyTorch 多卡分布式训练
发表于2021-05-22|编程分享
目前,PyTorch 官方已经准备逐渐放弃对 DataParallel 的支持。而且受限于 Python 的 GIL,DataParallel 采用的多线程模型不能充分发挥多核性能。PyTorch 官方建议大家使用 DistributedDataParallel(简称 DDP),即使你只有一台服务器。这个类使用上会复杂一些,PyTorch 官方教程写的比较复杂,这个教程将步骤拆解一下,方便入门。 DDP 原理DDP 的原理是开启多个进程,每个进程占用一张卡来进行训练。在训练开始之前,每个进程需要加载相同的模型权重,这样大家就有同样的起点。然后,训练过程中,每个进程单独加载不同的训练集的子...
CMU 15-445 Fall 2020 Labs 实现笔记
发表于2021-03-27|编程分享
之前在 YouTube 刷了一下数据库入门基础课程 CMU 15-445/645 的 Lecture Videos,感觉 Andy 是个很有个性也很有趣的人,课堂气氛很活跃,也将数据库的基础知识讲的深入浅出,例子生动。虽然之前大二也修读了数据库的相关课程,但是由于时间限制,并没有讲关于索引并发控制的问题(事务并发控制还是讲了的),也没有讲 Recovery 的知识(听师兄说有一年不仅没讲,期末考试还考了,开卷考考场现学 ARIES),倒是讲了很多 Funtional Dependency 相关的知识。所以看网课也主要看了课内没讲的东西。 当然,课程内容其实大同小异,精华部分还在...
MIT 6.824 2015 Paxos Lab 实现笔记
发表于2021-03-27|编程分享
There is only one consensus protocol, and that’s Paxos. – Mike Burrows, author of Chubby 在 2015 年及以前,MIT 6.824 课程的一致性算法实验都是用的 Paxos 算法。实现了 Raft 之后觉得也有必要实现一下 Paxos 这个经典的算法。 首先 Paxos 算法最原始的论文有 Leslie Lamport 写的 The Part-time Parliment 和 Paxos Made Simple。前面一篇是 1990 年写的,而且不同于其他学术论文,这篇论文用讲故事的方法来描述 ...
MIT 6.824 Spring 2021 Raft Lab 实现笔记
发表于2021-03-18|编程分享
最近花时间做了一下 6.824 的 Raft Labs,总算把 Raft 亲自实现了一下,收获还是很大的,羡慕 MIT 学生。实验提供的初始代码可以通过 git clone git://g.csail.mit.edu/6.824-golabs-2021 6.824 获取。Lab 指导资料可以在 https://pdos.csail.mit.edu/6.824/labs/lab-raft.html (Lab 2) 和 https://pdos.csail.mit.edu/6.824/labs/lab-kvraft.html (Lab 3)获取。Lab 4 是 Sharded KV Serv...
论文阅读 | TransCoder AI 转译代码
发表于2020-12-24|机器学习
个人感觉还是比较有意思的一个工作。 Paper:https://arxiv.org/abs/2006.03511 Code:https://github.com/facebookresearch/TransCoder Facebook 用 XLM 对代码进行预训练,用了无监督翻译的思想,达到 AI 自动翻译代码的效果。虽然理论上图灵完备的语言都能互相转换,而且像 TypeScript 之类的语言通常自带 Transcompiler 将自己编译到 JavaScript 等已经有解释器/编译器的语言,但是这需要 Transcompiler 作者对源语言和目标语言都非常熟悉,而且需要...
机器学习 | EM 算法
发表于2020-11-13|机器学习
EM 算法实验最大似然估计在已知每次实验的硬币是 A 和 B 的情况下,我们可以直接使用最大似然估计求解 A、B 硬币正面出现的概率 $p_A$ 和 $p_B$。由于每次实验都是独立地抛十次,所以可以知道实验结果服从二项分布 $B(10, p_A)$ 和 $B(10,p_B)$。 设 A 硬币的第 $i$ 次实验正面朝上的次数为 $y_A^{(i)}$, B 硬币的第 $i$ 次实验正面朝上的次数为 $y_B^{(i)}$,分别进行了 $n_A$ 次实验和 $n_B$ 次实验,可以得到 A 的似然估计函数为: $$ L_A=\prod^{n_A}_{i=1}{10\c...
Kubernetes 虚拟网络模型
发表于2020-03-28|编程分享Kubernetes
在 K8s 的网络模型中,Pod 就像是一个个 Host,拥有独立的 IP,它们之间可以不需要经过 NAT 直接使用对方的 IP 进行通信。一般来说,在同一个机器上的 Pod,我们可以使用 Linux 网桥将不同 Network Namespace 的网卡桥接起来,从而使得它们好像处在同一个二层网络一样。但是到了多机的容器互联互通场景,网桥就行不通了。而其实,要使得网络互联互通,只有两种办法:路由和隧道。 其实,K8s 的虚拟网络,也可以算作一种 SDN(软件定义网络)。 Underlay 模型Underlay 指的是直接使用底层的物理设施,通过标准路由协议如 BGP、OSPF 等设置路...
Kubernetes 实战 | 自建 Storage Class
发表于2020-03-16|编程分享Kubernetes
前面提过 Kubernetes 中的存储通过 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来实现,但是也提到了 PersistentVolume 需要手动创建,实际使用上较为不便。 一般来说,在使用云服务的 Kubernetes 集群服务的时候,云服务会顺带提供动态存储服务,我们只需要使用 StorageClass 去申请即可。而这种通过 StorageClass 申请存储,背后是有 Provisioner 来支撑的。也就是说,如果我们自己部署一个 Provisioner,就能动态申请存储,不需要再手动创建 PV 资源了。而 P...
1234…9
avatar
howardlau
记录想法
文章
87
标签
0
分类
12
GitHub
最新文章
DeepSeek 3FS 源码解读——客户端篇2025-03-16
DeepSeek 3FS 源码解读——RPC 篇2025-03-03
DeepSeek 3FS 源码解读——磁盘 IO 篇2025-03-02
DeepSeek 3FS 源码解读——协程&RDMA篇2025-03-01
分布式存储入门学习路线2025-01-17
分类
  • DeeCamp 20181
  • IT 杂谈2
  • Uncategorized1
  • 大学学习9
    • ucore8
  • 机器学习7
  • 游戏推荐2
  • 科普3
归档
  • 2025 年 03 月 4
  • 2025 年 01 月 1
  • 2023 年 09 月 1
  • 2023 年 08 月 1
  • 2022 年 08 月 3
  • 2022 年 07 月 1
  • 2022 年 05 月 7
  • 2022 年 03 月 1
网站信息
文章数目 :
87
最后更新时间 :
© 2017 - 2026 By howardlau
粤 ICP 备 17129444 号-1
搜索
数据加载中