NLP中的Adapters是什么?
NLP adapters主要想解决不同任务需要finetune整个模型的痛点,与Prompting一样,是一种轻量级的训练方法,也是Transfer Learning的应用。按出现时间来看,finetune早于adapters,adapters早于prompting。今天来重看这篇Adapters的文章,可以更好地理解lightweight finetune的发展过程。
NLP adapters主要想解决不同任务需要finetune整个模型的痛点,与Prompting一样,是一种轻量级的训练方法,也是Transfer Learning的应用。按出现时间来看,finetune早于adapters,adapters早于prompting。今天来重看这篇Adapters的文章,可以更好地理解lightweight finetune的发展过程。
Hugo是个极好的静态网站生成器。一个常见的情况是原始的网站源码放在私有代码库中,但希望自动化构建和部署的功能。假设私有代码库托管在github上,希望能自动化部署到GitHub Pages,这个功能可以通过github actions轻松搞定。
最初对语言模型的理解源于n-gram语言模型,但后来出现了RNNLM等一众神经网络语言模型,就有了这个疑问:神经网络为什么可以表示语言模型?
首先,语言模型本质上是 概率分布 :
# Scaling Laws for Neural Language Models
一篇实验Paper,调研了神经网络语言模型交叉熵损失变化满足power-law定律,挺有意思的文章。Transformer之后有许多探索不同模型结构的文章,并在一些任务上取得了新的SOTA,却鲜有人考虑影响模型性能的主要因素是什么。
LeetCode Top K Frequent Words 中会用到priority_queue,同时需要定义priority_queue的排序算法。
在迁移博客之后,就切换了图床,使用github作免费的图床。但最近发现它不太稳定,常常打不开。研究发现可以用jsdelivr作github的CDN加速,只需替换下图片地址即可。这才是github图床正确的打开方式 :-)
之前我们谈到 # MongoDB事务重试实现 . 如果在事务中使用了BulkWrite(),那么这个新的事务API可能会无限重试从而导致服务器CPU使用率100% (MongoDB Server v4.4.6-ent, MongoDB Driver v2.12.2)。
最近从Hexo切到了Hugo博客生成引擎,主要原因是Hexo太慢,且在页面数量上千时会崩溃。
Hugo is for people building a blog, a company site, a portfolio site, documentation, a single landing page, or a website with thousands of pages.
本文为十月川北自驾游记系列之五,黄龙。
十月川北自驾游记系列:
我们先去的九寨沟,回程玩黄龙,考虑到川主寺这边没什么好的酒店,就计划上午玩黄龙(10点到,1点出),晚上赶到都江堰住(晚7点左右),但显然这个安排是非常紧的,加上我们游览的速度并不快,导致不可能在晚上赶到都江堰。出于行车安全考虑,改住在茂县,住宿简直是个噩梦。
本文为十月川北自驾游记系列之四,九寨沟。
十月川北自驾游记系列:
游记之前,先聊两个FAQ:
# The Curious Case of Neural Text Degeneration
这篇ICLR 2020年的文章我很喜欢,因为它简洁直观。文章首先提出一个有意思的发现:人说的自然语言常常出人意料,即说出的并不总是语言模型中概率最大的词,而Beam Search会总会选择最符合语言模型的词汇,因此生成的文本没有新意(less surprising)。之后提出了一种top-k sampling的改进方案来解决问题:nucleus sampling (top-p sampling)。
如果一个Pod在错误状态启动不了 (crashloopbackoff),那么Kubernetes就会自动重启该Pod。这就给调试这个Pod带来了麻烦,无法exec到这个Pod上查看问题,也不容易看到这个Pod的日志,因为此时这个Pod已经被Kubernetes杀掉了:
训练GPT等语言模型可以参考Huggingface Transformer训练语言模型的tutorial: Transformers Language Model Training
示例提供了三个脚本: run_clm.py, run_mlm.py 和 run_plm.py。GPT是个causal language model,可以使用 run_clm.py 进行训练或微调。但这脚本并不支持行式数据集,即每行一个训练样本的数据集。它默认的数据处理是按行读取样本并把它们连接成一个block_size的连续文本。
在同一机器上对不同repo使用不同的github账号是个常见需求。举个例子,repo1托管在github账号x1下,而repo2托管在账号x2下,如何方便地在同一机器上使用不同账号自动git push到对应的远端?比较直接的做法是在不同repo目录下使用git config配置用户名,但这样有两个问题:
最近发现MongoDB分片集群的流量不太均衡,研究之后发现根本原因在于数据分布不均衡。虽然 数据分布均衡不等于流量均衡 ,但还是应该尽量使得数据分布在不同shard之间基本均衡。三个shard的数据分布大概这样:
Change stream是什么? 官方文档 :
Change streams allow applications to access real-time data changes without the complexity and risk of tailing the oplog. Applications can use change streams to subscribe to all data changes on a single collection, a database, or an entire deployment, and immediately react to them. Because change streams use the aggregation framework, applications can also filter for specific changes or transform the notifications at will.