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

浅谈大语言模型原理

1.反向传播算法

  1. 背景
    在这里插入图片描述
    反向传播算法是当前深度学习的核心技术。

  2. 神经网络

    在这里插入图片描述

  • x是输入,o是输出,w是需要训练的参数(w有初始值)
  • 三层全连接的神经网络:输入层、隐藏层、输出层
  1. 激活函数

    f ( x ) = 1 1 + x − 1 f(x)=\frac{1}{1+x^{-1}} f(x)=1+x11 (sigmod函数)

    激活函数必须是非线性的

  2. 前向传播

    z 1 = x 1 ∗ w 1 + x 2 ∗ w 3 + b 1 z_1=x_1*w_1+x_2*w_3+b_1 z1=x1w1+x2w3+b1

    f ( z 1 ) = 1 1 + z 1 − 1 f(z_1)=\frac{1}{1+z_1^{-1}} f(z1)=1+z111

    i 1 = f ( z 1 ) ∗ w 5 + f ( z 2 ) ∗ w 7 + b 2 i_1=f(z_1)*w_5+f(z_2)*w_7+b_2 i1=f(z1)w5+f(z2)w7+b2

    o 1 = f ( i 1 ) = 1 1 + i 1 − 1 o_1=f(i_1)=\frac{1}{1+i_1^{-1}} o1=f(i1)=1+i111

    注:b为常数

  3. 损失函数

    E = 1 / 2 ∗ ( o 1 − t a r g e t 1 ) 2 + 1 / 2 ∗ ( o 2 − t a r g e t 2 ) 2 E=1/2*(o_1-target_1)^2+1/2*(o_2-target_2)^2 E=1/2(o1target1)2+1/2(o2target2)2

  4. 梯度计算

    链式求导法则: ∂ ( E ) ∂ ( w 5 ) = ∂ ( E ) ∂ ( o 1 ) ∗ ∂ ( o 1 ) ∂ ( i 1 ) ∗ ∂ ( i 1 ) ∂ ( w 5 ) \frac{\partial(E)}{\partial(w_5)} = \frac{\partial(E)}{\partial(o_1)}*\frac{\partial(o_1)}{\partial(i_1)}* \frac{\partial(i_1)}{\partial(w_5)} (w5)(E)=(o1)(E)(i1)(o1)(w5)(i1)

    ∂ ( E ) ∂ ( o 1 ) = − ( o 1 − t a r g e t 1 ) \frac{\partial(E)}{\partial(o_1)}= -(o_1-target_1) (o1)(E)=(o1target1)

    ∂ ( o 1 ) ∂ ( i 1 ) = f ( z 1 ) ∗ ( 1 − f ( z 1 ) ) \frac{\partial(o_1)}{\partial(i_1)}=f(z_1)*(1-f(z_1)) (i1)(o1)=f(z1)(1f(z1))

    ∂ ( i 1 ) ∂ ( w 5 ) = f ( z 1 ) \frac{\partial(i_1)}{\partial(w_5)}=f(z_1) (w5)(i1)=f(z1)

  5. 反向传播

    沿着梯度相反的方向更新参数:

    w 5 + = w 5 − η ∗ ∂ ( E ) ∂ ( w 5 ) w_5^+=w_5-\eta * \frac{\partial(E)}{\partial(w_5)} w5+=w5η(w5)(E)

    学习率 η \eta η不可太大也不可太小,太大会导致震荡,太小会导致收敛速度慢,太大错过最优点。

  6. 反复迭代上述过程,直至E值达到全局最小(大)值。
    在这里插入图片描述

  7. 常见的神经网络层

    • 全连接层
    • 卷积层
    • 池化层
    • 循环层
    • dropout层
    • 归一化

每个模型的参数量,层数,神经元连接方式,激活函数,损失函数,参数更新方式都可能不同。

  1. 大模型

    • 通过训练模型来学习从输入到输出的映射关系。

    • 这种映射关系通常由一组权重和偏置参数来定义,这些参数是通过优化损失函数来获得的。

    • 通过调整这些参数,模型可以逐渐改进其预测和生成结果的能力。

    • 大模型和传统神经网络最本质区别是什么?

      规模效应带来的涌现能力是最本质区别。传统模型依赖专门设计的架构解决特定任务,大模型通过海量参数和数据习得通用能力,并能迁移到未见过的任务。

