LLM - 大模型速递 InternLM-20B 快速入门

2023-09-22 11:48:31

目录

一.引言

二.模型简介

1.模型特性

2.模型评测

三.模型尝试

1.模型参数

2.generate 与 chat

3.模型微调

四.总结


一.引言

一早醒来国产开源大模型又添一员猛将,书生-浦语大模型 InternLM-20B 大模型发布并开源,这里字面翻译是实习生大模型,比较有意思。该模型由上海人工智能实验室与商汤科技联合香港中文大学和复旦大学联合推出。模型地址: https://huggingface.co/internlm/internlm-chat-20b

 

二.模型简介

1.模型特性

InternLM 20B 在模型结构上选择了深结构,层数设定为 60 层,超过常规 7B 和 13B 模型所使用的32 层或者 40 层,这也是模型尺寸达到 20B 的原因。在参数受限的情况下,提高层数有利于提高模型的综合能力。此外,相较于 InternLM-7B,InternLM-20B 使用的预训练数据经过了更高质量的清洗,并补充了高知识密度和用于强化理解与推理能力的训练数据。因此,它在理解能力、推理能力、数学能力、编程能力等考验语言模型技术水平的方面都得到了显著提升。总体而言,InternLM-20B 具有以下的特点:

  • 优异的综合性能
  • 很强的工具调用功能
  • 支持16k语境长度(通过推理时外推)
  • 更好的价值对齐

2.模型评测

在OpenCompass提出的5个能力维度上,InternLM-20B都取得很好的效果(粗体为13B-33B这个量级范围内,各项最佳成绩):

在博主全面拥抱 baichuan2-13B 和 LLaMA-33B 的同时,InternLM-20B 的出现不可谓是一个奇兵,后续博主也会拥抱 InternLM-20B 并分享相关经验: 

 

三.模型尝试

1.模型参数

模型的 hidden_layers 增加至 60,对比 Baichuan-2 的 layers 数目为 40,另外词库的大小也增加至 103168。

2.generate 与 chat

官方 demo 和 modeling.py 中给出了相关 chat 与 generate 的示例。

generate

from transformers import AutoTokenizer, InternLMForCausalLM

model = InternLMForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS)
tokenizer = AutoTokenizer.from_pretrained(PATH_TO_CONVERTED_TOKENIZER)

prompt = "Hey, are you consciours? Can you talk to me?"
inputs = tokenizer(prompt, return_tensors="pt")

# Generate
generate_ids = model.generate(inputs.input_ids, max_length=30)
tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

chat

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True)
print(tokenizer)
model = AutoModelForCausalLM.from_pretrained(path, trust_remote_code=True)
print(model)
model = model.eval()
output, history = model.chat(tokenizer, "你好呀!今天天气真好")
print(output)

3.模型微调

目前最新版的 LLaMA-Efficient-Tuning 框架已支持 InternLM-20B 的 LoRA 微调,注意选择正确的 lora_target 与 template 模板:

博主在 A800 机器以 batch_size = 8 ,target = q_proj,v_proj LoRA 微调 InternLM-20B-chat 显存占用如下,非常的极限:

LoRA 参数占比如下,如果想微调更多的参数,可以降低 batch_size,提高 Gradient Accumulation steps 达到更大 batch 的效果:

trainable params: 9830400 || all params: 20098544640 || trainable%: 0.0489

四.总结

终于出了介于 13B 和 33B 之间的模型了,博主对 InternLM 实习生大模型还是抱有很大期待,期望后续能够有更加惊艳的表现。 

更多推荐

《消费金融真经》笔记

《消费金融真经》笔记一:概述与产品规划消费金融五大原则;竞品调研;收入来源;产品特征;增值功能;创造品牌;目标客群匹配;发展预测;产品实验。《消费金融真经》笔记二:信用评分信用评分优势;信用评分劣势;评分系统建设(评分系统规划,开发,实施,评测和监控);通用评分模型。《消费金融真经》笔记三:获客寻找潜在用户;筛选账户;

wallet connect简单使用

