当前位置: 首页 > news >正文

手搓一个Agent#Datawhale 组队学习Task3

书接上回,首先回顾一下Task2的一些补充:

Task2主要任务是从零预训练一个tiny-llama模型,熟悉一下Llama的模型架构和流程。然后测试一下模型的效果。总的来说,因为某些未知的原因,loss一直没有降下去,导致最终效果一般般。

Task2知识点补充和解读

contextlib库

from contextlib import nullcontext

contextlib 是 Python 标准库中的一个模块,它提供了一系列工具来帮助开发者更方便地使用上下文管理协议(context management protocol)。

nullcontext 是 Python 中 contextlib 模块提供的一个上下文管理器,它主要用于不需要执行任何特定的进入或退出操作的情况。

datetime库

from datetime import datetime

datetime 是 Python 的标准库之一,提供了处理日期和时间的强大工具。

datetime 类是 datetime 模块中最常用的类之一,它代表了一个具体的日期和时间。你可以用它来进行日期和时间的运算,获取当前时间,格式化日期等。

datetime 库和 time 库的比较

datetime 库和 time 库都是 Python 中用于处理日期和时间的标准库,但它们各有侧重,适用于不同的应用场景。

datetime 库更适合于需要高级日期时间处理的应用场景,而 time 库则更适合于简单的计时和时间戳操作。

functools库

from functools import partial

functools 是 Python 标准库中的一个模块,它提供了多种工具来帮助开发者更高效地编写函数。partial 函数可以固定一个函数的一部分参数,从而创建一个新的函数。

AdamW优化器

AdamW 是一种广受欢迎的优化算法,它是在经典的 Adam 优化器基础上发展而来,引入了权重衰减(Weight Decay)机制。

Adam(Adaptive Moment Estimation)是一种自适应学习率优化算法,它结合了 AdaGrad 和 RMSProp 的优点。Adam 使用了动量(momentum)和自适应学习率来更新参数,其中动量用于加速收敛速度,自适应学习率用于调整不同参数的学习速率。

AdaGrad 没有使用动量的概念,而是直接根据历史梯度的平方来调整学习率。学习率单调递减:随着训练的进行,学习率会逐渐减小,最终可能变得太小。

动量机制:RMSProp 使用了指数移动平均来估算梯度的平方,从而避免了 AdaGrad 中学习率单调递减的问题。

  • AdaGrad:适合处理稀疏梯度的问题,但由于学习率单调递减,不适合长期训练。
  • RMSProp:通过指数移动平均解决了 AdaGrad 中学习率单调递减的问题,适合处理动态变化的梯度。
  • Adam:结合了 AdaGrad 和 RMSProp 的优点,并通过偏置校正机制提高了初始阶段的收敛速度,是目前最常用的优化算法之一。

在使用 AdamW 优化器的情况下,是否需要使用 Dropout 主要取决于您的具体应用场景和模型设计的需求。

Dropout 和 Weight Decay 的区别:

  1. Dropout

    • 定义:Dropout 是一种正则化技术,通过随机“丢弃”一部分神经元(即设置为 0),从而降低模型的复杂度,防止过拟合。
    • 作用:Dropout 可以使模型的各个部分相互独立地学习特征,从而提高模型的鲁棒性。
    • 适用场景:通常用于深层网络中,特别是在训练非常大的模型时,Dropout 可以帮助模型更好地泛化到未见过的数据。
  2. Weight Decay

    • 定义:Weight Decay 是一种正则化技术,通过对模型的权重施加惩罚(通常为 L2 正则化),减少模型的复杂度。
    • 作用:Weight Decay 通过使权重趋向于较小的值,从而降低模型的整体复杂度。
    • 适用场景:几乎所有的模型都可以从中受益,特别是在数据集较小或者模型容量很大的情况下。

学习率调度器scheduler:

学习率调度器(Learning Rate Scheduler)是深度学习训练中用来动态调整学习率的技术。通过调整学习率,可以提高模型的训练效率和性能。在训练初期使用较高的学习率可以加快收敛速度,在后期精细调整参数,提高训练效率。

余弦退火(Cosine Annealing)学习率调度是一种动态调整学习率的技术,它根据余弦函数的周期性变化来调整学习率。尤其适合需要平滑地调整学习率的场景。

一般建议预热迭代次数为总迭代次数的 5% 到 10% 左右。

退火开始的迭代次数通常在训练的中期到后期,一般建议设置为总迭代次数的 80% 左右。

初始学习率取决于模型的复杂度和数据集的大小。一个常见的初始学习率设置为 0.001。根据模型规模和数据集大小Llama技术报告里面,初始学习率可能在 1e-4 到 5e-5 之间。

