大力真的有奇迹

在之前那篇颇受欢迎的卖惨小品【今天被OpenAI爆了】里,我讲述了被GPT embedding震撼的故事。但故事的最后,我们并没有采用openai的embedding接口,因为那样确实成本和产品稳定性都不好控制。 我们在一番寻找之后,我们看到了一个叫Massive Text Embedding Benchmark (MTEB)的大型语义表征benchmark(在Huggingface上有最新的的榜单)。并且最终选择了榜单上排名第二的instructor-lg模型。 Instructor-large模型的水平在这个榜单上超过了openai的ada-002,可见开源社区还是很能打的。这个模型基于的是谷歌的T5模型,然后用instruction finetuning的方法训练了一个可以适用多个场景的embedding模型。维度768,模型0.3b,推理速度很快,线上使用负担也比1536的ada-002低很多。这个跟之前我使用的21年SOTA Simcse模型(排在排行榜第30位)比,规模是三倍,在这个benchmark上的得分是61.59 vs 48.87,提升确实很明显。不过我猜Simcse large的得分应该也能超过50。总之instructor是个好模型,推荐大家在需要语义embedding的场景使用。 但今天的主角并不是他,而是排在第14名的模型all-mpnet-base-v2。这个模型是sentence-transformers出品的一个模型,用的backbone是mpnet-base。它的规模和simcse相当,但得分是57.78,提升了很多。如果说前面的Instructor模型,甚至是GPT模型的提升很大程度来源于模型规模扩大,那这个同等规模模型的提升来自于哪里呢?mpnet这个稍显小众的网络可能比bert、roberta是强一些,但这不是主要的。因为有一个名字很类似的模型all-MiniLM-L12-v2,以及它的缩小版all-MiniLM-L6-v2,的得分分别是56.x。这两个模型的维度更小,是384维,而L6模型的层数甚至也只有bert-base的一半。主要的提升点来自于前缀all。model card里是这么说的 We use the concatenation from multiple datasets to fine-tune our model. The total number of sentence pairs is above 1 billion sentences. We sampled each dataset given a weighted probability which configuration is detailed in the data_config.json file. 十亿句子对训练,没错,是十亿。拿一个小小的6层模型,在大量数据上训练,就可以获得一个比两年前的SOTA好很多的模型。这种暴力美学真的令我叹为观止。看到他们数据集的时候突然感觉自己的格局或者想象力真的太小了。什么叫对深度学习有信仰,这种玩法大概就是吧。其实OpenAI也是很类似的,因为相信大模型,大数据,所以能搞成。而且就sentence-transformers用的数据来说,都是公开可获取的,能跑得动这个训练的人应该有很多,但真这么跑的却很少。 不止是NLP领域,CV界不也是这样吗,前段时间Meta的SAM也是用史无前例的大数据集训练的。对比一下,之前的预训练模型用的常用数据集COCO才328K张图片,是SAM数据集的3%。 SAM is trained on a massive dataset of 11 million images and 1.1 billion masks, which is the largest segmentation dataset to date....

April 19, 2023 · 1 min · Yuanhao

今天被OpenAI爆了

今天第一次体验到来自大语言模型的压力。 最近在做一个语义匹配的小任务,选择的方案是用2021年的SOTA模型SimCSE在我们的领域数据上先进一步预训练,然后再用任务数据finetune降维。前几天的时候还自我感觉良好,因为比之前的模型效果好,还修复了老语言模型的一些明显badcase。 但是今天,我们用openai的embedding模型也试了一下,recall指标直接翻了一倍。当时看到结果我都惊呆了。这个模型一千个token只要0.0004美元,相当的便宜,而且开箱即用。 之前我看到网上帖子说NLP工程师失业啥的还觉得有点夸张,现在感觉还真有可能。 首先这个事情是有正反馈的,作为一款公开的产品,而且这么便宜,你不用别人也会用,你如果没法超过他(现在看起来确实不容易),那就只能也用,不然产品竞争力就会出问题。 一旦大规模用,那很多NLP问题的处理范式真的会改变,以前大家在不同场景finetune类似bert这样的小模型,但现在可能会变成在OpenAI embedding基础上finetune最上面的输出层,例如分类层。一个底座可以支撑好几个上层需求。这样的话需要的人力大大减少,公司的inference负担也大大降低。虽然在OpenAI那花了些钱,但算下来大概率是比原来划算的。 当然这样的方案也有一些问题,例如公司的数据就都让OpenAI知道了,并且OpenAI目前不太稳定,稳定性上有点不可控。 那作为公司,感觉除了之前大家都看到的在NLG上投入大模型这条独木桥,未来在NLU上投入大模型的应该会有很多。自己跑个10B量级的模型作为底座,做到OpenAI的8、9成应该是个比较好的选择。朋友们,赶紧学起来啊,不然真要成为纺织女工了。

