《书生大模型实战营第3期》基础岛 第1关 :书生大模型全链路开源体系

news2024/9/30 0:29:02

文章大纲

  • 简介
    • 更新
    • 性能
      • 基座模型
      • 对话模型
    • 依赖
    • 使用案例
      • 通过 Transformers 加载
      • 通过 ModelScope 加载
      • 通过前端网页对话
    • InternLM 高性能部署
      • 推理
      • 1百万字超长上下文推理
    • 智能体
    • 微调&训练
    • 评测
      • 标准客观评测
      • 长文评估(大海捞针)
      • 数据污染评估
      • 智能体评估
      • 主观评估
  • 视频课程学习笔记
  • 任务
  • 其他学习内容
  • 参考文献
    • 本人学习系列笔记
      • 第二期
      • 第三期
    • 课程资源
    • 论文
    • 其他参考


简介

官网:

  • https://internlm.intern-ai.org.cn/

github:

  • https://github.com/InternLM/InternLM

InternLM2.5 系列模型在本仓库正式发布,具有如下特性:

  • 卓越的推理性能:在数学推理方面取得了同量级模型最优精度,超越了 Llama3 和 Gemma2-9B。
  • 有效支持百万字超长上下文:模型在 1 百万字长输入中几乎完美地实现长文“大海捞针”,而且在 LongBench 等长文任务中的表现也达到开源模型中的领先水平。 可以通过 LMDeploy 尝试百万字超长上下文推理。更多内容和文档对话 demo 请查看这里。
  • 工具调用能力整体升级:InternLM2.5 支持从上百个网页搜集有效信息进行分析推理,相关实现将于近期开源到 Lagent。InternLM2.5 具有更强和更具有泛化性的指令理解、工具筛选与结果反思等能力,新版模型可以更可靠地支持复杂智能体的搭建,支持对工具进行有效的多轮调用,完成较复杂的任务。可以查看更多样例。

更新

[2024.07.19] 我们发布了 1.8B、7B 和 20B 大小的 InternLM2-Reward 系列奖励模型。可以在下方的 模型库 进行下载,或者在 model cards 中了解更多细节。

[2024.06.30] 我们发布了 InternLM2.5-7B、InternLM2.5-7B-Chat 和 InternLM2.5-7B-Chat-1M。可以在下方的 模型库 进行下载,或者在 model cards 中了解更多细节。

[2024.03.26] 我们发布了 InternLM2 的技术报告。 可以点击 arXiv链接 来了解更多细节。

[2024.01.31] 我们发布了 InternLM2-1.8B,以及相关的对话模型。该模型在保持领先性能的情况下,提供了更低廉的部署方案。

[2024.01.23] 我们发布了 InternLM2-Math-7B 和 InternLM2-Math-20B 以及相关的对话模型。InternLM-Math以较小的尺寸超过了ChatGPT的表现。可以点击InternLM-Math进行下载,并了解详情。

[2024.01.17] 我们发布了 InternLM2-7B 和 InternLM2-20B 以及相关的对话模型,InternLM2 在数理、代码、对话、创作等各方面能力都获得了长足进步,综合性能达到开源模型的领先水平。可以点击下面的模型库进行下载或者查看模型文档来了解更多细节.

[2023.12.13] 我们更新了 InternLM-7B-Chat 和 InternLM-20B-Chat 模型权重。通过改进微调数据和训练策略,新版对话模型生成的回复质量更高、语言风格更加多元。

[2023.09.20] InternLM-20B 已发布,包括基础版和对话版。

模型说明:

