图床一直是个人博客一个很头痛的问题,第三方的图床我一直不敢用,怕哪一天就宣布停止运营了然后让用户迁移数据。有很多博客也会采用 Github 仓库存储图片然后再利用 jsdelivr 作为 CDN 加速访问。但是 jsdelivr 最近更新的使用政策中规定禁止使用 jsdelivr 加速图片。现在只是有这个声明,实际上可能不会管,但是以后的事可能就说不好了,万一哪天就直接限制图片访问次数就直接 GG 了。经过一番探索,发现了国外的一个很棒的云存储 Backblaze 可以满足作为个人博客的图床需求,本文主要讲讲如何利用 Backblaze 的对象存储和 Cloudflare 免费的 CDN 打造一个私人图床。

阅读全文 »

第一次听说 Oneflow 是在知乎的一个问题上《如何评价 7 月 31 日一流科技开源的深度学习框架 OneFlow?》,其的口号是主打性能(说实话,当时我是不信的)。当时并没有认真关注这个问题,因为国产的深度学习框架开源也不是一个两个了,比如清华的 Jittor,旷视的 MegEngine,华为的 Mindspore和百度的 PaddlePaddle。不关注的原因是因为这些框架都是为了公司内部的需求而首先设计的,之后再开源的,感觉可能不是很符合科研需求;另外已经熟悉了 PyTorch 的 API 和生态了,再转到另一个框架太麻烦也没有必要。最近,Oneflow 宣布其会兼容 PyTorch 的 API,并且放出了其性能测试报告(真香),一下子就让我有了兴趣,毕竟白嫖的性能谁不喜欢呢。本文主要是 Oneflow 官方发布的 Benchmark 和 介绍的搬运,后面等到放出与 PyTorch 兼容的新版本后会上手体验一下。

阅读全文 »

随着深度学习模型参数量越来越大,如何使用多卡并行训练模型加速训练是机器学习系统需要考虑和优化的重点。多卡并行训练涉及到多张卡上的模型参数和梯度汇聚和分发,而多卡之间的通信带宽往往是有限的,如何设计一个高效的汇聚和分发算法最大化地利用这些通信带宽以提升训练效率是一个值得研究的问题。本文将从最为简单的多卡训练模型出发并分析其缺点,然后再介绍一种名为 Ring Allreduce 的算法是如何解决这些缺点的。

阅读全文 »

在深度学习中,数值表示是一个常常被忽略的内容,可能从事模型量化领域的研究人员会有所了解,但是大部分的研究人员都对其了解甚少。但是一个设计合理的数值格式能够更好地加速模型训练和推理,在深度学习的工业化和实际落地中是非常重要的。近年来,为了加速深度学习,进一步挖掘硬件的性能,业界发明了一些新的数值格式,如本文中所介绍的TF32和BF16格式。其主要思想是利用深度学习对表示范围敏感而对精度不敏感这一特性,重新设计浮点数的表示,达到了一个更加好的平衡。

阅读全文 »

Meltdown又名为恶意数据缓存加载漏洞,其存在于大多数现代处理器中,该漏洞可以使得用户态进程读取内核空间中的内容。本文将对其大致原理进行解读,其中的细节并不会过度涉及,稍有计算机底层基础知识的同学即可放心食用。

阅读全文 »

现在已经是2021年了,搭建PyTroch环境也是越来越简单了,网上很多教程其实都已经过时了。现在安装PyTorch其实步骤只需要包括两步,1)安装NVIDIA驱动;2)按照PyTorch官网的指示安装PyTorch。本文将以Ubuntu 20.04为例,讲解如何搭建PyTroch环境。

阅读全文 »

作为程序猿,因为网络原因在天朝使用使用各种包管理器体验一般是不好的。本文整理了一些个人常用的镜像地址及其使用方式,包括Ubuntu的APT,PyPi,Conda,Docker的镜像以及GitHub的反向加速站点。

阅读全文 »

作为一个炼丹科研狗,偶尔总是会有在移动设备上测试模型的需求。目前有不少的移动端推理框架,比如腾讯的NCNN,小米的MACE等等。但是训练模型时一般使用的都是PyTorch框架,利用NCNN这类框架在移动设备上进行推理往往需要将模型转换为对应的格式。这一步一般都是天坑,常常会出现转换之后的模型不能用的情况。如果PyTorch中使用了某些移动端框架没有的算子,那更是天坑中的天坑。

最近PyTorch在移动端也开始发力了,推出了PyTorch Mobile,在IOS和Android设备上都可以很方便将模型转换过去进行推理。因为是PyTorch的亲儿子,所以转换模型十分方便,而且一般也不会出现算子不支持的情况(小声哔哔,我猜的)。本文主要参考Pytorch官方教程 PYTORCH MOBILE PERFORMANCE RECIPES, 在安卓设备上对图片分类、目标检测和语义分割的模型进行了延迟测试,其他模型理论上也可以按照本文的方法进行测试。

阅读全文 »