Meta AI 为什么会开源 Llama2 呢?

- 341 个点赞 👍
karpathy大神一个周末训练微型LLaMA 2,并移植到C语言。他把这个项目叫做Baby LLaMA 2
大神仅花一个周末训练微型LLaMA 2,并移植到C语言。推理代码只有500行,在苹果M1笔记本上做到每秒输出98个token。作者是OpenAI创始成员Andrej Karpathy,他把这个项目叫做Baby LLaMA 2(羊驼宝宝)
虽然它只有1500万参数,下载下来也只有58MB,但是已经能流畅讲故事。
所有推理代码可以放在C语言单文件上,没有任何依赖,除了能在笔记本CPU上跑,还迅速被网友接力开发出了各种玩法。llama.cpp的作者Georgi Gerganov搞出了直接在浏览器里运行的版本
提示工程师Alex Volkov甚至做到了在GPT-4代码解释器里跑Baby LLaMA 2。
据Karpathy分享,做这个项目的灵感正是来自llama.cpp。训练代码来自之前他自己开发的nanoGPT,并修改成LLaMA 2架构。推理代码直接开源在GitHub上了,不到24小时就狂揽1500+星。
训练数据集TinyStories则来自微软前一阵的研究。
2023新视野数学奖得主Ronen Eldan、2023斯隆研究奖得主李远志联手,验证了1000万参数以下的小模型,在垂直数据上训练也可以学会正确的语法、生成流畅的故事、甚至获得推理能力。
最初,在CPU单线程运行、fp32推理精度下,Baby LLaMA 2每秒只能生成18个token。在编译上使用一些优化技巧以后,直接提升到每秒98个token。
有人提出,现在虽然只是一个概念验证,但本地运行的语言模型真的很令人兴奋。虽然无法达到在云端GPU集群上托管的大模型的相同功能,但可以实现的玩法太多了。
在各种优化方法加持下,karpathy也透露已经开始尝试训练更大的模型,并表示:70亿参数也许触手可及。
发布于 2023-07-25 11:39・IP 属地上海查看全文>>
说法与您零距离 - 43 个点赞 👍
1、Meta做了一个艰难的决定。ChatGPT捷足先登,想扳回很难了,再说LLaMA2是个模型,对标的是gpt3.5或gpt4那样的模型,并不是像ChatGPT那样的一个产品,从模型到产品之间还有很多步,追赶太困难了
2、与其那样追赶,还不如做大语言模型界的Android,其实这个目的也达到了,短短几个月,有多少带“驼”的微调大模型百模齐放啊,但基础模型核心的东西还是Meta在掌握
3、商业上的考虑,与其合作的居然有ChatGPT的金主Microsoft,这说明两家都想促进云算力的推广,毕竟不是所有人都能买得起4块A100开始微调的,GPU用微软云也是很多人的一个选项
发布于 2023-07-20 22:10・IP 属地宁夏查看全文>>
小五哥 - 42 个点赞 👍
LLaMA-2 一经发布,开源 LLM 社区提前过年,热度居高不下。其中一个亮点在于随 LLaMA-2 一同发布的 RLHF 模型 LLaMA-2-chat。
LLaMA-2-chat 几乎是开源界仅有的 RLHF 模型,自然也引起了大家的高度关注。但 LLaMA-2-chat 美中不足的是不具备中文能力。尽管有些时候可以通过 prompt 的方式让 LLaMA-2-chat 讲一些中文,但大多数的情况下,LLaMA-2-chat 会固执地讲英文。
像模像样的中文回答 固执地讲英文 此外,LLaMA-2-chat 还具备了过高的“道德感”,有些时候让我觉得没那么有趣。
父亲亲吻女儿在 LLaMA-2-chat 看来也是违反道德的 好久没做 weekend project 了,那么,让我们来 fine-tune 自己的 LLaMA-2 吧!按照下面的步骤,我们甚至不需要写一行代码,就可以完成 fine-tunning!
第一步:准备训练脚本
很多人不知道的是,LLaMA-2 开源后,Meta 同步开源了 llama-recipes 这个项目,帮助对 fine-tune LLaMA-2 感兴趣的小伙伴更好地 “烹饪” 这个模型。
第二步:准备数据集
这一步我采用了GuanacoDataset。这个数据集有两个特点:
- 多语言支持。我没有选择一个纯中文的数据集,因为我希望模型不要只会说中文。我希望模型英文指令下还是能够以英文进行回复。
- alpaca 格式。这一点可以省去我重新组织数据集的时间。
GuanacoDataset 中包含了若干个文件:
GuanacoDataset 一览 由于我想要模型具备的是遵循指令的能力,于是选择了
guanaco_non_chat-utf8.json
。不过后来发现模型收敛速度很快,可能guanaco_non_chat_mini_52K-utf8.json
会是一个更节省时间的选择。我们把
guanaco_non_chat-utf8.json
放到llama-recipes/ft_datasets
下,并重命名为alpaca_data.json
。训练时我们将训练集指定为alpaca_dataset
,llama-recipes
将会自动找到这个文件。至此,数据集准备完成 :)
第三步:准备模型
首先,下载 Hugging Face 格式的权重。下载之前记得去 Hugging Face 申请 LLaMA-2 的权重并生成自己的 Access Token。
申请通过后的页面 点击 access tokens 有了模型权重的访问权限后,我们就能快乐地下载模型啦。我这里为了缓存到本地的指定目录,使用了 huggingface_hub.snapshot_download 来下载权重:
In [1]: import huggingface_hub In [2]: huggingface_hub.snapshot_download( "meta-llama/Llama-2-7b-hf", local_dir="/path/to/Llama-2-7b-hf", token="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" )
如果追求极致的零代码,你也可以使用 git 来下载模型 :)
第四步:启动训练
我用了一块 3090Ti 24GB 进行训练。由于
llama-recipes
内置了对 alpaca 格式的处理,训练命令为:export CUDA_VISIBLE_DEVICES=0 screen -L -Logfile screen.log \ python llama_finetuning.py --use_peft \ --peft_method lora \ --quantization \ --model_name /path/to/Llama-2-7b-hf \ --output_dir /path/to/lora \ --dataset alpaca_dataset \ --batch_size_training 40 \ --num_epochs 1
与官方提供的命令不同之处在于:
- 在
screen
中运行并留下日志。 - 添加
--dataset
让llama-recipes
能够直接找到并处理我们 alpaca 格式的训练数据。 - 添加
--batch_size_training
充分利用显存,提高训练速度。 - 添加
--num_epochs
仅训练一轮。
而后便是 20 小时的漫长等待 :)
Loss 的下降如下,可以看出模型在 14% (1000/6991)的数据后便基本收敛。
Step(共6991) Loss 1 1.30 100 1.21 500 0.57 1000/6991 0.33 1500/6991 0.35 3000/6991 0.32 最终效果
还记得我们对模型的预期吗?
- 能够讲中文,但英文能力仍然具备。
- 能够遵循指令,完成任务。
让我们来看看效果吧!
这里我偷懒使用了 alpaca-lora 中提供的脚本
generate.py
进行推理,我添加了 repeatition penalty 让模型减少重复:添加 repeatition penalty 启动 web UI:
python generate.py --base_model /path/to/Llama-2-7b-hf --lora_weights /path/to/lora
可以愉快地和我们自己训练出来的 LLaMA-2 玩耍啦!
遵循指令:
能够遵循指令 英文能力还是在线:
英文能力在线 甚至还能讲日文哦:
还能讲日文 不再有过份的道德感:
正常的道德感 总结一下,自己 fine-tune 的 LLaMA-2 效果上肯定远远不如 LLaMA-2-chat。得到的模型往往写不出复杂的中文句式。不过整个过程是很有意思的,最后得到的模型也完美地达到了我们的预期 :)
最后再安利一下我们的模型推理框架 Xinference :Uranus:Xinference: 在个人电脑上玩转LLaMA-2!
发布于 2023-07-27 10:51・IP 属地北京真诚赞赏,手留余香还没有人赞赏,快来当第一个赞赏的人吧!查看全文>>
Uranus - 27 个点赞 👍
一方面为了追赶先进,另一方面为了培植生态以及建设标准。
结合最近几天的开源社区观察,和我们的实际实践来看,一个良好、稍先进于过去,但依旧存在较多问题的模型,已经能够激发社区里许多的开源战士一起共建,让社区朝着更好的方向前进了。(结尾附加例子,干说没啥意思)
一骑绝尘的 LLaMA2 (*商业可用*的、效果不错开源模型哦) 开源是一种成熟的“破局方案”,尤其是在拉长对阵时间线的长期战役中,过往的一些案例:
- MySQL 对弈 Oracle 部分场景是;
- Chromium 对弈 IE 是;
- Android 对弈 iOS 是;
- Linux 对弈各种其他 OS 也是;
- 现在,Llama2 (开源,可商用大模型标杆)对弈 OpenAI + 一众其他的追赶者亦如是。
有技术储备、有耐心的后发者,对于已经积累了非常深厚优势的先行者,想要超越,首先要无限逼近,将优势缩小:开源,将生态做起来,将标准纳入自己的体系,让社区用户跟着你转,然后拉跑先发优势的其他竞争者的用户。
时间拉长,群雄讨伐董卓,自然会演变为鼎足而立的态势,太阳底下没有新鲜事儿,这样的故事已经发生了足够多次,但依旧会继续发生在开源的世界里。
一旦某种开源软件/生态簇拥者众,即使是早期的有优势的寡头,也会不得不迁就这个开源生态,比如做标准妥协(比如浏览器规范反推 w3,从事实标准改 spec),比如软件协议里单独列出的,大家不得不遵守的某些接口(最容易想到的 Google XXX产品 API、AWS S3),甚至变成其他软件默认实现的协议。
在隔壁偏技术的这个问题里,你能看到:
- 在 LLaMA2 模型发布的第二天,就做了 Docker 支持,老大难的部署问题缓解或部分解决了。
- 同一天,用上了社区的简单粗暴的 SFT 中文版本。
- 过了一天,4BIT 量化版出现了,只需要 5GB 显存就能玩了。
- 又过了一天,可以用 CPU 来做推理了。
- 如果你善于搜索,在这个世界的其他的角落里,你会发现还有其他的玩家也在折腾,用生态集成的方式,或者垂直领域在做 finetune 或 lora 化的应用...
就像是有人撒了一把种子在地上,然后浇了水,气温湿热,种子们蓬勃出土
补一个 CPU 跑的欢脱的视频 demo。
再补一个做基础任务替代的 demo。
再再补一个,如果和 code interpreter style 的工具结合。
再再再补一个,没有 GPU?那就用 CPU 来运行 LLaMA2 模型:
感谢真正的开源模型,让上面的一切都能够发生,并且是快速的发生,快速的演进。
编辑于 2023-07-24 00:28・IP 属地北京真诚赞赏,手留余香还没有人赞赏,快来当第一个赞赏的人吧!查看全文>>
苏洋 - 15 个点赞 👍
感觉Meta一开始的时候对大模型本身没有多少重视,LLama一代模型本身没有做微调,开源方式也很抽象,总的态度看起来完全就是管生不管养。结果无心插柳柳成荫,短短半年时间内,开源社区的成果如雨后春笋一样涌出,从微调到中文支持再到本地推理,该有的都有了,一个百花齐放的开源LLM繁荣生态就此诞生。
Meta的反应速度也很快,发现这东西潜力巨大之后紧接着就加大了投入力度,今后继续发展的话羊驼家族很可能将成为LLM界的安卓,成为开源LLM的旗帜
编辑于 2023-07-21 11:27・IP 属地北京查看全文>>
到处挖坑蒋玉成 - 15 个点赞 👍
Meta 的全球事务总裁尼克·克莱格 (Nick Clegg)的解释是[1],开源会让大语言模型更安全、更好。
With the … wisdom of crowds you actually make these systems safer and better and, crucially, you take them out of the … clammy hands of the big tech companies which currently are the only companies that have either the computing power or the vast reservoirs of data to build these models in the first place.
通过众人的智慧,你实际上可以让这些系统更加安全和优秀,并且关键的是,你能将它们从目前只有巨大计算能力或者大量数据储备来构建这些模型的大型科技公司的冰冷的手中解放出来。
另外有一篇文章[2]说的很完整:
作者首先提到,很多公司都会推出开源产品,比如安卓、Chrome(准确地说是 Chromium)、VS Code。作者将大公司进行开源的战略动机归为7类:
- hiring 招聘
- marketing 营销
- go-to-market (complement) 市场推广(补充)
- go-to-market (free-tier) 市场推广(免费版)
- reduce competitor’s moat 削弱竞争对手的护城河
- goodwill 商誉
- standards lobbying 标准游说
至于在 AI 模型领域的开源,有4个更深层次的可能原因:
- You have proprietary data but not enough resources or expertise.
您拥有专有数据,但资源和专业知识不足。 - You want to recruit and retain top researchers.
你想招募和留住顶尖的研究人员。 - You sell hardware or cloud resources.
你销售硬件或云资源。 - You have no distribution but have a breakthrough insight.
你没有分销,但有一个突破性的洞察力。
基于以上关于开源的基础探讨,结合 Llama 2 的具体情况和使用条款,作者认为 Meta 开源 Llama 2 的三个主要原因是:
- 减少竞争对手的护城河。Llama 2对两种竞争对手造成了伤害。第一种是拥有专有模型的公司,如谷歌和OpenAI(与微软有关)。第二种是那些需要自然地建立受众群体的服务堆栈中的任何公司(Meta在其平台上拥有数十亿的用户)。
- 市场推广(免费版或补充)。Llama 2有7b、13b和70b参数大小可供选择。如果我们将这些较小的模型视为“免费增值服务”,您可以围绕Llama 2架构构建基础设施,并在自己的云上尝试,但使用Meta的未来产品,该产品非常庞大或以在线方式保持最新,这是大多数组织无法实现的。
- 市场营销。如果Meta能够正确规划,他们有可能成为一家以前沿技术为基础的公司。谷歌凭借多年的声誉取得了巨大成功——开发者、用户和媒体都对其赞誉有加。Meta在这方面面临着更大的挑战,但总体上的情绪是积极的。
参考
编辑于 2023-07-23 22:22・IP 属地河南查看全文>>
段小草 - 5 个点赞 👍
查看全文>>
放肆 - 3 个点赞 👍
查看全文>>
徐辰 - 1 个点赞 👍
查看全文>>
山风云 - 1 个点赞 👍
开源是为了竞争
免费是最锋利的屠刀……咳咳
好吧,无论如何,这对于小团队是好消息,毕竟对于大团队,不是免费的(有使用量限制)
不管为什么,先学会再说:
一然:退而结网系列—— AI 模型 Llama2 学习(一)
一然:退而结网系列—— AI 模型 Llama2 学习(二)
一然:退而结网系列—— AI 模型 Llama2 学习(三)
一然:退而结网系列—— AI 模型 Llama2 学习(四)
一然:退而结网系列—— AI 模型 Llama2 学习(五)
共同进步~~
编辑于 2023-07-24 00:47・IP 属地北京真诚赞赏,手留余香还没有人赞赏,快来当第一个赞赏的人吧!查看全文>>
一然 - 0 个点赞 👍
llama开源让META尝到了甜头,但因为数据原因,无法开源商用,所以用完全开源数据训练了llama2,训练llama2的目的就是为了完全开源。
谁会是国内的llama2,我觉得创业公司和学校都不太可能,比较资源有限。大厂阿里百度华为也不可能,毕竟他们的大模型已经都发布了,也没开源意思。最可能的我觉的是腾讯。如果腾讯开源其大模型,不用宣传,其和其他大厂高下立判。如果腾讯发布闭源大模型,即使可以让用户通过API随便访问,也不会引起大家兴趣。
之前我已经说过,盘古3.0之后,大家已经不会对国内发布的闭源大模型有任何兴趣了。至于其他厂发布的模型,无论开源闭源,可能都不会引起多大关注。
发布于 2023-07-23 23:25・IP 属地上海查看全文>>
紫竹 - 0 个点赞 👍
大语言模型一出来,ChatGPT这个市场头部就确定了。国内是谁?如果ChatGPT不进来,很可能就是文心一言,不是因为文心一言好,而是他释放的内侧号最多,使用最为广泛,继而,这些应用将逐渐转变为生态,ChatGPT能聊天,能写代码,当然也能帮助购物选品,定酒店机票。
那么,诸如Meta这种后起之秀,地花之秀怎么办?就好像苹果出来了,过几年安卓用开源来破局,这里的MetaAI也是相同策略。你闭源搞成功了,我开源来聚集一波人气,以利益将很多企业绑定到我这个算法生态中来,未来和你争天下。在通用AI领域,实际上最终一定会头部集中,全球可能就是两家大语言模型企业,如今前一个坑已经被OpenAI占了,后一个坑的Meta也想努努力,但实际上,meta会的,谷歌也都会。
发布于 2023-07-23 21:27・IP 属地浙江真诚赞赏,手留余香还没有人赞赏,快来当第一个赞赏的人吧!查看全文>>
纸老虎刀叨忉忉