目前 InternLM 2.5 系列只发布了 7B 大小的模型,我们接下来将开源 1.8B 和 20B 的版本。7B 为轻量级的研究和应用提供了一个轻便但性能不俗的模型,20B 模型的综合性能更为强劲,可以有效支持更加复杂的实用场景。每个规格不同模型关系如下所示:

  1. InternLM2.5:经历了大规模预训练的基座模型,是我们推荐的在大部分应用中考虑选用的优秀基座。
  2. InternLM2.5-Chat: 对话模型,在 InternLM2.5 基座上经历了有监督微调和 online RLHF。InternLM2.5-Chat 面向对话交互进行了优化,具有较好的指令遵循、共情聊天和调用工具等的能力,是我们推荐直接用于下游应用的模型。
  3. InternLM2.5-Chat-1M: InternLM2.5-Chat-1M 支持一百万字超长上下文,并具有和 InternLM2.5-Chat 相当的综合性能表现。

局限性: 尽管在训练过程中我们非常注重模型的安全性,尽力促使模型输出符合伦理和法律要求的文本,但受限于模型大小以及概率生成范式,模型可能会产生各种不符合预期的输出,例如回复内容包含偏见、歧视等有害内容,请勿传播这些内容。由于传播不良信息导致的任何后果,本项目不承担责任。

补充说明: 上表中的 HF 表示对应模型为 HuggingFace 平台提供的 transformers 框架格式;Origin 则表示对应模型为我们 InternLM 团队的 InternEvo 框架格式。

性能

我们使用开源评测工具 OpenCompass 在几个重要的基准测试中对 InternLM2.5 进行了评测。部分评测结果如下表所示。欢迎访问 OpenCompass 排行榜 获取更多评测结果。

基座模型

BenchmarkInternLM2.5-7BLlama3-8BYi-1.5-9B
MMLU (5-shot)71.666.471.6
CMMLU (5-shot)79.151.074.1
BBH (3-shot)70.159.771.1
MATH (4-shot)34.016.431.9
GSM8K (4-shot)74.854.374.5
GPQA (0-shot)31.331.327.8

对话模型

BenchmarkInternLM2.5-7B-ChatLlama3-8B-InstructGemma2-9B-ITYi-1.5-9B-ChatGLM-4-9B-ChatQwen2-7B-Instruct
MMLU (5-shot)72.868.470.971.071.470.8
CMMLU (5-shot)78.053.360.374.574.580.9
BBH (3-shot CoT)71.654.468.2*69.669.665.0
MATH (0-shot CoT)60.127.946.951.151.148.6
GSM8K (0-shot CoT)86.072.988.980.185.382.9
GPQA (0-shot)38.426.133.837.936.938.4
  • 我们使用 ppl 对基座模型进行 MCQ 指标的评测。
  • 评测结果来自 OpenCompass ,评测配置可以在 OpenCompass 提供的配置文件中找到。
  • 由于 OpenCompass 的版本迭代,评测数据可能存在数值差异,因此请参考 OpenCompass 的最新评测结果。
  • * 表示从原论文中复制而来。

依赖

  • Python >= 3.8
  • PyTorch >= 1.12.0 (推荐 2.0.0 和更高版本)
  • Transformers >= 4.38

使用案例

InternLM 支持众多知名的上下游项目,如 LLaMA-Factory、vLLM、llama.cpp 等。这种支持使得广大用户群体能够更高效、更方便地使用 InternLM 全系列模型。为方便使用,我们为部分生态系统项目提供了教程,访问此处即可获取。

接下来我们展示使用 Transformers,ModelScope 和 Web demo 进行推理。
对话模型采用了 chatml 格式 来支持通用对话和智能体应用。
为了保障更好的使用效果,在用 Transformers 或 ModelScope 进行推理前,请确保安装的 transformers 库版本满足以下要求:

transformers >= 4.38

通过 Transformers 加载