walletconnect简单使用准备工作安装配置打包测试准备工作新建一个文件夹xxx右键在终端中打开npminit-y在文件夹中新建src目录在src目录中新建index.html和index.js文件目录大概就这样我这是打包过的安装按照官方文档先安装官方页面长这样我们需要用到的是web3Modal点进去我们可以看到

C | atexit函数

C|atexit函数文章目录C|atexit函数atexit区别进程终止的方式Reference欢迎关注公众号“三戒纪元”atexitmain函数是整个程序的入口,但是其实可以在内核中可以使用链接器来设置程序的开始地方。当内核使用⼀个exec函数执行C程序时,在调⽤main函数之前先调用⼀个特殊的启动例程,可执行程序将

安装ThinkPHP5.1并在框架中使用FFmpeg视频处理工具遇到的问题和解决办法

一:安装ThinkPHP5.1框架问题一:安装方法有很多,我这里使用composer安装的,但是遇到了问题,出现了报错安装方法可是查看https://www.kancloud.cn/manual/thinkphp5_1/353948composercreate-projecttopthink/thinkblog5.1.

objList=strList为什么报错

代码复现先看下面一段代码List<String>strList=newArrayList<>();List<Object>objList=strList;//报错乍一看好像没什么问题,但为什么追报错呢?先别急,看下面一段代码List<Integer>intList=newArrayList<>();List<Objec

负载均衡策略

一台机器不能满足,则增加两台或者多台机器,共同承担访问压力,这就是典型的集群和负载均衡架构。一、轮询(RoundRobin)按照顺序将请求依次分配给每个服务器,确保每个服务器都能平均分担负载。二、哈希(IPHash)根据客户端的IP地址将请求分配给服务器,这会通过哈希函数来分配应用服务器。相同IP的客户端将始终被分配到

【 2023华为杯C题】大规模创新类竞赛评审方案研究(思路、代码......)

目录1题目概述2问题3极差的定义及标准分的计算方法4题目及数据下载5思路、代码下载......1题目概述现在创新类竞赛很多,其中规模较大的竞赛,一般采用两阶段(网评、现场评审)或三阶段(网评、现场评审和答辩)评审。创新类竞赛的特点是没有标准答案,需要评审专家根据命题人(组)提出的评审框架(建议)独立评审。所以,对同一份

凹凸贴图和法线贴图的区别

1、什么是凹凸贴图凹凸贴图(bumpmapping)是一种计算机图形学中的渲染技术,用于在给定的表面上模拟微小的凹凸纹理。通过在表面法线方向上微调每个像素的光照值,可以给平滑的表面增加视觉上的凹凸感。在凹凸贴图中,每个像素点都包含了一个法线向量,表示该点表面的方向。这些法线向量通常以纹理的形式存储在一个称为凹凸贴图的二

Zabbix“专家坐诊”第204期问答汇总

问题一Q:请问自动发现如何配置?A:在Zabbix中配置自动发现,可以使用以下步骤:登录到Zabbix的Web界面。确保您具有管理员或具有适当权限的用户角色。导航到“配置”菜单,然后选择“自动发现”。点击“创建自动发现”按钮。在“名称”字段中,输入自动发现规则的名称。在“新发现设备”字段中,选择要在自动发现过程中创建设

【Python】PySpark 数据处理 ② ( 安装 PySpark | PySpark 数据处理步骤 | 构建 PySpark 执行环境入口对象 )

文章目录一、安装PySpark1、使用pip安装PySpark2、国内代理镜像3、PyCharm中安装PySpark二、PySpark数据处理步骤三、构建PySpark执行环境入口对象四、代码示例一、安装PySpark1、使用pip安装PySpark执行Windows+R,运行cmd命令行提示符,在命令行提示符终端中,

计算机网络篇之IPV4数据报格式

计算机网络篇之IPV4数据报格式structiphdr{uint8_tversion:4;//4位版本字段表示Internet标头的格式,ipv4值是4uint8_tihl:4;//4位因特网报头长度,ip报头中32位字的数量uint8_ttos;//服务类型字段,该字段传达IP数据报的服务质量,源于第一个IP规范,在

热文推荐