当前位置: 首页 > 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;它可以显著提高代码的质量、可维…...

UDS_5_输入输出控制功能单元

目录 一. 0x2F服务 一. 0x2F服务 InputOutputControlByIdentifier(0x2F)服务 用于替换服务器输入信号的值或内部功能控制电子系统的某个输出(执行器) •请求报文 A_Data Byte Parameter Name Cvt Byte Value #1 InputOutputControlByIdentifier Request SID M 0x2F dataI…...

CAD快捷键

CAD快捷键 功能快捷键描述直线L点PO多段线PL多用于描边构造线XL无限长直线射线RAY样条曲线SPL绘制光滑曲线–––圆弧A圆C矩形REC正多边形POL–––填充H圆角F倒角CHA–––打断BR分解X合并J–––创建块B插入块I 功能快捷键描述移动M复制CO擦除E修剪TR延伸EX拉伸S镜像MI偏移…...

Spring6梳理12——依赖注入之注入Map集合类型属性

以上笔记来源&#xff1a; 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09;https://www.bilibili.com/video/BV1kR4y1b7Qc 12 依赖注入之注入Map集合类型属性 12.1 创建Student类和Teacher类 Student类中创建了run…...

基于SpringBoot校园失物招领系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 本课题的作用、意义&#xff0c;在国内外的研究现状和发展趋势&#xff0c;尚待研究的问题 作用&#xff1a;本课题的目的是使失物招领信息管理清晰化&#xff0c;透明化&#xff0c;便于操作&#xff0c;易于管理。通过功能模…...

推荐4款2024年热门的PDF转ppt工具

有时候&#xff0c;我们为了方便&#xff0c;需要将PDF里面的内容直接转换的PPT的格式&#xff0c;既方便自己演示和讲解&#xff0c;也让我们可以更加灵活的进行文件的编辑和修改。如果大家不知道要如何进行操作的话&#xff0c;我可以为大家推荐几个比窘方便实用的PDF转换工具…...

[深度学习]卷积神经网络CNN

1 图像基础知识 import numpy as np import matplotlib.pyplot as plt # 图像数据 #imgnp.zeros((200,200,3)) imgnp.full((200,200,3),255) # 可视化 plt.imshow(img) plt.show() # 图像读取 imgplt.imread(img.jpg) plt.imshow(img) plt.show() 2 CNN概述 卷积层convrelu池…...

从零开始,Docker进阶之路(三):Docker镜像与命令

一、Docker核心名词 镜像文件、容器、仓库 镜像&#xff1a;简单理解为就是一个安装包&#xff0c;里面包含容器所需要运行的基础文件和配置信息&#xff0c;比如&#xff1a;redis镜像、mysql镜像等。 镜像的来源方式&#xff1a; 1.自己做镜像&#xff0c;比如自己开发微服…...

【计算机网络】网络层详解

文章目录 一、引言二、IP 基础知识1、IP 地址2、路由3、IP报文4、IP报文的分片与重组 三、IP 属于面向无连接型四、IP协议相关技术1、DNS2、ICMP3、NAT技术4、DHCP 一、引言 TCP/IP的心脏是网络层。这一层主要由 IP 和 ICMP 两个协议组成。网络层的主要作用是“实现终端节点之…...

后端开发刷题 | 最小的K个数(优先队列)

描述 给定一个长度为 n 的可能有重复值的数组&#xff0c;找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字&#xff0c;则最小的4个数字是1,2,3,4(任意顺序皆可)。 数据范围&#xff1a;0≤k,n≤10000&#xff0c;数组中每个数的大小0≤val≤1000 要…...

【JavaEE】——阻塞队列,生产消费者模型(较难)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;阻塞队列 1&#xff1a;概念 2&#xff1a;阻塞队列与普通队列比较 二&#xff1a;“生…...

wordpress幻灯片名/手机怎么创建自己的网站平台

IntelliJ IDEA是Java语言开发的集成环境&#xff0c;IntelliJ在业界被公认为优秀的Java开发工具之一&#xff0c;尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IntelliJ IDEA现已更新至2019.…...

wordpress阿里云短信/seo 最新

1、安装setuptool 下载&#xff1a;https://pypi.org/project/setuptools/#files 执行命令&#xff1a;python setup.py install 2、安装pip 下载&#xff1a;https://pypi.org/project/pip/#files 执行命令&#xff1a;python setup.py install...

b2b网站大全黄页8禁/十大销售管理软件排行榜

Afly | 2006-7-29 | Fanfou 勇敢、专注、孤独、坚定、团结、残酷 ……这就是狼的世界。 在这个世界里&#xff0c;没有对&#xff0c;没有错&#xff0c;只有成功。没有正义&#xff0c;没有罪恶&#xff0c;只有一个目的&#xff1a;生存…… 用一种动物的特征形象地表达企业…...

wordpress 360加速/抖音seo培训

为了将print函数输出的内容对齐&#xff0c;笔者在http://www.jb51.net/article/55768.htm中找到了左右对齐的方法。整理如下&#xff1a; 一、数值类型&#xff08;int、float&#xff09; # %d、%f是占位符 >>> a 3.1415926 >>> print("%d"%a) …...

做图标去什么网站找/站长工具端口检测

1444 “破锣摇滚”乐队 时间限制: 1 s空间限制: 256000 KB题目等级 : 白银 Silver题解题目描述 Description你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1 < N < 20)首歌的版权。你打算从中精选一些歌曲&#xff0c;发行M(1 < M < 20)张CD。每一张CD最多…...

中小企业做网站推广/珠海关键词优化软件

3.0.6版本上移除了该功能,不过最新快照版已加回来并打上废弃标识,预计3.1.0版本上完全移除 开启动态加载 mapper.xml 多数据源配置多个 MybatisMapperRefresh 启动 bean默认情况下,eclipse保存会自动编译,idea需自己手动编译一次参数说明&#xff1a;sqlSessionFactory:session…...