1980|4

223

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

《大语言模型开发:用开源模型开发本地系统》-Llama模型实现及本地开发 [复制链接]

本帖最后由 ljg2np 于 2024-12-6 16:46 编辑

        本文分享书中对“如何实现Llama模型及本地化开发”的阅读理解。

一、引言

        LLM的实现基于DNN学习原理,而对于隐藏层的设计大多采用Transformer架构,通过耗费大量的算力进行训练得到预训练模型,区别之处在于数据集选择、参数规模、神经网络架构设计,最后对模型进行测试集检验,通过模型评估进一步优化和检验。

        Llama是基于Transformer的人工神经网络,以一系列单词作为输入,递归的预测下一个单词来生成文本。

        Llama模型作为开源模型,与闭源的GPT4还有一些差距,但相较于开源的GPT3显现出了明显的技术和性能优势,为我们学习和研究NLP技术提供了平台。

二、Llama模型的设计与实现

        书中对Llama模型的实现,从LLM的开发角度进行了阐述,没有展示过多详细的技术细节,但可以让人对Llama模型的设计与实现有一个比较全面和系统的认识。概括起来,主要包括如下几个方面:

        1、语料库

        Llama预训练数据集的选择,采用了24种语言的语料库,并尽力避免和删除私有语料集。

        

  

        2、模型组成

        Llama按照LLM的一般架构进行拆分,可分为预训练模型、增量模型和微调模型,满足LLM开发和应用的灵活性,并提供了多个版本,见下表。

        

  

        Llama-chat模型是在Llama预训练模型基础上经过监督微调后推出的应用模型。

        3、架构与技术实现。

        Transformer模型是Llama模型的核心技术实现,通过该模型对公开的数据集进行预训练,可以得到Llama预训练大模型。

        通过Transformer模型加载Llama预训练大模型,就可以进入应用环节,对用户的输入进行处理,可以实现NLP的既定应用。

        Meta公布的Llama模型的Python代码中,可以看到具体的实现细节,Llama2 7B采用32个Transformer层和前馈网络层,激活函数采用SwiGLU,采用分组注意力机制,是基于PyTorch架构编写和实现的。

        前文《transformer架构与实现》曾介绍了Llama2  7B模型的Transformer架构和内部运作机理,并对其基于PyTorch的实现代码进行了讲解,这里不再重复。

        4、参数量计算。

        参数量指模型中可学习参数的总数,在LLM中,参数量的计算取决于模型的架构。

        Llama2 7B的上下文长度为4096,参数指标见下表:

       

  

       用Hugging Face的Transformers模块可以读取模型中的参数量:

       

  

        5、Llama2权重文件夹。

        模型格式是模型的对外接口,Meta发布Llama2时提供了两种格式,分为pth格式和hf格式。

        pth格式是PyTorch中用于保存模型参数和优化器状态的文件格式,可以使用torch.save函数来加载和保存。

        Hugging Face的模型权重文件格式已成为LLM的标准,包括Llama模型在内,几乎所有的LLM都有hf格式存在,可以通过Transformers库读取hf格式的模型结构,代码如下:

        

  

        6、模型评估标准

        模型评估是模型开发过程中的重要环节,对模型的选择、优化、理解和应用有重要作用。

        LLM有两种常用的评估方法:自动评估和人工评估。

        书中介绍了测评指标和测评模型,其中通义千问模型Qwen-72B在多个中英文下游评测任务上,效果超越现有的开源模型,下图是通义千问给出的模型测试分数比较图。

        

  

三、Llama模型开发本地系统

        Llama开源模型的实现,为本地开发提供了工具和接口,书中以中文私人定制为例,解析了用Llama模型开发本地系统的实现过程和方法。实现架构图如下:

        

  

        左侧黄色方框内的部分,是处理中文的LoRA增量模型开发,右侧蓝色方框内是处理私有语料的监督微调模型开发部分。

        具体实现过程:

        1、对于中文,通过中文语料,采用LoRA的训练方法得到增量模型,LoRA模型属于系统微调,是有监督学习,其与预训练模型结合构成中文完整模型,如下图中蓝框所示。

        

  

        2、私人定制,采用私人语料库通过监督微调的训练方法来更新模型参数,得到监督微调模型,它在中文完整模型上进行训练,如下图所示。

        

  

        总结起来,中文私人本地系统的开发流程图如下:

        

     