最小学习率应该设置得足够小,以防止在训练后期学习率仍然过高而导致的振荡。通常为初始学习率的十分之一。

我又重新跑了一次,根据学习率调度修改了一些参数,等结果更新,希望这次可以取得一个比上次更有的结果。

Task3.Tiny-Agent

论文:《REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS》

我们先来看一下这篇论文主要讲了什么。

摘要:该论文介绍了一种名为ReAct(Reason+Act)的新方法,它探索了如何使大型语言模型(LLMs)以交错方式生成推理轨迹和特定任务动作,以此增强推理与行动间的协同效果。ReAct通过推理来指导和更新行动计划,并通过实际行动与外部资源(如知识库)互动获取信息。这种方法在多种语言理解和决策制定任务中进行了测试,显示出了比现有技术更好的性能,并提高了模型的可解释性和可信度。特别是在HotpotQA和Fever任务中,ReAct减少了推理错误,并产生了更容易理解的结果;而在ALFWorld和WebShop这两个互动决策制定基准测试中,ReAct仅需少量示例就能显著提高成功率,超越了传统的模仿和强化学习方法。

接下来我们开始手搓Agent的代码实现:

Step 1: 构造大模型

这里我们选择了书生谱语的开源InternLM2作为我们的Agent模型。InternLM2是一个基于Decoder-Only的通用对话大模型,可以使用transformers库来加载InternLM2模型。

Step 2: 构造工具

我们在tools.py文件中,构造一些工具,比如Google搜索。在这个文件中,构造一个Tools类。在这个类中,我们需要添加一些工具的描述信息和具体实现方式。

Step 3: 构造Agent

我们在Agent.py文件中,构造一个Agent类,这个Agent是一个React范式的Agent,我们在这个Agent类中,实现了text_completion方法,这个方法是一个对话方法,我们在这个方法中,调用InternLM2模型,然后根据ReactAgent的逻辑,来调用Tools中的工具。

Step 4: 运行Agent

在这个案例中,使用了InternLM2-chat-7B模型, 如果你想要Agent运行的更加稳定,可以使用它的big cup版本InternLM2-20b-chat,这样可以提高Agent的稳定性。

相关文章:

手搓一个Agent#Datawhale 组队学习Task3

书接上回,首先回顾一下Task2的一些补充: Task2主要任务是从零预训练一个tiny-llama模型,熟悉一下Llama的模型架构和流程。然后测试一下模型的效果。总的来说,因为某些未知的原因,loss一直没有降下去,导致最…...

基于SpringBoot+Vue+MySQL的在线酷听音乐系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网技术的飞速发展,网络已成为人们日常生活中不可或缺的一部分。在线音乐服务因其便捷性和丰富性,逐渐成为用户获取音乐内容的主要渠道。然而,传统的音乐播放平台往往存在歌曲资源有限…...

大数据实时数仓Hologres(一):Hologres 简单介绍

文章目录 Hologres 简单介绍 一、什么是实时数仓 Hologres 二、产品优势 1、专注实时场景 2、亚秒级交互式分析 3、统一数据服务出口 4、开放生态 5、MaxCompute查询加速 6、计算存储分离架构 三、应用场景 搭建实时数仓 四、产品架构 1、Shared Disk/Storage &am…...

【鸿蒙HarmonyOS NEXT】数据存储之分布式键值数据库

【鸿蒙HarmonyOS NEXT】数据存储之分布式键值数据库 一、环境说明二、分布式键值数据库介绍三、示例代码加以说明四、小结 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、分布式键值数据库介绍 KVStore简介: 分布式键值数据库…...

基于springboot+小程序的儿童预防接种预约管理系统(疫苗1)(源码+sql脚本+视频导入教程+文档)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本儿童预防接种预约微信小程序可以实现管理员和用户。 1、管理员功能有个人中心,用户管理,儿童信息管理,疫苗信息管理,儿童接种管理&#x…...

计算物理精解【8】-计算原理精解【5】

文章目录 logistic模型多元回归分析多元回归分析概览1. 多元回归的概念与重要性2. 多元回归在实际应用中的例子3. 多元回归在预测和解释数据中的优势和局限性4. 多元回归的优缺点及改进建议 多元线性回归分析详解一、原理二、性质三、计算四、例子与例题五、应用场景六、优缺点…...

【Linux】 tcp | 解除服务器对tcp连接的限制 | 物联网项目配置

一、修改tcp连接限制 1、编辑 vi /etc/sysctl.conf 2、内容 net.ipv4.tcp_keepalive_intvl 75 net.ipv4.tcp_keepalive_probes 9 net.ipv4.tcp_keepalive_time 7200 net.ipv4.ip_local_port_range 1024 65535 net.ipv4.ip_conntrack_max 20000 net.ipv4.tcp_max_tw_bucket…...

