【InternLM 实战营第二期笔记01】书生·浦语大模型全链路开源体系

本次课程链接在GitHub上:InternLM/Tutorial at camp2 (github.com)

第一次课程录播链接:书生·浦语大模型全链路开源体系_哔哩哔哩_bilibili

InternLM2技术报告:arxiv.org/pdf/2403.17297.pdf

一、书生浦语大模型简介

2023年6月7日,InternLM大模型发布

2024年1月,上海 AI Lab正式发布书生 · 浦语 2.0(InternLM2),包括1.8B、7B 及 20B 两种参数规格及Base、Chat等多个版本

InternLM2_Base:高质量、强可塑性的基座模型

InternLM2:在Base基础上,在多个能力进行了强化,更优秀的基座模型

Chat-SFT:在Base基础上,经过有监督微调SFT后的对话模型

InternLM2-Chat:经过SFT和RLHF,面向对话交互进行优化的模型

回归语言建模的本质,InternLM2使用新一代数据清洗过滤技术,包括:

1.多维度数据价值评估

2.高质量语料驱动的数据富集

3.有针对性的数据补齐

开源数据集平台OpenDataLab:OpenDataLab

InternLM2的主要亮点:

1.20万token上下文

2.chat-20B在推理数学等重点评测上比肩ChatGPT

3.结构化创作,超越GPT3.5

4.工具多轮调用,复杂智能体创建

5.计算能力,加入代码解释后,和GPT-4相仿水平

对于其他参数量类似的开源模型,基本是全方位的超越,特别是推理、数学、代码等方面的能力提升尤为显著

举例:旅游规划、人文关怀对话、科幻创作、工具调用能力……

举例:内生计算能力:配合代码解释器,20B模型已经可以完成大学的微积分题目

数据分析能力:上传表格,可以画出趋势发展图,调用机器学习算法,做出后续预测

二、从模型到应用流程

1.典型流程图

书生浦语对整个流程实现了全覆盖:数据-预训练-微调-部署-评测-应用

2.数据

数据环节,书生CC做到了高质量语料驱动、安全性能高

3.预训练

预训练环节,支持8卡到千卡训练,支持HuggingFace等配置、支持多种规格语言模型,能够修改配置即可训练

4.微调

微调环节,支持增量续训和有监督微调(全量参数微调、部分参数微调)

使用XTuner框架,适配多种生态:

1.支持多种输入数据的格式

2.支持优化加速(Flash Attention, DeepSpeed)

3.支持多种微调算法(LoRA, QLoRA, 全量微调)

适配多种硬件,最低只需8GB显存即可微调7B模型

5.评测

评测环节,opencompass2.0评测体系,可以对市面上常见的大模型进行评测,评测内容包括:

1.数据污染检查

2.更丰富的模型推理接入

3.长文本能力检测

4.中英文双语主观评测

同时构建了评测基准社区,汇聚专家、学者的评测数据集

opencompass也是Meta官方推荐的唯一国产大模型评测体系

OpenCompass对大模型进行循环评测方法,得到的大模型评测年度榜单

6.部署

部署环节,LMDeploy提供了完整的部署工具链,提供包括Python、grpc、restful的接口,提供模型从轻量化、推理和服务的全流程

7.智能体

智能体框架,Lagent,支持多种大语言模型、支持多个主流智能体系统

同时开发了AgentLego智能体工具箱,提供了多种工具接口的封装

三、InternLM2 技术报告学习

文档链接https://arxiv.org/pdf/2403.17297.pdf

使用文心一言解读文档

引言

随着人工智能技术的飞速发展,大型语言模型(Large Language Models,简称LLMs)如ChatGPT和GPT-4的出现,标志着人工智能在自然语言处理领域取得了重大突破,引发了关于人工通用智能(Artificial General Intelligence,简称AGI)即将到来的广泛讨论。然而,在开源环境中复制这样的进步一直是一个挑战。为此,我们介绍了InternLM2,一个开源的大型语言模型,通过创新的预训练和优化技术,在多个维度和基准测试中均超越了其前代模型。

模型概述

InternLM2是在多个研究机构和企业的共同努力下开发的。它汇聚了来自上海AI实验室、商汤科技、香港中文大学、复旦大学等众多顶尖科研团队的智慧和资源。该模型采用了先进的深度学习架构和算法,旨在提高自然语言处理任务的准确性和效率。