2.训练深度神经网络

深度神经网络由多层神经元组成,每层神经元都可以学习到输入数据的不同特征。

图像识别,语音识别、自然语言处理、自动驾驶、推荐系统、游戏等都广泛应用。

  1. 算法+算力+数据

    深度学习能成功的三大马车。

    • 合适的的数据:
      • 数据标注、数据清洗、数据增强、数据裁剪
    • 合适的网络:
      • 参数量大小,网络层数
      • 参数初始化:随机、平均、归一化
      • 激活函数、损失函数、学习率、优化器
      • 参数与GPU显存使用直接相关
    • 合适的神经元连接方式:
      • 卷积神经网络
        在这里插入图片描述

      • 循环神经网络
        在这里插入图片描述

    • 合适的训练方式:
      • 预训练、迁移学习、微调,生成对抗;

      • 深度学习四大范式 :深度监督、无监督、半监督、强化学习;

        • https://developer.baidu.com/article/details/3034262
      • 强化学习:

        • 智能体与环境的不断交互(即在给定状态采取动作),进而获得奖励,此时环境从一个状态转移到下一个状态。
        • 智能体通过不断优化自身动作策略,以期待最大化其长期回报或收益(奖励之和)。

        在这里插入图片描述

  2. 常见的问题:

    • 过拟合是指模型过于拟合训练数据,而欠拟合是指模型拟合不足
    • 梯度消失是指在反向传播过程中,梯度值随着层的深度而减小,导致深层神经元的梯度值接近于零
    • 梯度爆炸是指在反向传播过程中,梯度值随着层的深度而增大,导致深层神经元的梯度值变得非常大
  3. 常见的深度学习框架

    • TensorFlow:谷歌
    • PyTorch:Facebook
    • MXNet:亚马逊
    • Caffe:伯克利大学
    • Horovod:优化分布式训练的框架

    这些框架提供了丰富的API和工具用于构建、训练、验证、评价模型。

3.大语言模型构建

  1. NLP模型发展:统计模型(马尔可夫假设)-> 神经网络(循环神经网络) -> 预训练语言模型 -> 大语言模型(超大参数量,千、万亿级别)

  2. 大语言模型:在海量无标注文本数据上预训练的得到的大型预训练语言模型 —>强大的语言理解能力和复杂任务求解能力。

    • 扩展法则:小算力去预估大算力后性能,早期性能去预估后期性能。–>减少试验成本
    • 涌现能力:模型扩展到一定规模时,模型的特定的任务性能突然出现显著跃升的趋势(无法解释!)。
      • 上下文学习
      • 指令遵循:听人的话执行任务
      • 逐步推理:思维连–>引入中间推理步骤做数学应用题
  3. 相关资源:

    • 模型检查点
    • 公共API:可以采用自己的数据来微调,以便更好地适用于个性化应用场景
    • 数据集
      • 预训练数据集:网页、书籍、代码数据集
      • 指令微调数据集
      • 人类对齐数据集

3.1大规模预训练

编码世界,知识注入(几T数据,清洗、词元化–>算力消耗)

3.1.1数据准备

  1. 数据:文本、百科、代码
  2. 数据预处理:质量过滤,敏感内容过滤,去重
  3. 词元化:将原始文本分割成模型可识别和建模的词元序列,用于模型输入。把文本拆转成更小的单元,再转成数字。
  4. 数据调度:各种数据的混合比例和用与训练的顺序

3.1.2模型架构