通过以下的代码从 Transformers 加载 InternLM2.5-7B-Chat 模型 (可修改模型名称替换不同的模型)

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2_5-7b-chat", trust_remote_code=True)
# 设置`torch_dtype=torch.float16`来将模型精度指定为torch.float16,否则可能会因为您的硬件原因造成显存不足的问题。
model = AutoModelForCausalLM.from_pretrained("internlm/internlm2_5-7b-chat", device_map="auto",trust_remote_code=True, torch_dtype=torch.float16)
# (可选) 如果在低资源设备上,可以通过bitsandbytes加载4-bit或8-bit量化的模型,进一步节省GPU显存.
  # 4-bit 量化的 InternLM 7B 大约会消耗 8GB 显存.
  # pip install -U bitsandbytes
  # 8-bit: model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True, load_in_8bit=True)
  # 4-bit: model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True, load_in_4bit=True)
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
# 模型输出:你好!有什么我可以帮助你的吗?
response, history = model.chat(tokenizer, "请提供三个管理时间的建议。", history=history)
print(response)

通过 ModelScope 加载

通过以下的代码从 ModelScope 加载 InternLM2.5-7B-Chat 模型 (可修改模型名称替换不同的模型)

import torch
from modelscope import snapshot_download, AutoTokenizer, AutoModelForCausalLM
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm2_5-7b-chat')
tokenizer = AutoTokenizer.from_pretrained(model_dir, device_map="auto", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16)
# (可选) 如果在低资源设备上,可以通过bitsandbytes加载4-bit或8-bit量化的模型,进一步节省GPU显存.
  # 4-bit 量化的 InternLM 7B 大约会消耗 8GB 显存.
  # pip install -U bitsandbytes
  # 8-bit: model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True, load_in_8bit=True)
  # 4-bit: model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", trust_remote_code=True, load_in_4bit=True)
model = model.eval()
response, history = model.chat(tokenizer, "hello", history=[])
print(response)
response, history = model.chat(tokenizer, "please provide three suggestions about time management", history=history)
print(response)

通过前端网页对话

可以通过以下代码启动一个前端的界面来与 InternLM Chat 7B 模型进行交互

pip install streamlit
pip install transformers>=4.38
streamlit run ./chat/web_demo.py

InternLM 高性能部署

我们使用 LMDeploy 完成 InternLM 的一键部署。

推理

通过 pip install lmdeploy 安装 LMDeploy 之后,只需 4 行代码,就可以实现离线批处理:

from lmdeploy import pipeline
pipe = pipeline("internlm/internlm2_5-7b-chat")
response = pipe(["Hi, pls intro yourself", "Shanghai is"])
print(response)

为了减少内存占用,我们提供了4位量化模型 internlm2_5-7b-chat-4bit。可以按照如下方式推理该模型:

from lmdeploy import pipeline
pipe = pipeline("internlm/internlm2_5-7b-chat-4bit")
response = pipe(["Hi, pls intro yourself", "Shanghai is"])
print(response)

此外,可以同步开启 8bit 或者 4bit KV 在线量化功能:

from lmdeploy import pipeline, TurbomindEngineConfig
pipe = pipeline("internlm/internlm2_5-7b-chat-4bit",
                backend_config=TurbomindEngineConfig(quant_policy=8))
response = pipe(["Hi, pls intro yourself", "Shanghai is"])
print(response)

更多使用案例可参考部署指南,详细的部署教程则可在这里找到。

1百万字超长上下文推理

激活 LMDeploy 的 Dynamic NTK 能力,可以轻松把 internlm2_5-7b-chat 外推到 200K 上下文。

注意: 1M 上下文需要 4xA100-80G。

from lmdeploy import pipeline, GenerationConfig, TurbomindEngineConfig

backend_config = TurbomindEngineConfig(
        rope_scaling_factor=2.5,
        session_len=1048576,  # 1M context length
        max_batch_size=1,
        cache_max_entry_count=0.7,
        tp=4)  # 4xA100-80G.
pipe = pipeline('internlm/internlm2_5-7b-chat-1m', backend_config=backend_config)
prompt = 'Use a long prompt to replace this sentence'
response = pipe(prompt)
print(response)

智能体

