大模型那么火,教你一键modelarts玩转开源llama(羊驼)大模型-4008云顶国际网站

举报
码上开花_lancer 发表于 2023/12/13 17:57:52 2023/12/13
【摘要】 近日,开发者群体正热议一款基于开源模型更换张量(tensor)名字的话题。研究者认为零一万物近期发布的yi-34b 模型基本上采用了 llama 的架构,只是重命名了两个张量。llama(羊驼)这个大模型再次冲上热搜!llama(large language model meta ai),由 meta ai 发布的一个开放且高效的大型基础语言模型,共有 7b、13b、33b、65b(650 ...

近日,开发者群体正热议一款基于开源模型更换张量(tensor)名字的话题。研究者认为零一万物近期发布的yi-34b 模型基本上采用了 llama 的架构,只是重命名了两个张量。llama(羊驼)这个大模型

再次冲上热搜!

llama(large language model meta ai),由 meta ai 发布的一个开放且高效的大型基础语言模型,共有 7b、13b、33b、65b(650 亿)四种版本。其数据集来源都是公开数据集,无任何定制数据集,保证了其工作与开源兼容和可复现,整个训练数据集在 token 化之后大约包含 1.4t 的 token。关于模型性能,llama 的性能非常优异:具有 130 亿参数的 llama 模型「在大多数基准上」可以胜过 gpt-3( 参数量达 1750 亿),而且可以在单块 v100 gpu 上运行;而最大的 650 亿参数的 llama 模型可以媲美谷歌的 chinchilla-70b 和 palm-540b。

上篇文章有介绍了llama 所采用的transformer 结构和细节,与之前所介绍的transformer架构不同的地方包括采用了前置层归一化(pre-normalization)并使用rmsnorm 归一化函数(normalizing function)、激活函数更换为swiglu,并使用了旋转位置嵌入(rop),整体transformer架构与gpt-2 类似,如图1.1所示。

图1.1 gpt-2 模型结构


关于训练集,其来源都是公开数据集,无任何定制数据集,保证了其工作与开源兼容和可复现。整个训练数据集在 token 化之后大约包含 1.4t 的 token。其中,llama-65b 和 llama-33b 是在 1.4万亿个 token 上训练的,而最小的模型 llama-7b 是在 1万亿个 token 上训练的。llama 优势在于其只使用公开可用的数据,这可以保证论文的工作与开源兼容和可复现。之前的大模型要么使用了不公开的数据集去训练从而达到了 state-of-the-art,如 chinchilla、palm 或 gpt-3;要么使用了公开数据集,但模型效果不是最佳无法和 palm-62b 或 chinchilla 相竞争,如 opt、gpt-neox、bloom 和 glm。

和 gpt 系列一样,llama 模型也是 decoder-only 架构,但结合前人的工作做了一些改进,比如:

  1. pre-normalization [gpt3]. 为了提高训练稳定性,llama 对每个 transformer 子层的输入进行归一化,使用 rmsnorm 归一化函数,pre-normalization 由zhang和sennrich(2019)引入。
  2. swiglu 激活函数 [palm]. 将 relu 非线性替换为 swiglu 激活函数,且使用2/3*4d而不是 palm 论文中的 4d,swiglu 由 shazeer(2020)引入以提高性能。
  3. rotary embeddings [gptneo]. 模型的输入不再使用 positional embeddings,而是在网络的每一层添加了 positional embeddings (rope),rope 方法由su等人(2021)引入。

不同模型的超参数详细信息在表2中给出,具体可以去看看我上篇文章,

具体怎么在华为云的modelarts上玩转llama开源大模型呢?

1.登录:

点击右上角“控制台”,搜索栏输入“modelarts”

点击“ai gallery“,选择“北京四”区域,


点击"资产集市--notebook",输入“mindformers应用之llama_7b推理应用

点击“run in modelarts”,进入,


� /home/ma-user/work
!git clone -b r0.6 https://gitee.com/mindspore/mindformers.git


cloning into 'mindformers'...
remote: enumerating objects: 21732, done.
remote: counting objects: 100% (437/437), done.
remote: compressing objects: 100% (330/330), done.
remote: total 21732 (delta 262), reused 190 (delta 107), pack-reused 21295
receiving objects: 100% (21732/21732), 37.74 mib | 3.73 mib/s, done.

编译代码

� mindformers
!bash build.sh
� ..
/home/ma-user/work/mindformers
---------------- mindformers: build start ----------------
running bdist_wheel
running build
running build_py
creating build/lib/mindformers
copying mindformers/__init__.py -> build/lib/mindformers
copying mindformers/auto_class.py -> build/lib/mindformers
copying mindformers/mindformer_book.py -> build/lib/mindformers
creating build/lib/mindformers/core
copying mindformers/core/__init__.py -> build/lib/mindformers/core
copying mindformers/core/clip_grad.py -> build/lib/mindformers/core
copying mindformers/core/parallel_config.py -> build/lib/mindformers/core
creating build/lib/mindformers/dataset
........


� /home/ma-user/work/mindformers
import moxing as mox
mox.file.copy_parallel('obs://modelarts-labs-bj4-v2/case_zoo/mindfomer_llama/', 'checkpoint_download/llama')

3.推理-使用pipeline接口开启快速推理


from mindformers.pipeline import pipeline
pipeline_task = pipeline("text_generation", model='llama_7b', max_length=20)
pipeline_result = pipeline_task("i love beijing, because", top_k=3)
print(pipeline_result)



- 当我输入提示词:



 
   text_generation_text': i love beijing, because



通过llama_7b模型推理可以快速输出:



  ['i love beijing, because it is a city that is constantly changing.\ni love the city']


赶紧来点击试一试,体验下自己写代码调用的魅力吧!!



【4008云顶国际集团的版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200