当前的大语言模型都是基于Tansformer模型设计的。

  1. Transformer:由多层的多头自注意力模块堆叠而成的神经网络模型。

    • 循环神经网络的劣势

      • 输出取决于先前的隐藏状态和当前的输入,要等上一个步骤完成后,才能进行当前的计算。
      • RNN不擅长处理长序列,因为难以捕捉到长距离依赖性的语义关系。
    • transformoer架构

      • 编解码器,Transformer通常包括一个编码器用于处理输入序列和一个解码器用于生成输出序列,这使其适用于序列到序列的任务,如机器翻译。
      • 输入编码:转化成具有位置信息的词向量,因为 Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息,而这部分信息对于 NLP 来说非常重要。所以Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。
      • 多个编码器串联,多个解码器串联
        在这里插入图片描述
    • tansformer实现
      在这里插入图片描述

      • 前馈网络层:引入非线性映射变换,提升模型表达能力,更好捕获复杂交互关系。
      • ADD & Nomral层:解决网络训练中的一些问题。
      • softmax层:输出预测词的概率
      • 自注意力机制:自注意力机制允许模型根据输入序列中的不同部分来赋予不同的注意权重,从而更好地捕捉语义关系。
        • Self-Attention 接收的是输入(单词的表示向量x组成的矩阵X) 或者上一个 Encoder block 的输出。而Q,K,V是输入和矩阵的乘积。

        • $Q_1 = W_Q * X_1; K_1 = W_KX_1; V_1 = W_KX_1 $ (可并行计算 GPU,TPU)

        • Z 1 = A ( Q , K , V ) Z_1 = A(Q,K,V) Z1=A(Q,K,V) (需要拿输入句子中的每个单词对本单词打分,帮助模型对本单词更好地进行编码)

        • 卷积神经网络代替循环神经网络:卷积层多次层叠后,可以获取更大的上下文信息。

      • 多头自注意力机制:多个Self-Attention并列,对输入X 生成多个Z,多个Z拼接再乘一个权重矩阵,得到输出。
        核心创新,建模任意词元的交互关系,进而有效捕获长程依赖关系,具有更强的序列建模能力。
        每个单元关注不同的地方。
      • Decoder block 的第一个 Multi-Head Attention 采用了 Masked 操作。
        因为在翻译的过程中是顺序翻译的,即翻译完第 i 个单词,才可 以翻译第 i+1 个单词。
        通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息。
      • outputs 是之前预测的输出结果。(根据之前的输出求解此次的输出)
  2. 大模型:使用了更长的向量维度,更深的层数,更多参数的解码器架构。

    • 大语言模型是Transformer架构的规模化扩展,通过量变引发质变,获得了更强大的语言理解和生成能
    • GPT1为例,它有1.17亿个参数,到了GPT2,参数有15亿个参数。而GPT3参数有1750亿个参数,96层和96个头数,GPT4有1.8万亿参数。
    • 编解码器可以单独使用
      • BERT为编码器架构
      • GPT为解码器架构

3.1.3 模型预训练方法

  1. 语言建模:预测下一个单词的能力
  2. 参数优化设置:
    • 大批次, 逐渐增大批次大小(尽快收敛->稳定收敛)
    • 学习率从一个非常小的值现行增加到一个较大阈值,再逐步衰减
    • 优化器:梯度修正
    • 其他:模型存档,dropout等
  3. 其他训练技术(3D并行)
    • 数据并行:将模型参数和优化器分到多个GPU,在每个GPU上获取梯度,使用梯度平均值更新所有GPU上的参数。
    • 流水线并行:不同层的参数分配到不同GPU,累积前向传播多个批次后,再更新参数。
    • 张量并行:矩阵运算 I W = [ I W 1 , I W 2 ] IW=[IW1,IW2] IW=[IW1,IW2],将矩阵W分解成W1,W2两个矩阵,将W1,W2放置到两个GPU上,并行执行两个矩阵运算,通过GPU通信,合并结果。

3.2指令微调

  • 有监督训练,使用任务输入与输出的配对数据(模仿学习,激发作用)–>通过问答进行任务求解。
  • 让模型听懂人的指令。
  • 数据集仅预训练过程万分之一的大小。
  1. 指令数据集
    • 输入:数据(language)+任务描述(翻译成中文);输出:语言
      • NLP数据集:从公开NLP数据集中构建(人工标注任务描述)
      • 日常对话数据集:从用户给模型的指令(对话)中,构建数据集
      • 合成数据集:半自动化构建:提示模型,让模型帮忙生成数据集,再过滤
    • 引入思维链数据:算数推理等
  2. 指令微调的作用
    • 小训练模型能力大提升
    • 解决未见过的任务:如补全英文句子->补全日文句子
    • 面向特定领域指令微调
  3. 指令微调训练
    • 较小的学习率和批次小幅度调整
    • 数据组织:
      • 样本比例混合(NLP、日常对话、合成数据集三个数据集混合)
      • 多阶段:三个数据集先后训练
      • 指令微调阶段引入预训练数据->模型更加稳定