InternLM-2.5-Chat 模型有出色的工具调用性能并具有一定的零样本泛化能力。它支持从上百个网页中搜集信息并进行分析。更多样例可以参考 agent 目录.

微调&训练

请参考微调教程尝试续训或微调 InternLM2。

注意: 本项目中的全量训练功能已经迁移到了 InternEvo 以便用户使用。InternEvo 提供了高效的预训练和微调基建用于训练 InternLM 系列模型。

评测

我们使用 OpenCompass 进行模型评估。在 InternLM2.5 中,我们主要标准客观评估、长文评估(大海捞针)、数据污染评估、智能体评估和主观评估。

标准客观评测

请按照 OpenCompass 教程 进行客观评测。我们通常在 Base 模型上使用 ppl 进行多项选择题评测,在 Chat 模型上使用 gen 进行所有问题的答案生成和评测。

长文评估(大海捞针)

有关 大海捞针 评估的教程,请参阅 文档 中的教程。

数据污染评估

要了解更多关于数据污染评估的信息,请查看 污染评估。

智能体评估

  • 要评估大模型的工具利用能力,请使用 T-Eval 进行评测。
  • 对于代码解释器评估,请使用 gsm-8k-agent 提供的配置进行评估。此外,您还需要安装 Lagent。

主观评估

  • 请按照 教程 进行主观评估。

视频课程学习笔记

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面的工具,让我有点尝试的欲望,尤其是这个标注工具

  • Label U

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


任务

  • https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/HelloIntern/task.md

其他学习内容


参考文献

大模型实战营 地址

  • https://openxlab.org.cn/models/InternLM/subject

本人学习系列笔记

第二期

  • 《书生·浦语大模型实战营》第1课 学习笔记:书生·浦语大模型全链路开源体系
  • 《书生·浦语大模型实战营》第2课 学习笔记:轻松玩转书生·浦语大模型趣味 Demo
  • 《书生·浦语大模型实战营》第3课 学习笔记:搭建你的 RAG 智能助理(茴香豆)
  • 《书生·浦语大模型实战营》第4课 学习笔记:XTuner 微调 LLM:1.8B、多模态、Agent
  • 《书生·浦语大模型实战营》第5课 学习笔记:LMDeploy 量化部署 LLM 实践
  • 《书生·浦语大模型实战营》第6课 学习笔记:Lagent & AgentLego 智能体应用搭建
  • 《书生·浦语大模型实战营》第7课 学习笔记:OpenCompass 大模型评测实战

第三期

入门岛

  • 《书生大模型实战营第3期》入门岛 学习笔记与作业:Linux 基础知识
  • 《书生大模型实战营第3期》入门岛 学习笔记与作业:Git 基础知识
  • 《书生大模型实战营第3期》入门岛 学习笔记与作业:Python 基础知识

课程资源

第三期 学院闯关手册

  • https://aicarrier.feishu.cn/wiki/XBO6wpQcSibO1okrChhcBkQjnsf

第三期 作业提交

  • https://aicarrier.feishu.cn/share/base/form/shrcnZ4bQ4YmhEtMtnKxZUcf1vd

第二期 学员手册

  • https://aicarrier.feishu.cn/wiki/KamPwGy0SiArQbklScZcSpVNnTb

算力平台

  • https://studio.intern-ai.org.cn/console/dashboard
  • https://studio.intern-ai.org.cn/

课程文档

  • https://github.com/InternLM/Tutorial/tree/camp3
  • https://github.com/InternLM/Tutorial/tree/camp2

课程视频

  • https://www.bilibili.com/video/BV15m421j78d

代码仓库

  • https://github.com/InternLM/Tutorial
  • https://github.com/InternLM/Tutorial/tree/camp2

优秀项目展示与学习

  • https://aicarrier.feishu.cn/wiki/DoKWwqslwiyjjKkHhqJcvXAZnwd?table=tblyxy5MZV7gJ7yS&view=vew0rj0WuN

