Recently, I've been working on a new approximate nearest neighbor search algorithm called RaBitQ. The author has already provided a C++ implementation that runs quite fast. I tried to rewrite it in Rust (yet another RiiR). But I found that my implementation is much slower than the original one. Here is how I improve the performance step by step.
envd
is a frontend of BuildKit. Just like the Dockerfile. It has been more than a year since I started working on this project. Since the features are relatively stable, I'd like to write a blog about my journey with envd
.
Develop machine learning applications inside the containers
Be careful to use multiprocessing in production.
Lots of people are talking about MLOps recently. Continuous Integration (CI) and Continuous Delivery/Deployment (CD) are the basic requirements for MLOps. This post will focus on some details about CI/CD for data science.
Why haven't you post any blogs for the past half year? In short, I'm too lazy.
Yet another deep learning serving framework that is easy to use.
There is no black magic, everything follows the rules.
Rate limiter is used to constrain the request for a certain period, which can reduce the pressure of servers, prevent malicious attacks, offer more stable services.
Define: a descriptor is an object attribute with "binding behavior", one whose attribute access has been overridden by methods in the descriptor protocal.
SpecTree: Yet another tool to generate OpenAPI document and validate request & response with Python annotations.
划水摸鱼又一年。
k8s is really complex...
useful command for systemd
最近在看一些 API 规范化的资料,鉴于没有很合适的,就自己写了两个 Python 的包,顺便记录下感想。
NGINX Plus looks great :)
Less(poor) is more(hard).
我并非故意要标榜极客是多么另类的群体,只不过当两个极客相遇并惺惺相惜,他们之间法生的很多事情确实有趣的很,至少对其他极客来讲。而这样的事情,放在普通人身上或许只会让人觉得奇怪吧。嗯,看起来还是比较另类的。
We need documents for human, not for robots.
那个 996.icu 的项目也快一个月了,现在 star 增长不多了,估计不会突破 250k。我早就觉得有写点什么的必要了。
巫炤,他惩罚别人,也惩罚自己。他只是意难平。
People will suffer a lot from bad design or bad code in software engineering. Today I'd like to share a number of the worst practices.
Just type vimtutor
in your terminal to learn the basic usage of Vim.
Although I usually use VSCode for coding, sometimes you have to edit files in the server. Mastering the basic of Vim is necessary.
自杀式单身:形容一直单身又不主动扩展社交范围去认识新朋友,却每天幻想着能拥有爱情的行为。
很快就到年末了,对比之前的 2018 年的目标,来总结一下吧。
重构是不可能重构的,这辈子都不可能重构的……
好吧,我自己写的垃圾代码我自己重构……
什么!?你要我去修改别人的垃圾代码?!
Notes of "36 strokes of recommended system"
文本分类是最经典的机器学习问题之一,像 anti-spam,情感分析,语义相似等,都是以文本分类为核心建立起来的。当我们能处理好文本分类问题的时候,往往都能很好解决这些问题。
各种工具、平台、格式泛滥成灾,每个打算动手写博客的人都要在上面浪费不少时间。是否要自己搭建?该选什么主题?要买什么域名?鉴于我已经在上面浪费了不少时间,就简单总结一下吧。
没文档或者文档太烂的项目是可怕的,完善易懂的文档是一个好项目的标配。
如何管理项目文档对于维护一个靠谱的项目是至关重要的。
做一个 T 型人才,或者说博学且有专长,这类说法在很多地方都能看到,我印象中最深刻的是在 Valve 的员工手册中,大概是因为一直都期待能有一家企业回应这种说法吧。
最近在做 query rewriting 的时候,需要做一个拼音转中文的功能,做着做着,就差不多快做成一个拼音输入法引擎了。
跟拼写检查器还是有点渊源的。想当初做数学建模的时候,就遇到过一次类似的问题,于是去网上搜到 Peter Norvig 的教程,写的非常好,当时看到短短二十行代码就能很好解决这个问题,实在是惊艳。而我也是从那个时候开始学习 Python 的。当然,以我初学者的水平要想一时间完全看懂他的代码是不太可能的,不过还是能理解大体的流程,做了一定修改后留作自用。
在信息检索系统中,TFIDF 和 BM25 函数都可以用来计算文档的相关度并进行排序。其中,TFIDF 也经常被用在自然语言处理中,BM25 则可以看做是 TFIDF 的进一步演化。在处理搜索字符串的时候,它们采用的都是 Bag-of-Word 方式,也就是说会忽略掉词的出现顺序,只考虑词出现与否和词频。
偶尔手痒了会撸一个 Python 的项目打包发布到 PyPI 上,方便以后安装使用。即使不是打算发布的,如果考虑把文档写在代码的注释里然后用 Sphinx 生成的,通常也是打包安装到本地,然后在一个地方集中生成文档,方便管理。
毫不客气地说,编码真的是 Python 使用者遇到的最多的问题之一。新手看了会崩溃,老手遇到会流泪(感叹以前踩过的坑)。
面具戴太久,就会长到脸上,再想揭下来,除非伤筋动骨扒皮。 ——鲁迅
这里的面具虽然指的不是游坦之的面具,不过这确实是个很符合上面这句话意思的例子。游坦之的面具是阿紫给他的枷锁,即使他后来忍痛揭下来,还会有无形的枷锁和满脸的伤疤。
Deep Learning Applications in NLP, CV and RL etc.
目前的深度学习框架实在太多了,初学者难免不知道选哪个才好,是追求曝光率最高的 TensorFlow
,还是最 Geek 的 MXNet
,又或是最易用的 Keras
,又或者是最贴近 Python 编程思维的 Pytorch
?
Star 对 GitHuber 来说还是很重要的,以至于淘宝都有代刷的业务了,就是不知道有没有发生过刷太多上了 Trending 的。
找人代刷毕竟太 low 了,我们还是要走别的路线,这样显得好像也是个正规军。
我们活着是为了什么?
这个哲学问题太难了,换个简单一点的。
怎么活着比较爽啊?
这篇当然不是 2018 第一天写的,毕竟这一年已经懒了太多了。写这篇的目的,无非就是总结一下自己的 2017,然后展望下自己的 2018 。
Rust 是一门编译型系统编程语言。官方给出的定义是:
Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.
可以看出这是一门主打效率,安全和并发的语言。
时光飞逝,还没来得及好好享受,就已经大学毕业了。
回想这四年的时光,虽然多是无聊的日子,但多少也有一些值得怀念的记忆。
说到 Flask
,这是我接触的第一个后端架构,也基本是目前唯一一个比较熟悉的。
对于规范化,这当然是很有必要的,特别是你的项目越做越复杂,不断增加新功能的时候,就会发现如果一开始结构很差,基本就需要大规模重构了。而重构,又通常是说说而已,真正动手完全重构什么的是不存在的,这么丑的代码,就算是我自己写得,我也不想再看了。
所以呢,一开始就尽可能做得规范一点,这样以后看起来就很舒服了,进行修改也会变得相对简单,别人要接手也不会看吐了。
Docker 这几年非常火,只不过对于我这种基本不接触业务的人而言,平时很少会用到 Docker,自己写项目愿意用 Python 的 virtualenv
就不错了。
俗话说的好,技术水平不重要,重要的是折腾各种工具的过程。: )
那么,就来总结一下自己觉得还不错的工具吧。
大概一年多没有写博客了。这一年间,多多少少接触了很多工业界的东西,不少东西还是值得记下的。更重要的是,很多东西不记下来自己就忘了,用的时候查资料也不一定方便,毕竟不是每个开源项目的文档都写得那么好用,也只有自己写出来的才最适合自己。
本文翻译了该文章的大致意思,省略了代码示例。