3.3人类对齐

  • 对齐标注难以通过形式化的目标来优化,引入人类反馈指导。
  • 基于人类反馈的强化学习,训练符合人类价值观的模型,防止产生冒犯偏见和事实错误文本。
  1. 标准
    • 有用性:简洁高效完成任务,了解用户真实意图
    • 诚实性:客观,准确,适当表达不确定性避免误导
    • 无害性:消除冒犯性和歧视性,查询敏感主图时,应拒绝
  2. 步骤
    1. 奖励模型训练
      • 使用模型生成多个候选输出,人为标注排序
      • 训练模型来预测这个排序,有效的拟合人类偏好
    2. 强化学习训练
      • 强化学习算法:策略梯度,PPO

3.4 评测

  1. 建模能力:反映模型对语言的基本理解和建模能力(可根据前文预测后文的能力)。困惑度
  2. 分类任务和问答:真正例,真负例,假正例,假负例。精确率,召回率,F1分数。
  3. 文本生成:衡量文本生成的质量,连贯性逻辑性等。BLEU(生成文本和参考范文之间的相似度)
  4. 执行任务能力:成功率(比如代码生成后能通过编译的成功率)
  • 每一种能力的测评,都有相关的公开数据集。

3.5 提示学习

经过预训练、指令微调和人类对齐后,提示学习方法可有效地使用大语言模型解决实际任务。

  1. 人工提示
    任务描述:清晰具体
    输入数据:明确的数字
    上下文信息:提供参考文档
    提示策略:如“让我们一步步思考”
  2. 自动提示:将提示词作为可训练参数
  3. 上下文学习:将示例样本格式化的输入到大模型

3.5 AI agent

在这里插入图片描述

参考文献

  • 词元化:https://zhuanlan.zhihu.com/p/17845281626
  • 反向传播算法:https://blog.csdn.net/ft_sunshine/article/details/90221691
  • 大模型概述:https://llmbook-zh.github.io/
  • transformer:
    • https://zhuanlan.zhihu.com/p/163909808
    • https://blog.csdn.net/weixin_42475060/article/details/121101749
    • https://blog.csdn.net/weixin_42475060/article/details/121101749
    • https://blog.51cto.com/u_16213711/13024654
    • https://blog.csdn.net/weixin_42475060/article/details/121101749

相关文章:

浅谈大语言模型原理

1.反向传播算法 背景 反向传播算法是当前深度学习的核心技术。 神经网络 x是输入,o是输出,w是需要训练的参数(w有初始值)三层全连接的神经网络:输入层、隐藏层、输出层 激活函数 f ( x ) 1 1 x − 1 f(x)\frac…...

设计模式之中介者模式

在我们实际开发中,我们经常会遇到多个对象之间互相依赖、互相调用的场景。如果这些对象之间的耦合度太高,不仅会让系统变得难以维护,还会让扩展变得异常困难。此时,中介者模式(Mediatro)就是一种非常实用的设计方案,它…...

Matlab 空调温度时延模型的模糊pid控制

1、内容简介 Matlab 231-空调温度时延模型的模糊pid控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略中央空调温湿度采用PID控制系统的探讨.pdf 中央空调房间温度智能 PID控制的仿真研究.pdf...

RabbitMQ ③-Spring使用RabbitMQ

Spring使用RabbitMQ 创建 Spring 项目后&#xff0c;引入依赖&#xff1a; <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp --> <dependency><groupId>org.springframework.boot</groupId><artifac…...

C++修炼:模板进阶

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…...

Spring Boot集成RabbitMQ高级篇:可靠性与性能提升

一、环境准备 安装 RabbitMQ 在官网上下载对应操作系统的安装包&#xff08;如 Windows、Linux 等&#xff09;&#xff0c;按照安装向导完成安装。 安装完成后&#xff0c;启动 RabbitMQ 服务。在 Windows 系统下&#xff0c;可以在服务列表中找到 RabbitMQ Server 并启动&am…...

Shell脚本编程3(函数+正则表达式)

1.函数 1.1 定义 简单来讲&#xff0c;所谓函数就是把完成特定功能&#xff0c;并且多次使用的一组命令或者语句封装在一个固定的结构中&#xff0c;这个结构我们就叫做函数。从本质上讲&#xff0c;函数是将一个函数名与某个代码块进行映射。也就是说&#xff0c;用户在定义了…...