论文

其他参考

原始视频

  • https://www.bilibili.com/video/BV18142187g5/?vd_source=d7bc15cac5976d766ca368e2f081b28b

原始文档

https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Linux/readme.md

本人博客:

  • 基于大语言模型的本地知识库问答系统构建方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript基础(29)_事件对象、鼠标移动事件

事件对象 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数,在事件对象中封装了当前事件相关的一切信息,比如,鼠标的坐标 、键盘哪个键被按下、鼠标滚轮滚动的方向。。。 鼠标移动事件&#xff08…

aspeed2600 GPIO分析与适配ipmitool power status, ipmitool power on/off

1.说明 本节以x86-power-control/src/power_control.cpp为基础,分析整个GPIO的调用流程,实现简单的ipmitool power on/off,ipmitool power status的管理。 1.资源:x86-power-control:https://github.com/openbmc/x86-power-control2.相关文件: meta-ph…

【redis 第八篇章】链表结构

一、数组和链表 1、数组 数组会在内存中开辟一块连续的空间存储数据,这种存储方式有利也有弊端。当获取数据的时候,直接通过下标值就可以获取到对应的元素,时间复杂度为 O(1)。但是如果新增或者删除数据会移动大量的数据,时间复…

AI辅助教育:九章大模型的数学辅导功能解析

1.简介 九章大模型是学而思为学习研发的模型,该模型对于数学做了很多专门的训练,在题目推荐方面做得比较好。 同时,这个模型也能支持上传图片,对图片内容进行分析,然后针对内容进行校对,推荐相识题目。 支…

用于完成个人搜索的反向图像搜索工具

简介: Infringement.report 提供了一个强大的反向图像搜索工具,称为 Raider。这对于网络安全人员和渗透测试人员来说,是一个不可或缺的工具。 主要功能: 反向图像搜索: 该工具允许用户通过图像进行搜索&#xff0c…

Bash Shell 脚本中的循环语句

文章目录 Bash Shell 脚本中的循环语句一、for 循环1.1 列表循环1.2 不带列表循环(C 风格的 for 循环) 二、案例示例2.1 打印 1-5 的数字2.2 打印 5 次 "hello world"2.3 打印 abcde2.4 输出 0-50 之间的偶数 三、应用技巧3.1 使用花括号和 se…

自注意力和位置编码

一、自注意力 1、给定一个由词元组成的输入序列x1,…,xn, 其中任意xi∈R^d(1≤i≤n)。 该序列的自注意力输出为一个长度相同的序列 y1,…,yn,其中: 2、自注意力池化层将xi当作key,value,query来…

【Nuxt】资源导入

public 通常用于存放静态资源。 assets 通常用于存放样式表、字体或者 svg 的资源。 图片资源 alias 推荐使用 ~。 <img src"/avatar1.png" alt"avatar1"/> <img src"/assets/images/unnamed.jpg" alt"unnamed"/><te…

(STM32笔记)九、RCC时钟树与时钟 第二部分

我用的是正点的STM32F103来进行学习&#xff0c;板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话&#xff0c;用的也是这个板子和教程。 九、RCC时钟树与时钟 九、RCC时钟树与时钟2、时钟配置函数时钟初始化思路(72M)复位时钟至默认状态使能HSE&#xff0c;并等待…

第128天:内网安全-横向移动IPCATSC 命令Impacket 套件CS 插件全自动

环境部署 案例一&#xff1a; 域横向移动-IPC-命令版-at&schtasks 首先是通过外网web访问到win2008&#xff0c;获得了win2008的权限&#xff0c;这一步不做演示 因为里面的主机都不出网&#xff0c;所以只能利用win2008进行正向或者反向连接 信息收集 域内用户信息&…

【Git学习笔记】零基础入门学习Git