如何隐藏Windows10「安全删除硬件」里的USB无线网卡

本方法参照了原文《如何隐藏Windows10「安全删除硬件」里的USB无线网卡》里面的方法,但是文章中的描述我的实际情况不太一样,于是我针对自己的实际情况进行了调整,经过测试可以成功隐藏Windows10「安全删除硬件」里的USB无线网卡。 先说一下…...

【QT Quick】基础语法:导入外部JS文件及调试

在 QML 中,可以使用 JavaScript 来实现业务逻辑的灵活性和简化开发。接下来我们会学习如何导入 JavaScript 文件,并在 QML 中使用它,同时也会介绍如何调试这些 JavaScript 代码。 导入 JavaScript 文件 在 QML 中导入 JavaScript 文件的方式…...

【质优价廉】GAP9 AI算力处理器赋能智能可听耳机,超低功耗畅享未来音频体验!

当今世界,智能可听设备已经成为了流行趋势。随后耳机市场的不断成长起来,消费者又对AI-ANC,AI-ENC(环境噪音消除)降噪的需求逐年增加,但是,用户对于产品体验的需求也从简单的需求,升…...

用Flutter几年了,Flutter每个版本有什么区别?

用Flutter几年了,你知道Flutter每个版本有什么区别吗?不管是学习还是面试我们可能都需要了解这个信息。 Flutter 每个版本的用法基本都是一样的,每隔几天或者几周就会更新一个版本, 2018 年 12 月 5 日发布了1.x 版本&#…...

解决Qt每次修改代码后首次运行崩溃,后几次不崩溃问题

在使用unique_ptr声明成员变量后,我习惯性地在初始化构造列表中进行如下构造: 注意看,我将m_menuBtnGroup的父类指定为ui->center_menu_widget,这便是导致崩溃的根本原因,解决办法便是先用this初始化,后…...

语言的变量交换

不用第三个变量交换两个变量在面试题或者笔试题中无数次被提到,事实上,有些答案是理论性的,不是准确的。以整型为例,如下对比不同交换方式的差异。 不同的交换方式 利用中间变量c a; 00C02533 8B 45 F8 mov eax,dword ptr [a] 0…...

【muduo源码分析】「阻塞」「非阻塞」「同步」「异步」

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言何为「muduo库」安装muduo库阻塞、非阻塞、同步、异步数据准备数据准备 引言 从本篇博客开始,我会陆续发表muduo库源码分析的相关文章。感谢大家的持续关注!!…...

顶顶通呼叫中心中间件-机器人话术挂机后是否处理完成事件

前言 问题:机器人放音的过程中,如果用户直接挂机就会继续匹配下一个流程,如果匹配上的是放音节点,还会进行放音,那么在数据库表中就会多出一条放音记录。 解决方法 一、话术添加一个全局挂机节点 需要在话术中添加一…...

Springboot Mybatis 动态SQL

动态SQL <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.wzb.SqlImprove2024…...

ORM的了解

什么是ORM&#xff1f;为什么要用ORM&#xff1f;-CSDN博客 C高级编程&#xff08;99&#xff09;面向资源的设计思想&#xff08;ORM&#xff09;_c orm-CSDN博客 ORM:Object-Relational-Mapping 对象关系映射 -------------------------- 我想对数据库中的表A进行增删改…...

关于大模型的10个思考

9月28日&#xff0c;第四届“青年科学家50论坛”在南方科技大学举行&#xff0c;美国国家工程院外籍院士沈向洋做了《通用人工智能时代&#xff0c;我们应该怎样思考大模型》的主题演讲&#xff0c;并给出了他对大模型的10个思考。 以下是他10个思考的具体内容&#xff1a; 1…...

CFR( Java 反编译器)---> lambda 表达式底层实现机制

一、安装教程 CFR&#xff08;Class File Reader&#xff09;是一个流行的Java反编译器&#xff0c;它可以将编译后的.class文件或整个.jar文件转换回Java源代码。以下是CFR的下载和使用教程&#xff1a; 下载CFR 访问CFR的官方网站或GitHub仓库&#xff1a;CFR的最新版本和所…...

《C++多态性:开启实际项目高效编程之门》

在 C的广阔编程世界中&#xff0c;多态性是一个强大而富有魅力的特性。它为程序员提供了极大的灵活性和可扩展性&#xff0c;使得代码能够更加优雅地应对复杂的业务需求。在实际项目中&#xff0c;理解和正确应用 C的多态性至关重要&#xff0c;它可以显著提高代码的质量、可维…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...