【C++】语言深处的“精灵”:探索内存的奥妙

这里我们要知道&#xff0c;我们编写一个程序&#xff0c;这个程序中的变量是存储在哪个区域的 栈一般是用于静态的分配内存的&#xff0c;但也可以动态的分配内存&#xff0c; 堆是用于动态的分配内存的&#xff0c;不能静态的分配内存 栈&#xff1a; 通常是向低地址方向…...

c语言第一个小游戏:贪吃蛇小游戏03

我们为贪吃蛇的节点设置为一个结构体&#xff0c;构成贪吃蛇的身子的话我们使用链表&#xff0c;链表的每一个节点是一个结构体 显示贪吃蛇身子的一个节点 我们这边node就表示一个蛇的身体 就是一小节 输出结果如下 显示贪吃蛇完整身子 效果如下 代码实现 这个hasSnakeNode(…...

51 单片机头文件 reg51.h 和 reg52.h 详解

51 单片机头文件详解 51 单片机的头文件reg51.h和reg52.h是开发中非常重要的文件,它们定义了单片机的特殊功能寄存器 (SFR) 和位地址。以下是对这两个头文件的详细解析: 1. 头文件概述 reg51.h:针对标准 8051 单片机(4KB ROM, 128B RAM) reg52.h:针对增强型 8052 单片…...

让 - 艾里克・德布尔与斯普林格出版公司:科技变革下的出版业探索

在数字化浪潮席卷全球的当下&#xff0c;传统出版行业面临着前所未有的挑战与机遇。《对话 CTO&#xff0c;驾驭高科技浪潮》的第 10 章聚焦于让 - 艾里克・德布尔&#xff08;Jean - Eric Debeure&#xff09;及其所在的斯普林格出版公司&#xff08;Springer Publishing Comp…...

[python] 面向对象的三大特性-封装及新式类

一 继承 继承是指一个类&#xff08;子类&#xff09;可以继承另一个类&#xff08;父类&#xff09;的属性和方法&#xff0c;并可以在其基础上进行扩展或修改。 子类可以继承父类的属性和方法,包括私有属性和隐藏属性 &#x1f4a1; 核心思想&#xff1a; 避免重复代码&…...

winreg查询Windows注册表的一些基本用法

注册表是Windows操作系统中用于存储配置信息的数据库。它包含了关于系统硬件、已安装的应用程序、用户账户设置以及系统设置的信息。 特别地&#xff0c;当我们需要某些软件的配置配息时&#xff0c;主要在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下的SoftWare内进行查询操作。 …...

DHCP自动分配IP

DHCP自动分配IP 练习1 路由器 Router>en Router#conf t Router(config)#ip dhcp pool ip10 //创建DHCP地址池 Router(dhcp-config)#network 192.168.20.0 255.255.255.0 // 配置网络地址和子网掩码 Router(dhcp-config)#default-router 192.168.20.254 //配置默认网关 Rou…...

互联网大厂Java求职面试实战:Spring Boot与微服务场景深度解析

&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通 &#x1f601; 2. 毕业设计专栏&#xff0c;毕业季咱们不慌忙&#xff0c;几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...

TDengine 在金融领域的应用

简介 金融行业正处于数据处理能力革新的关键时期。随着市场数据量的爆炸式增长和复杂性的日益加深&#xff0c;金融机构面临着寻找能够高效处理大规模、高频次以及多样化时序数据的大数据处理系统的迫切需求。这一选择将成为金融机构提高数据处理效率、优化交易响应时间、提高…...

十三、动态对象创建(Dynamic Object Creation)

十三、动态对象创建&#xff08;Dynamic Object Creation&#xff09; 目录 13.1 对象创建&#xff08;Object creation&#xff09;13.2 new / delete 操作符13.3 数组的 new 与 delete13.4 总结 背景说明 有时候我们需要知道程序中对象的数量、类型和声明周期&#xff0c;…...

cursor Too many报错 显示锁机器码怎么办?也就是Cursor的

22. Too many报错 显示锁机器码怎么办&#xff1f;也就是Cursor的 文档出自&#xff1a;https://www.kdocs.cn/l/cp5GpLHAWc0p...

window 显示驱动开发-将虚拟地址映射到内存段(二)