四、技术细节及第三方应用

        通过Transformer模型加载Llama预训练大模型,就可以进入模型推理的应用环节。通过对用户的输入进行处理,可以实现NLP的既定应用功能。

        1、Hugging Face开发者社区

        Hugging Face是一个流行的NLP模型和工具库的开发者社区。

        Hugging Face的datasets库,是一个用于管理和处理各种数据集的工具库,它提供了一个统一的接口,简化了数据集的处理流程,使开发者可以更专注于模型的开发和训练。

        Hugging Face Transformers库,提供了一些预训练模型,如Llama、BERT、GPT2等,可以用来进行模型训练、推理。借助于Transformers库,通过导入需要的模块,就可以方便的进行量化和分词处理。

        

  

        Hugging Face 提供了PEFT(参数高效微调)库,集成了LoRA,支持基础模型和LoRA模型同时加载,可以用来完成增量模型和模型微调的处理。

        

  

        2、开源微调数据集

        监督微调在选择预训练模型后,需要准备面向任务的有针对性的微调数据集,这个数据集通常由人工撰写,需要有标签,数量不需要很多,书中给出了一些开源微调数据集。

        

  

        3、模型接口API

        Llama模型的加载:

        导入Transformers库里的LlamaTokenizer模块,通过调用from_pretrained()方法,实现Llama基础模型的加载。

        利用PEFT库,加载多个LoRA并随时切换:

        

  

        加载第一个适配器,通过PeftModel.from_pretrained()方法,继续加载使用load_adapter()方法;切换适配器,使用PeftModel的set_adapter()方法。

        4、第三方应用示例。

        采用第三方工具,加载Llama chat模型(这里是Llama3模型),实现对话,如图所示。

        

  

        

  

五、小结与讨论

        通过这一主题的学习,我了解了Llama模型的设计与实现需要考虑的问题及着手点,加深了Llama模型内部实现机理的学习,掌握了利用Llama模型开发本地系统的方法和步骤,即分析需求,确定架构,准备语料库,本地监督微调和评估优化。

 

推荐阅读和参考资料:1、LoRA增量模型。

2、CLLM2模型。

 

 

最新回复

 Llama是基于Transformer的人工神经网络,这个 Llama模型开发本地系统的方法和步骤看来很复杂。     详情 回复 发表于 2024-12-7 10:54
点赞 关注

回复
举报

6802

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

 Llama是基于Transformer的人工神经网络,这个 Llama模型开发本地系统的方法和步骤看来很复杂。

 

点评

嗯,是的,具体到实现的各个技术细节会比较复杂。  详情 回复 发表于 2024-12-7 12:14
 
 

回复

223

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
Jacktang 发表于 2024-12-7 10:54  Llama是基于Transformer的人工神经网络,这个 Llama模型开发本地系统的方法和步骤看来很复杂。 ...

嗯,是的,具体到实现的各个技术细节会比较复杂。

 
 
 

回复

223

帖子

2

TA的资源

一粒金砂(高级)

4
 

GPT3一经发布便引起业界哗然,可以说代表着LLM发展到了一个新的水平,但是继开源的GPT2之后,OpenAI并未将GPT3开源,而是通过提供API的方式(偏向商业化运营模式)服务于应用;开源的Llama模型在性能上可以比肩GPT3,且算力资源和成本消耗降低,逐渐成为LLM研究的热点和主要分析对象。

 
 
 

回复

223

帖子

2

TA的资源

一粒金砂(高级)

5
 

GPT5研发疑受阻,参见AI快讯:

https://m.eeworld.com.cn/bbs_thread-1302590-1-1.html

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表