1. 学习目标 掌握Git企业应用开发的基本操作以及背后原理&#xff0c;掌握工作区、暂存区、版本库的区别掌握Git的版本管理&#xff0c;例如版本回退、撤销、修改等操作掌握Git的分支管理&#xff0c;例如创建分支、合并分支、删除分支掌握本地仓库与远程仓库之间的区别&#…

数据结构实验报告-链表

实 验 二 报 告 一、实验目的 1.熟练掌握链表的结构类型定义、特点。 2.熟练掌握链表的基本操作算法的实现及其算法时间复杂度的分析。 3.掌握循环链表、双向链表的结构类型定义及其基本操作算法。掌握链表的应用。 二、实验内容 1&#xff0e;请编写一个完整的程序&…

基于RHEL7的服务器批量安装

目录 一、项目要求 二、实验环境 三、生成kickstart自动化安装脚本 四、搭建dhcp服务并测试kickstart脚本 五、搭建pxe网络安装环境实现服务器自动部署 ​编辑 六、测试 一、项目要求 1.使用kickstart编写自动化安装脚本 2.搭建dhcp服务并测试kickstart脚本 3.搭建px…

软件设计之HTML5

软件设计之HTML5 【狂神说Java】HTML5完整教学通俗易懂 学习内容&#xff1a; 软件开发技能点参照&#xff1a;软件开发&#xff0c;小白变大佬&#xff0c;这套学习路线让你少走弯路是认真的&#xff0c;欢迎讨论 软件开发技能点参照&#xff1a;Java学习完整路线&#xff…

【doghead】mac构建 2: player 端 clion构建

准备工作 【doghead】mac构建 1 【doghead】mac: clion2024.1启动崩溃 mbp的 uv 构建ok zhangbin@zhangbin-mbp-2  ~/tet/Fargo/zhb-bifrost/Bifrost-202403/worker/third_party/libuv   main clion使用lldb cmake构建 更

SQL注入:MySQL元数据库,外网实战手工SQL注入

MySQL元数据库 MySQL的元数据库是一组特殊的数据库&#xff0c;用于存储MySQL服务器的元数据信息&#xff0c;在sql注入中较为常用为以下两种元数据库&#xff1a; information_schema&#xff1a;这个数据库包含了MySQL服务器上所有其他数据库的元数据信息。例如数据库名、表…

7 WIFI

7 WIFI 1、ESP8266模块2、烧写固件3、调试工具4、使用库函数实现wifi4.1 实现串口3和DMA的初始化4.2 利用串口3实现wifi 1、ESP8266模块 ESP8266系列无线模块是安信可科技自主研发设计的一系列高性价比WIFI SOC模组。该系列模块支持标准的IEEE802.11 b/g/n协议&#xff0c;内置…

Unity UnityWebRequest封装类

简化api调用流程&#xff0c;非常奈斯。 RestWebClient.cs using System; using System.Collections; using UnityEngine; using UnityEngine.Networking;namespace MYTOOL.RestClient {/// <summary>/// UnityWebRequest封装类/// </summary>public class RestW…

基于R语言绘制GGE双标图1

参考资料&#xff1a; 严威凯等: 双标图分析在农作物品种多点试验中的应用【作物学报】 https://cran.r-project.org/web/packages/GGEBiplots/GGEBiplots.pdf 1、安装GGEBiplots包 目前搜索到的资料多数为“GGEBiplotGUI”安装包&#xff0c;但在安装时报错&#xff0c;如下…

【独家原创】基于APO-Transformer-LSTM多特征分类预测(多输入单输出)Matlab代码

【独家原创】基于APO-Transformer-LSTM多特征分类预测&#xff08;多输入单输出&#xff09;Matlab代码 目录 【独家原创】基于APO-Transformer-LSTM多特征分类预测&#xff08;多输入单输出&#xff09;Matlab代码分类效果基本描述程序设计参考资料 分类效果 基本描述 [24年最…