在将虚拟地址映射到段的一部分之前&#xff0c;视频内存管理器调用显示微型端口驱动程序的 DxgkDdiAcquireSwizzlingRange 函数&#xff0c;以便驱动程序可以设置用于访问可能重排的分配位的光圈。 驱动程序既不能将偏移量更改为访问分配的 PCI 光圈&#xff0c;也不能更改分配…...

Linux 软硬连接详解

目录 一、软链接&#xff08;Symbolic Link&#xff09; ‌定义与特性 ‌实现方法‌使用 ln -s 命令&#xff1a; 二、硬链接&#xff08;Hard Link&#xff09; 1、是什么 2、工作机制 3、实现方式 一、软链接&#xff08;Symbolic Link&#xff09; ‌定义与特性 定义…...

虚拟主机与独立服务器:哪个更好?

在选择网站主机提供商时&#xff0c;你可以选择独立服务器或者与其他用户共同使用的虚拟主机。这个决定不仅仅是基于价格&#xff0c;还有很多其他因素需要考虑。接下来&#xff0c;我们就来详细了解一下虚拟主机和独立服务器的区别。 虚拟主机和独立服务器的区别 独立服务器是…...

MiMo-7B-RL调研

结论 MiMo 在数学推理和代码竞赛的评测中表现出色&#xff0c;但是相较于 OpenAI 的 o1-mini 和阿里的 QwQ-32B-Preview 等更大规模的模型&#xff0c;推理耗时更长&#xff08;4 到 10 倍&#xff09;&#xff0c;花费 Token 更多。 链接 开源地址: https://huggingface.co/…...

vue-i18n 优化

语言包管理优化&#xff1a; 当前语言包文件&#xff08;en.json 和 zh.json&#xff09;过大&#xff0c;建议按模块拆分建议的目录结构&#xff1a; src/assets/i18n/ ├── modules/ │ ├── common/ │ ├── dashboard/ │ ├── report/ │ └── system/ …...

全栈工程师实战手册:LuatOS日志系统开发指南!

本文聚焦LuatOS-log库的实战应用场景&#xff0c;通过完整案例演示日志模块集成、格式定制及远程同步方案&#xff0c;帮助全栈开发者构建灵活可靠的日志管理框架。下面&#xff0c;我们一起来认识LuatOS的log库&#xff01; 一、 log.info() log info()主要打印一些正常的…...

Java知识库网站整理

本文主要推荐一些高质量的Java知识库和学习网站&#xff0c;涵盖了从基础到高级的Java技术&#xff0c;包括JVM底层原理、框架源码分析、面试题集、全栈知识体系等。如果你有其他优秀的Java学习网站推荐&#xff0c;欢迎在评论区分享&#xff01; 如遇到以下网站不能打开请检查…...

详解 IRC协议 及客户端工具 WeeChat 的使用

本文将详细介绍 Internet Relay Chat&#xff08;IRC&#xff09;协议及其历史、基本概念、核心功能&#xff0c;以及流行的 IRC 客户端 WeeChat 的安装、配置和使用方法。内容力求准确、详尽&#xff0c;涵盖 IRC 的技术背景、使用场景&#xff0c;以及 WeeChat 的高级功能和实…...

数据出境的安全合规思考

数据已成为新型国家战略性资产&#xff0c;其经济和战略价值在全球数字经济发展中愈加凸显。跨境数据流动既是重要的经济纽带&#xff0c;又是新兴的经济秩序博弈焦点&#xff0c;对于推动经济全球化发展意义重大。然而&#xff0c;跨境数据流动也面临诸多问题与挑战&#xff0…...

【技巧】使用frpc点对点安全地内网穿透访问ollama服务

回到目录 【技巧】使用frpc点对点安全地内网穿透访问ollama服务 0. 为什么需要部署内网穿透点对点服务 在家里想访问单位强劲机器&#xff0c;但是单位机器只能单向访问互联网&#xff0c;互联网无法直接访问到这台机器。通过在云服务器、单位内网服务器、源端访问机器上&am…...

Go语言即时通讯系统 开发日志day1

Go语言即时通讯系统开发日志day1&#xff0c;主要模拟实现的一个简单的发送消息和接受消息的小demo&#xff0c;因为也才刚学习go语言的语法&#xff0c;对go的json、net/http库了解不多&#xff0c;所以了解了一下go语言的encoding/json库和net/http库&#xff0c;以及websock…...