March 28, 2023 · 1 min · Yuanhao

[大模型补课]模型及训练方法

前情提要: [大模型补课]当代AI的基石数据集 [大模型补课]当代语言模型的评价体系 这是大模型补课的第三篇文章,主要关注模型及其训练方法。做算法的人往往最喜欢看模型相关的东西,这期包含的内容也确实很有趣,不需要技术背景也能看懂。 Encoder vs Decoder 在模型层面,我认为大模型时代最重要的一个变化就是从前几年的Encoder为主变成了Decoder Only占据绝对的主流。相对应的,自然语言生成问题取代了自然语言理解问题成为了主流,并且是在用生成这种范式统一了理解问题。 transformer编码器和transformer解码器的主要区别在于它们如何处理输入和输出序列。 {: .align-center style=“width:80%”} 最开始的时候Transformer的Encoder和Decoder是成对出现的 {: .align-caption style=“text-align:center;font-size:smaller”} Transformer编码器处理输入序列(例如句子),并将其转换为一组隐藏表示,以捕获序列的含义。编码器由一堆相同的层组成,每个层对输入序列应用自注意力机制和前馈神经网络。 另一方面,Transformer解码器基于编码器产生的隐藏表示生成输出序列。它也由类似的层堆叠组成,但每个层还关注编码器产生的隐藏表示,以包含输入序列的信息。解码器还使用自注意力机制以自回归方式生成输出序列,这意味着它逐个标记地生成,条件是它已经生成的标记。 总之,虽然transformer架构中的编码器和解码器都使用自注意力机制和前馈神经网络,但编码器处理输入序列,解码器通过关注编码器产生的隐藏表示来生成输出序列。 当下火爆的大语言模型几乎都使用的是decoder only的结构。在知乎有一个问题为什么现在的LLM都是Decoder only的架构?,非常推荐大家阅读。GPT4发布之后,其处理context的能力从3.5的4k一下跃升到32k,不知道openai是不是又加入了encoder。 涌现、Scaling Law和科学炼丹 模型的规模增大无疑是最近AI进步的重要推动力。目前像GPT3.5这样的语言模型包含了1750亿个参数,相比于人脑中的神经连接其实还小了差不多一个数量级。模型的大小和其能力的关系实际是一个非常有指导意义的值得研究的问题。 涌现(emergent abilities)是在2022年中的论文Emergent Abilities of Large Language Models 提出的概念,是指在大模型中出现的而在小模型里没有出现的能力,用咱们熟悉的话说就是"量变引起质变",而且这种现象是不可预测的。这种不可预测性给模型的开发带来了很大的麻烦,因为训练一个100B以上的模型成本是非常高昂的。这篇论文里列举了好几个任务里涌现的案例。 Emergence is when quantitative changes in a system result in qualitative changes in behavior. –Nobel prize-winning physicist Philip Anderson {: .align-center style=“width:80%”} Few-shot任务里体现出来的涌现现象 {: .align-caption style=“text-align:center;font-size:smaller”} 实际上,早在几年前人们就训练过巨大的模型,但那时候并没有出现现在这么强的模型。例如可能是世界上最喜欢大模型的公司Nvidia,在2022年训练过一个530B的超大模型MT-NLG,但可能知道这个模型的人都很少。Deepmind的论文Training Compute-Optimal Large Language Models讨论了这个问题,并给出了结论:之前的模型都训练不充分,把数据量提上去小模型也会有大能力。还给出了一套算力消耗一定的情况下合理分配模型规模和训练数据多少的方法论。 {: .align-center style=“width:80%”} 典型的大模型参数量及训练数据量,Chinchilla参数少得多但性能更强 {: ....

March 25, 2023 · 2 min · Yuanhao

[大模型补课]模型训练关键工具包

前情提要: [大模型补课]当代AI的基石数据集 [大模型补课]当代语言模型的评价体系 [大模型补课]模型及训练方法 这是大模型补课的第四篇文章,主要关注模型背后的训练工具。 并行:大模型训练的必要手段 如果你使用过多张GPU训练模型,那应该对并行不陌生。最基本并行方式有以下两种 DataParallel数据并行(DP)。这也是最常用并行方法,在pytorch里有DP和DDP两种原生方式,使用起来都很方便。这种并行方式最好理解,模型在每个worker上都有完整的一份,只是给他们喂的数据不同。在每个worker算完后,需要一个同步过程,来综合大家的梯度信息,再更新模型。数据并行主要解决训练速度的问题,可以在单位时间内学习更多的样本。 ModelParallel模型并行(MP)。模型并行指的是把模型分拆到多个GPU上,主要解决模型太大而无法放到一个GPU上的问题。以目前爆火的大规模语言模型为例,一个175B的GPT模型,整个载入的话需要 $$175*10^9$$ 个参数,每个参数用4个字节,则需要700G的存储空间,目前没有听说过哪个GPU可以放得下,只能把一个模型放到好几张卡上。模型的拆法也有多种,可以把不同层放不同卡,这种称为垂直拆分;也可以在同一层也拆开,这种被称为水平拆分。 以下再介绍几个模型并行的细分方法。 TensorParallel张量并行(TP)。每个张量被分成多个块,因此不是整个张量驻留在单个 GPU 上,而是每个张量片段驻留在其指定的 GPU 上。在处理期间,每个片段在不同的 GPU 上分别并行处理,结果在步骤结束时进行同步。这就是所谓的水平并行,因为拆分发生在水平层面上。 PipelineParallel流水线并行(PP)。模型在多个 GPU 上垂直(层级)拆分,因此仅将模型的一个或几个层放置在单个 GPU 上。每个 GPU 并行处理管道的不同阶段,并处理一小批数据。流水线并行的主要问题是因为前后依赖而带来的GPU等待(下图中的Bubble区域),这个问题通常用更小批量的数据来缓解。 现代化的并行训练方法以上几种并行方法的有机组合,也就是传说中的三维并行(DP+TP+PP)。 有关并行的介绍,推荐阅读Huggingface的这篇文档。 Megatron-LM 提到模型并行,不得不提的软件包是英伟达的Megatron-LM。但实际在这个开源大模型日新月异的今天,需要使用这个库的人也是很少的。这里根据论文介绍一下他的原理,还是挺有趣的。 目前的语言模型领域,Transformers结构已经是绝对的主流,在这种结构里,主要有两种building block,一个是多层感知机MLP,另一个是自注意机制。 全连接层可以理解为矩阵乘法 $$Y=XA$$ ,其中 $$A$$ 是参数。第一种并行法是把这个参数按行来分割,而把输入按列分割,假设分成两个小矩阵 $$X=[X_1, X_2],A=[\begin{matrix}A_1\A_2\end{matrix}]$$ 这样 $$Y=X_1A_1+X_2A_2$$ ,如果全连接后面跟一个非线性激活函数,例如GeLU,那么会遇到下面的问题 $$GeLU(XA)\ne GeLU(X_1A_1+X_2A_2)$$ 所以只能把A按照列分为 $$[A_1, A_2]$$ ,这样可以得到 $$Gelu([Y_1,Y_2])=[GeLU(XA_1), GeLU(XA_2)]$$ 整个过程可以用下图表示 自注意力机制的并行方法是MLP的扩展,具体的说就是把多个注意力头分到不同的GPU去执行。 上面只是一些模型并行(准确的说是张量并行)的基本思路。并行的时候除了考虑减少单个显卡显存的使用,还要权衡额外产生的通信负担,是个很有意思的领域。我也了解不多,感兴趣的读者可以自己再读一些资料。 在Megatron论文里,他们合并使用了数据并行和张量并行,从而实现快速训练大模型的目标。 We efficiently trained transformer based models up to 8.3 bil- lion parameter on 512 NVIDIA V100 GPUs with 8-way model parallelism and achieved up to 15....

March 25, 2023 · 2 min · Yuanhao

Logistic Regression: A Beginner's Guide

Logistic Regression is a statistical method used to analyze the relationship between a categorical dependent variable and one or more independent variables. It is widely used in machine learning and predictive modeling for binary classification problems. In this article, we will discuss the basics of logistic regression and its mathematical formulation. Binary Classification Binary classification is a type of classification problem in which the output variable can take only two possible values, usually represented as 0 or 1....

March 24, 2023 · 2 min · Yuanhao

Linear Regression: Understanding the Basics

Linear regression is a widely-used statistical method for modeling and predicting the relationship between two variables. In essence, it is a technique for finding the best-fitting line through a set of data points. This article provides a beginner-friendly introduction to linear regression and its underlying concepts. What is Linear Regression? Linear regression is a statistical method that models the relationship between a dependent variable (also known as the response variable) and one or more independent variables (also known as predictors)....

March 23, 2023 · 3 min · Yuanhao

基础量化策略

以下是一些基本的量化投资策略,它们使用数学模型和算法分析数据并做出投资决策: 价值投资:该策略涉及寻找低市盈率(P/E)或低市净率(P/B)的被低估股票。价值投资者相信市场有时会低估好公司,以折扣购买这些股票可能会带来长期收益。 成长投资:该策略涉及投资于具有高增长潜力的公司,其收益增长率或其他指标证明。成长投资者相信这些公司将继续以比整个市场更快的速度增长,从而在长期内导致股价上涨。 动量投资:该策略涉及购买最近表现良好的股票,出售最近表现差的股票。动量投资者相信股票价格的趋势在短期内将继续,从而导致盈利交易。 统计套利:该策略涉及使用统计模型来识别相关证券的错误定价,然后在这些错误定价上进行交易。例如,统计套利者可能寻找两个价格高度相关的股票在价格上暂时发生分歧的情况,然后打赌价格最终会再次收敛。 风险平价:该策略涉及将投资资本分配到不同的资产类别中,以平衡风险。风险平价投资者相信在不同风险档案的资产类别之间进行分散投资(如股票、债券和商品)可以带来比仅投资于股票或债券更好的风险调整回报。 品质投资:该策略涉及投资于拥有强大资产负债表、稳定收益和低负债股本比率的高品质公司。品质投资者相信这些公司更有可能经受住经济衰退并在长期内产生稳定的回报。 这些只是一些量化投资策略的例子。每种策略都有其优点和缺点,投资者在选择要跟随的策略之前应仔细考虑其投资目标和风险承受能力。

March 22, 2023 · 1 min · Yuanhao

美联储加息周期中一般什么行业的股票会表现更好

美联储加息周期中一般什么行业的股票会表现更好 一般而言,在美联储加息周期中表现良好的行业是那些对利率敏感性较低的行业。这些行业包括: 医疗保健:无论经济情况如何,人们都需要医疗服务,因此医疗保健公司通常对利率变化不太敏感。 消费品:生产食品、家居产品和个人护理用品等消费品的公司在利率上涨期间也往往表现良好,因为人们会继续购买这些基本物品,不受经济条件的影响。 技术:技术公司往往具有高增长潜力,并且不太依赖借贷或利率,因此对利率上涨不太敏感。 公用事业:提供电力和水等基本服务的公司也不太受利率上涨的影响,因为这些服务是不可或缺的,无论经济条件如何。 另一方面,在利率上涨周期中表现不佳的行业是那些对利率敏感性较高的行业。这些行业包括: 金融:银行和其他金融机构在利率上涨周期中通常会遭受损失,因为他们的借贷成本增加,从而减少了利润。 房地产:更高的利率使抵押贷款更加昂贵,降低了房地产的需求,可能导致房价下跌。 能源:能源公司通常需要大量资本来投资基础设施和勘探,而利率上升可能会增加他们的借贷成本,降低利润。 需要注意的是,股票表现受到许多因素的影响,利率只是其中之一。因此,在做出任何投资决策之前进行全面的研究和分析是至关重要的。 加息幅度和市场市盈率或价格中枢间有没有量化关系 有证据表明,利率上升与市场市盈率或股价水平之间存在量化关系,尽管这种关系很复杂,可能取决于各种因素。 一般而言,当利率上升时,未来收益和现金流的现值可能会降低,从而导致市场市盈率和股价下降。然而,其他因素也会影响股价,例如公司特定因素、经济增长前景和市场情绪。 一个常用的衡量利率与股价之间关系的指标是盈利收益率,它是市盈率的倒数。盈利收益率衡量了公司股价相对于其收益的收益率,并可与政府债券收益率进行比较。当利率上升时,债券收益率往往会增加,使其相对于股票更具吸引力,这可能导致股价下降。 总的来说,虽然利率上升与市场市盈率或股价水平之间可能存在量化关系,但这种关系很复杂,可能取决于许多因素。在做出任何投资决策之前进行全面的研究和分析是至关重要的。 当从加息周期转为降息周期时,通常什么行业的股票会率先上涨 当利率上升周期转变为降息周期时,对利率敏感度最高的行业往往会最先表现良好。这些行业包括: 金融业:银行和金融机构往往受益于较低的利率,因为它们可以以更便宜的利率借入资金,然后以更高的利率贷出资金,从而增加其利润率。 房地产业:房地产公司和房屋建筑商可以从较低的利率中受益,因为它可以使人们更容易和更实惠地购买房屋,从而增加房屋需求。 消费周期股:这些是销售非必需品和服务的公司,如零售、旅游和娱乐公司。较低的利率可以提振消费支出,从而使这些公司受益。 公用事业:公用事业公司往往受益于较低的利率,因为它们往往有较高的债务,较低的利率可以降低其借款成本。 需要注意的是,这些行业的表现还可能取决于其他因素,如整体市场情况、经济增长和公司特定因素。投资者在做出任何投资决策之前,应进行全面的研究和分析。

March 21, 2023 · 1 min · Yuanhao

大规模语言模型的评价方法

上一篇文章介绍了大模型是用什么数据训练的,这一篇文章重点来看大模型的评价方法。Chatgpt这轮出圈很大原因是对话这种评价方式非常直观,普通大众就可以从对话质量看出来现在的模型比之前的"人工智障"要强很多。但真正开发大模型肯定不能用这种方式,不仅效率低、价格高,还存在不小的主观因素。这篇文章就来总结一下大模型的评价方式。 还是先来看LLaMA论文里使用的评价指标。LLaMA里一共使用了**20种数据集(或任务)**来评估和对比模型。这些任务可以分为两大设定:零样本任务和少样本任务,涵盖以下几个大类 常识推断 闭卷问答 阅读理解 数学推理 代码生成 大规模多任务语言理解 下面一一来看。 常识推断 这个任务用了8个数据集,分别是BoolQ、PIQA、SIQA、HellaSwag、WinoGrande、ARC easy, ARC challenge和OpenBookQA。不同数据集有不同的形式,包括填空、威诺格拉德模式挑战(英语:Winograd Schema Challenge,缩写WSC)、多选问答。这些数据集在评价中都属于零样本,就是让模型通过预训练来直接回答问题。 一个威诺格拉德模式的例子为:“ 市议会拒绝给示威者颁发许可,因为他们[担心/宣扬]暴力。 ” 当这句陈述中使用“担心”一词时,前面的“他们”指的是市议会。而当使用“宣扬”一词时,“他们”所指的则变成了示威者。人类通过常识可以很简单地看出两种情况下“他们”所指分别为何,但对于机器而言这个问题则十分困难。 {: .align-center style=“width:80%”} 不同模型常识推断结果比较。​这种常识问题现在的模型基本都能对个​六成以上。 {: .align-caption style=“text-align:center;font-size:smaller”} 闭卷问答 这个任务包括两个数据集Natural Questions和TriviaQA。所谓闭卷,是相对于数据集原来的设定来说的。已Natural Questions为例,原来的设定是模型可以访问相关维基百科文本,然后根据百科内容回答问题。然而在评价大语言模型的时候,就不给看这个维基页面了。闭卷问答包括zero shot和few shot两种设定。zero shot很好理解,跟上面的常识推断很像,下面是论文附录里few shot的例子,实际上就是列几个问答对作为context。我目前还不太懂这种无关问答对对模型回答问题有什么帮助。 Context → Answer these questions: Q: Who sang who wants to be a millionaire in high society? A: Frank Sinatra Q: Who wrote the book the origin of species? A: Target -> Charles Darwin 阅读理解 阅读理解和前面提到的开卷问答有一点像。只是常见的阅读理解数据集用于支撑问题回答的背景材料比较短(相比于NQ里的维基页面)。在LLaMA论文里,使用的是RACE数据集,这个数据集对于做过阅读理解的朋友一定不陌生,是为初高中中文学生设计的英语阅读理解题。...

March 1, 2023 · 1 min · Yuanhao

如何使用ChatGPT算命

可能是网站slogan:AI算命,朋克养生的关系,最近我看google search console后台总是有很多"Chatgpt算命"这个查询导致的网站展现。 既然大家有这个需求,我就实践SEO里面的方法,上网搜索了一下如何使用chatgpt算命,总结在这个文章里。 好多chatgpt算命的查询 {: .align-caption style=“text-align:center;font-size:smaller”} 基本上,这要用到chatgpt的**“角色扮演”**功能,让它站在算命者的角度回答你的问题。 先从英文开始,英文里算命先生叫做fortune teller,那么我们可以这么问chatgpt Act like a coffee fortune teller, I can see a cat shape in the corner of the cup, what is its meaning? 翻译成中文就是: 像个算命先生一样回答我,我在杯子的角落看到了一个猫的形状,这意味着什么? 英文版的回答是 The cat shape in the corner of your cup is a sign of good luck and protection. It is a reminder to stay alert and to be aware of any potential danger or obstacles that may arise in your life....

February 28, 2023 · 1 min · Yuanhao