大模型开发工程师 认证&学习指南· 第 3 / 4 页

🔥 小白零基础 10 分钟 速通实践baseline(2)

个人学习计划(复制到自己的文档中自行填写即可~)
序号 日期 今日目标 今日学习资料 & 学习计划
Day1 8月9日 跑通Baseline并学习大模型开发基础 动手学大模型应用全栈开发
Day2 8月10日 继续学习大模型开发基础并完成认证 动手学大模型应用全栈开发
大模型开发工程师考试入口(电脑端打开)https://www.datawhale.cn/cert/llm-dev/quiz/intro
Day3 8月12日 完成组队 提交作品规则 & Task1案例:智能编程助手
Day4 8月13日 线上头脑风暴 Task2:头脑风暴会Task2:线上Hackathon必知必会
Day5 8月14日 RAG技术原理与实践 Task3:源大模型RAG实战
Day6 8月15日 案例分析 Task3案例:AI科研助手
Day7 8月18日 模型微调技术原理与实践 Task4:源大模型微调实战-知识点文档
··· ··· ··· ···

来精读一下baseline

完整baseline代码

baseline方案设计

2.1 概要设计

baseline基于源大模型的编程能力来解决用户的问题,主要包含一个Streamlit开发的客户端,以及一个部署好浪潮源大模型的服务端。客户端接收到用户请求后,首先进行交互历史拼接,然后输入到服务端的浪潮源大模型,得到模型输出结果后,返回给客户端,用于回复用户的问题。

2.2 详细设计

  1. 导入库: 导入所需要的依赖,包括 transformers,torch 和 streamlit。其中torch 魔搭本身已经安装,transformers 和 streamlit在第二步也安装完毕。
  2. 模型下载:

Yuan2-2B-Mars支持通过多个平台进行下载,包括魔搭、HuggingFace、OpenXlab、百度网盘、WiseModel等。因为我们的机器就在魔搭,所以这里我们直接选择通过魔搭进行下载。模型在魔搭平台的地址为 IEITYuan/Yuan2-2B-Mars-hf。

模型下载使用的是 modelscope 中的 snapshot_download 函数,第一个参数为模型名称 IEITYuan/Yuan2-2B-Mars-hf,第二个参数 cache_dir 为模型保存路径,这里.表示当前路径。

模型大小约为4.1G,由于是从魔搭直接进行下载,速度会非常快。下载完成后,会在当前目录增加一个名为 IEITYuan 的文件夹,其中 Yuan2-2B-Mars-hf 里面保存着我们下载好的源大模型。

《大模型开发工程师 认证&学习指南》 来精读一下baseline 配图 1

  1. 模型加载:

使用 transformers 中的 from_pretrained 函数来加载下载好的模型和tokenizer,并通过 .cuda() 将模型放置在GPU上。另外,这里额外使用了 streamlit 提供的一个装饰器 @st.cache_resource ,它可以用于缓存加载好的模型和tokenizer。

  1. 读取用户输入:

使用 streamlit 提供的 chat_input() 来获取用户输入,同时将其保存到对话历史里,并通过st.chat_message("user").write(prompt) 在聊天界面上进行显示。

  1. 对话历史拼接:

对于 Yuan2-2B-Mars 模型来说,输入需要在末尾添加 <sep>,模型输出到 <eod> 结束。如果输入是多轮对话历史,需要使用 <n> 进行拼接,并且在末尾添加 <sep>。

  1. 模型调用:

输入的prompt需要先经tokenizer切分成token,并转成对应的id,并通过 .cuda() 将输入也放置在GPU上。然后调用 model.generate() 生成输出的id,并通过 tokenizer.decode() 将id转成对应的字符串。最后从字符串中提取模型生成的内容(即 <sep> 之后的字符串),并删除末尾的 <eod> ,得到最终的回复内容。

  1. 显示模型输出: 得到回复内容后,将其保存到对话历史里,并通过st.chat_message("assistant").write(response) 在聊天界面上进行显示。

尝试替换其他Yuan大模型!

8月10日更新:

浪潮信息源大模型上新:Yuan2-2B-July-hf,但由于模型结构修改,暂不支持LoRA~

部分Yuan大模型版本信息表
模型规格 最低GPU显
(推理)
最低GPU显存
(全量微调)
不同版本的 snapshot_download 地址 魔搭上的模型地址
2B 6GB 80GB IEITYuan/Yuan2-2B-Mars-hf https://modelscope.cn/models/IEITYuan/Yuan2-2B-Mars-hf
IEITYuan/Yuan2-2B-July-hf
【暂不支持LoRA】
https://modelscope.cn/models/IEITYuan/Yuan2-2B-July-hf
IEITYuan/Yuan2-2B-Janus-hf https://modelscope.cn/models/IEITYuan/Yuan2-2B-Janus-hf
IEITYuan/Yuan2-2B-Februa-hf-GGUF https://www.modelscope.cn/models/IEITYuan/Yuan2-2B-Februa-hf/files
51B 4*80GB 32*80GB IEITYuan/Yuan2.0-51B-hf https://modelscope.cn/models/IEITYuan/Yuan2.0-51B-hf
102B 8*80GB 96*80GB IEITYuan/Yuan2.0-102B-hf https://modelscope.cn/models/IEITYuan/Yuan2.0-102B-hf

关于大模型应用开发的后续学习

大模型基础so-large-lm

Datawhale开源教程,掌握大模型理论知识!

开源大模型食用指南self-llm

Datawhale开源教程,速通大模型部署&微调!

大模型白盒子构建指南tiny-universe

Datawhale开源教程,围绕大模型全链路的“手搓”大模型指南!

动手学大模型应用开发llm-universe

Datawhale开源教程,一个面向小白开发者的大模型应用开发教程!

大家在本次学习过程中,可以一边将上面推荐的材料作为字典,遇到问题时通过这些材料、大模型、搜索引擎,去翻阅查看,做到理论和实践的结合,真正理解这些理论知识的价值、以及究竟要如何在真实的问题场景中使用。