多线程访问Servlet如何谨慎处理共享资源

1. 避免共享状态&#xff08;最佳实践&#xff09; 核心思想&#xff1a;Servlet 本身应设计为无状态&#xff08;Stateless&#xff09;&#xff0c;不依赖实例变量存储请求相关数据。 实现方式&#xff1a; 将变量声明在方法内部&#xff08;局部变量&#xff09;&#xff0…...

OpenMCU(六):STM32F103开发板功能介绍

概述 距上一篇关于STM32F103的FreeRTOS博客的发布已经过去很长时间没有更新了。在这段时间内&#xff0c;大家可以看到博主发表了一系列的关于使用qemu 模拟实现STM32F103的博客&#xff0c;博主本来想借助qemu开发stm32F103相关的一些软件功能&#xff0c;博主开发出来并成功运…...

运用数组和矩阵对数据进行存取和运算——NumPy模块 之五

目录 NumPy模块介绍 3.5.1 NumPy 操纵数组元素的逻辑 3.5.2 添加数组元素操作 1. append() 函数 2. insert() 函数 3.5.3 删除数组元素的操作 delete() 函数 3.5.4 数组元素缺失情况的处理 isnan() 函数 3.5.5 处理数组中元素重复情况 unique() 函数 3.5.6 拼接数组操作 1. con…...

AI Agent开发第64课-DIFY和企业现有系统结合实现高可配置的智能零售AI Agent

开篇 我们之前花了将近10个篇章讲Dify的一些基础应用,包括在讲Dify之前我们讲到了几十个AI Agent的开发例子,我不知道大家发觉了没有,在AI Agent开发过程中我们经常会伴随着这样的一些问题: 需要经常改猫娘;需要经常改调用LLM的参数,甚至在一个流程中有3个节点,每个节点…...

日志 Slf4j , Java 中使用

// 示例代码package biz.baijing.controller;import biz.baijing.pojo.Result; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.w…...

Matlab 单机无穷大系统故障

1、内容简介 Matlab 236-单机无穷大系统故障 可以交流、咨询、答疑 2、内容说明 略 摘要&#xff1a;短路是电力系统中最容易发生的故障&#xff0c;每年因短路而引发的电气事故不计其数。本文详细介绍了短路故障产生的原因以及危害等&#xff0c;并重点介绍了Simulink仿真工…...

Hadoop区别

Hadoop • 定义 • Hadoop是一个由Apache基金会开发的分布式计算平台。它主要包括HDFS&#xff08;Hadoop Distributed File System&#xff09;和MapReduce编程模型。HDFS用于存储大规模数据&#xff0c;它将文件分割成多个数据块&#xff08;block&#xff09;&#xff0c;并…...

【软件工程】软件缺陷 基于组合的优化方法

在软件缺陷检测中&#xff0c;基于组合的优化方法主要通过数学和计算策略高效地探索可能的解空间&#xff0c;以解决测试用例生成、缺陷定位和预测等问题。以下是其关键要点和应用场景的整理&#xff1a; 1. 组合优化在软件缺陷检测中的应用场景 测试用例生成 组合测试&#xf…...

python opencv 将不同shape尺寸的图片制作video视频

python opencv 将不同shape尺寸的图片制作video视频。 具体代码实现如下&#xff1a; import os import cv2 import time import shutil def resize_img_keep_ratio(img, target_size):old_size img.shape[:2] # 原始图像大小ratio min(target_size[i] / old_size[i] for …...

Open CASCADE学习|由大量Edge构建闭合Wire:有序与无序处理的完整解析

在CAD建模中,构建闭合的Wire(线框)是拓扑结构生成的基础操作。OpenCascade(OCCT)作为强大的几何建模库,支持从离散的Edge(边)构建Wire,但在实际应用中,边的有序性直接影响构建的成功率。本文将详细探讨有序与无序两种场景下的实现方法,并提供完整代码示例。 一、有序…...

在IDEA中导入gitee项目

一、导入前准备工作 1、下载gitee插件 2、下载好之后就能在VCS中找到share Project on gitee。 二、导入 1、回到idea主页面 2、可以授权登录绑定gitee账号&#xff0c;就可以直接打开仓库。&#xff08;条件是这个是要打开自己仓库里的代码&#xff09; 3、也可以复制看见的…...