技术亮点
  1. 创新的预训练技术:InternLM2在预训练过程中采用了多项创新技术,包括无监督学习和自监督学习相结合的方法,以充分利用大量的无标注数据。这种预训练方式使得模型能够更好地捕捉语言的内在规律和结构,为后续的任务提供强大的基础。
  2. 多维度评估体系:为了全面评估InternLM2的性能,我们设计了一个涵盖6个维度和30个基准测试的综合评估体系。这些基准测试涵盖了语言理解、语言生成、文本分类、情感分析等多个方面,确保了模型在各个方面的表现都能得到准确评估。
  3. 长上下文建模能力:InternLM2具有出色的长上下文建模能力,能够处理长达数千个词的文本输入。这使得模型在处理复杂对话、长篇文档等任务时具有更高的准确性和灵活性。
  4. 开放式主观评价:除了客观评估指标外,我们还进行了开放式主观评价,以评估模型在真实应用场景下的表现。这些评价涉及了模型的生成质量、语义连贯性、多样性等方面,为模型的改进提供了有价值的反馈。
实验结果

在综合评估中,InternLM2在多个维度和基准测试中均取得了优异的成绩。特别是在长上下文建模和开放式主观评价方面,模型表现出了显著的优势。这些实验结果证明了InternLM2在自然语言处理领域的先进性和实用性。

结论与展望

InternLM2的成功开发为开源大型语言模型的发展提供了新的思路和方法。未来,我们将继续优化模型架构和算法,提高模型的性能和效率。同时,我们也期待更多的研究者和开发者能够加入到开源大型语言模型的研究和开发中来,共同推动人工智能技术的发展和应用。

四、心得

人工智能作为当今科技发展最受关注的议题,登上了2024年的高考作文题目。随着chagpt-4o的发布,图片识别能力、直接视频音频的输入等多模态能力狂飙,这预示着我们可能在不久的将来见证一款超级多模态产品的诞生,它将深刻改变我们与机器的交互方式。

而目前国内的大模型发展也进入市场竞争加剧阶段,百万tokens低至1元,AI公司可能像之前的百团大战一样,经历一轮残酷的淘汰,最终只有少数企业胜出。而这一次竞争加入了科技公司而不仅限于互联网。这一过程中,可能会出现一款集多种功能于一体的超级APP,将彻底改变过往20年互联网时代的信息交流方式,将深刻影响到生活、教育和学习。未来已来,让我们尽情期待吧。

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。对于您的问题,我理解您想问我如何调用U-NET模型,以下是我给出的回答。 首先,U-NET模型是一个用于图像分割的深度学习模型,它使用卷积神经网络来学习图像中不同区域的特征,并将它们分割成不同的类别。在TensorFlow 2.0中,我们可以使用tf.keras API来实现U-NET模型。 以下是一个简单的U-NET模型的实现代码: ```python import tensorflow as tf from tensorflow.keras.layers import * def conv_block(inputs, filters, kernel_size=(3, 3), activation='relu', padding='same'): x = Conv2D(filters, kernel_size, activation=activation, padding=padding)(inputs) x = BatchNormalization()(x) x = Conv2D(filters, kernel_size, activation=activation, padding=padding)(x) x = BatchNormalization()(x) return x def unet(input_shape=(256, 256, 3)): inputs = Input(shape=input_shape) c1 = conv_block(inputs, 64) p1 = MaxPooling2D((2, 2))(c1) c2 = conv_block(p1, 128) p2 = MaxPooling2D((2, 2))(c2) c3 = conv_block(p2, 256) p3 = MaxPooling2D((2, 2))(c3) c4 = conv_block(p3, 512) p4 = MaxPooling2D((2, 2))(c4) c5 = conv_block(p4, 1024) u6 = Conv2DTranspose(512, (2, 2), strides=(2, 2), padding='same')(c5) u6 = concatenate([u6, c4]) c6 = conv_block(u6, 512) u7 = Conv2DTranspose(256, (2, 2), strides=(2, 2), padding='same')(c6) u7 = concatenate([u7, c3]) c7 = conv_block(u7, 256) u8 = Conv2DTranspose(128, (2, 2), strides=(2, 2), padding='same')(c7) u8 = concatenate([u8, c2]) c8 = conv_block(u8, 128) u9 = Conv2DTranspose(64, (2, 2), strides=(2, 2), padding='same')(c8) u9 = concatenate([u9, c1]) c9 = conv_block(u9, 64) outputs = Conv2D(1, (1, 1), activation='sigmoid')(c9) model = tf.keras.Model(inputs=[inputs], outputs=[outputs]) return model ``` 在这个实现中,我们使用了Conv2D、BatchNormalization、MaxPooling2D和Conv2DTranspose等层来构建U-NET模型。我们还定义了一个conv_block函数来简化代码。 使用这个实现代码,我们可以通过以下方式调用U-NET模型: ```python model = unet() ``` 这将返回一个U-NET模型的实例,我们可以使用该实例来进行训练和预测。 希望这个回答对您有所帮助。如果您还有其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值