Edge Remover v18.7 绿色版:轻松卸载 Edge 浏览器,彻底清理残留数据

Edge Remover 是一款专门用于卸载 Microsoft Edge 浏览器及其 WebView2 运行时的工具。它能够彻底删除 Edge 浏览器及其相关组件&#xff0c;包括所有文件、注册表项和其他残留数据。此外&#xff0c;Edge Remover 还可以防止 Windows 更新自动重新安装 Edge 浏览器。 软件功能…...

深入理解 iOS 开发中的 `use_frameworks!`

在使用 CocoaPods 管理 iOS 项目依赖时&#xff0c;开发者经常会在 Podfile 文件中看到一个配置选项&#xff1a;use_frameworks!。本文将详细介绍这个配置选项的含义&#xff0c;以及如何决定是否在项目中使用它。 一、什么是 use_frameworks! 在 CocoaPods 中引入第三方库时…...

Vue学习百日计划-Gemini版

核心理念&#xff1a; 基础先行&#xff1a; HTML, CSS, JavaScript 是前端的基石&#xff0c;必须扎实。聚焦 Vue 3&#xff1a; 学习当前主流的 Vue 3 版本&#xff0c;重点掌握 Composition API。实践驱动&#xff1a; 每个阶段都要有项目练习&#xff0c;理论结合实践。生…...

不定长滑动窗口---初阶篇

目录 引言 求最长/最大 3. 无重复字符的最长子串 3090. 每个字符最多出现两次的最长子字符串 1493. 删掉一个元素以后全为 1 的最长子数组 1208. 尽可能使字符串相等 904. 水果成篮 1695. 删除子数组的最大得分 2958. 最多 K 个重复元素的最长子数组 2024. 考试的最大…...

MacOS 上构建 gem5

MacOS 中只存在 python3&#xff0c;但是scons 只认 python&#xff0c;不在 系统中创建 软连接&#xff0c;一个是因为比较难操作&#xff1b;另一个是尽量不要更改系统。所以独立构件python 和scons&#xff1a; 1&#xff0c;安装python 下载源代码&#xff1a; Python S…...

矩阵置零算法讲解

矩阵置零算法讲解 一、问题描述 给定一个 (m \times n) 的矩阵,如果一个元素为 (0) ,则将其所在行和列的所有元素都设为 (0) 。要求使用原地算法,即在不使用额外矩阵空间的情况下完成操作。 二、解题思路 暴力解法 最直观的想法是遍历矩阵,当遇到 (0) 元素时,直接将其…...

HAProxy + Keepalived + Nginx 高可用负载均衡系统

1. 项目背景 在现代Web应用中&#xff0c;高可用性和负载均衡是两个至关重要的需求。本项目旨在通过HAProxy实现流量分发&#xff0c;通过Keepalived实现高可用性&#xff0c;通过Nginx提供后端服务。该架构能够确保在单点故障的情况下&#xff0c;系统仍然能够正常运行&#…...

火山RTC 6 自定义视频

文档&#xff1a; 自定义视频采集--实时音视频-火山引擎 这个点&#xff0c;相关的文档 关于PC上的资料只有寥寥几句&#xff0c;没有代码、没有DEMO&#xff0c;自己琢磨了几天&#xff0c;没走对方向&#xff0c;和客服你来我往拉锯了几天加投诉下&#xff0c;才给了点内部…...

[Java][Leetcode middle] 121. 买卖股票的最佳时机

暴力循环 总是以最低的价格买入&#xff0c;以最高的价格卖出: 例如第一天买入&#xff0c;去找剩下n-1天的最高价格&#xff0c;计算利润 依次计算到n-1天买入&#xff1b; 比较上述利润 // 运行时间超时。 o(n^2)public int maxProfit1(int[] prices) {int profit 0;for (i…...

《数据结构初阶》【堆 + 堆排序 + TOP-K】

【堆 堆排序 TOP-K】目录 前言&#xff1a;什么是堆&#xff1f;堆的实现方式有哪些&#xff1f;我们要选择哪种方式进行实现&#xff1f; ----------------堆的实现----------------什么是向上调整算法&#xff0c;要怎么实现&#xff1f;什么是向下调整算法&#xff0c;要怎…...