Kafka 生产者优化与数据处理经验

Kafka:分布式消息系统的核心原理与安装部署-CSDN博客

自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客

Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客

Kafka 生产者优化与数据处理经验-CSDN博客

Kafka 工作流程解析:从 Broker 工作原理、节点的服役、退役、副本的生成到数据存储与读写优化-CSDN博客

Kafka 消费者全面解析:原理、消费者 API 与Offset 位移-CSDN博客

Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍-CSDN博客

Kafka 数据倾斜:原因、影响与解决方案-CSDN博客

Kafka 核心要点解析_kafka mirrok-CSDN博客

Kafka 核心问题深度解析:全面理解分布式消息队列的关键要点_kafka队列日志-CSDN博客

目录

一、提高生产者吞吐量

(一)相关参数设置

(二)代码示例与测试

二、数据可靠性

(一)ACK 机制分析

(二)代码示例与可靠性总结

三、数据去重

(一)数据传递语义

(二)幂等性原理与使用

(三)生产者事务

四、数据有序

五、数据乱序

六、总结


        在大数据处理领域,Kafka 作为一款高性能的分布式消息队列系统,被广泛应用于数据的传输、存储与处理。对于生产者而言,如何高效地将数据发送到 Kafka 集群,同时保证数据的可靠性、去重、有序性等,是至关重要的问题。本文将深入探讨 Kafka 生产者在提高吞吐量、保证数据可靠性、去重、有序性等方面的生产经验,并结合代码示例进行详细分析。

一、提高生产者吞吐量

(一)相关参数设置

  • batch.size:批次大小,默认 16k。适当增大批次大小可以减少网络请求次数,提高吞吐量。例如,将其设置为 18000,可以在一次网络请求中发送更多的数据。

properties.put(ProducerConfig.BATCH_SIZE_CONFIG, 18000);

  • linger.ms:等待时间,修改为 5 - 100ms。该参数控制消息在缓冲区的等待时间,适当增加等待时间可以让更多的消息进入同一批次。比如设置为 1ms,会使消息更快地被发送,减少等待时间带来的延迟,但可能会导致批次较小。

properties.put(ProducerConfig.LINGER_MS_CONFIG, 1);

  • compression.type:压缩 snappy。启用压缩可以减少网络传输的数据量,提高传输效率。Snappy 是一种高效的压缩算法,能够在不显著增加 CPU 开销的情况下,大幅降低数据大小。

properties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");

  • RecordAccumulator:缓冲区大小,修改为 64m。增大缓冲区大小可以容纳更多的消息,避免因缓冲区满而频繁触发发送操作,提高整体性能。

properties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);

(二)代码示例与测试

以下是一个简单的 Kafka 生产者代码示例,展示了如何设置上述参数:

package com.bigdata.producter;

import org.apache.kafka.clients.producer.*;

import java.util.Properties;

/**
 *   测试自定义分区器的使用
 */
public class CustomProducer07 {

    public static void main(String[] args) {

        // Properties 它是map的一种
        Properties properties = new Properties();
        // 设置连接kafka集群的ip和端口
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"bigdata01:9092");
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");

        /**
         *  此处是提高效率的代码
         */
        // batch.size:批次大小,默认 16K
        properties.put(ProducerConfig.BATCH_SIZE_CONFIG, 18000);
        // linger.ms:等待时间,默认 0
        properties.put(ProducerConfig.LINGER_MS_CONFIG, 1);
        // RecordAccumulator:缓冲区大小,默认 32M:buffer.memory
        properties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);
        // compression.type:压缩,默认 none,可配置值 gzip、snappy、lz4 和 zstd
        properties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG,"snappy");



        // 创建了一个消息生产者对象
        KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties);
        // 调用这个里面的send方法
        // ctrl + p
        /*ProducerRecord<String, String> producerRecord = new ProducerRecord<String, String>("first","告诉你个秘密");
        kafkaProducer.send(producerRecord);*/
        for (int i = 0; i < 5; i++) {
            // 发送消息的时候,指定key值,但是没有分区号,会根据 hash(key) % 3 = [0,1,2]
            ProducerRecord<String, String> producerRecord = new ProducerRecord<String, String>("first","c","告诉你个找bigdata的好办法:"+i);
            // 回调-- 调用之前先商量好,回扣多少。
            kafkaProducer.send(producerRecord, new Callback() {
                @Override
                public void onCompletion(RecordMetadata metadata, Exception exception) {

                    // 获取很多信息,exception == null 说明成功,不为null,说明失败
                    if(exception == null){
                        System.out.println("消息发送成功");
                        System.out.println(metadata.partition());// 三个分区,我什么每次都是2分区,粘性分区
                        System.out.println(metadata.offset());// 13 14 15 16 17
                        System.out.println(metadata.topic());
                    }else{
                        System.out.println("消息发送失败,失败原因:"+exception.getMessage());
                    }

                }
            });
        }

        kafkaProducer.close();
    }
}

测试时,可以在 hadoop102 上开启 Kafka 消费者:

bin/kafka-console-consumer.sh --bootstrap-server hadoop11:9092 --topic first

然后在 IDEA 中执行上述代码,观察 hadoop102 控制台中是否接收到消息。

二、数据可靠性

(一)ACK 机制分析

  • acks = 0:生产者发送过来的数据,不需要等数据落盘应答。这种方式效率最高,但可靠性最差。例如,发送了 Hello 和 World 两个信息,若 Leader 直接挂掉,数据就会丢失,因为生产者不会等待任何应答,数据一发送就认为成功,无法保证数据真正被 Kafka 集群接收和持久化。
  • acks = 1:生产者发送过来的数据,Leader 收到数据后应答。此时,如果 Leader 保存成功并应答,但在 Follower 未同步数据时 Leader 挂掉,且该 Follower 成为新的 Leader,那么之前的数据就会丢失,可靠性中等,效率中等。
  • acks = -1(all):生产者发送过来的数据,Leader 和 ISR 队列里面的所有节点收齐数据后应答。这提供了最高的可靠性,但效率相对较低。不过,如果分区副本设置为 1 个(只有一个 leader),或者 ISR 里应答的最小副本数量(min.insync.replicas 默认为 1)设置为 1,和 ack = 1 的效果是一样的,仍然有丢数的风险。数据完全可靠条件是 ACK 级别设置为 -1 + 分区副本大于等于 2 + ISR 里应答的最小副本数量大于等于 2。

Leader收到数据,所有Follower都开始同步数据, 但有一个Follower,因为某种故障,迟迟不能与Leader进行同步,那这个问题怎么解决呢?

解决方案:

Leader维护了一个动态的in-sync replica set(ISR),意为和 Leader保持同步的Follower+Leader集合(leader:0,isr:0,1,2)。

如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该时间阈值由replica.lag.time.max.ms参数设定,默认30s。例如2超时,(leader:0, isr:0,1)。 这样就不用等长期联系不上或者已经故障的节点。

ISR: 可用的,存活的,Leader+Follower

数据可靠性分析:

如果分区副本设置为1个(只有一个leader),或者ISR里应答的最小副本数量 ( min.insync.replicas 默认为1)设置为1,和ack=1的效果是一样的,仍然有丢数的风险(leader:0,isr:0)。

数据完全可靠条件 = ACK级别设置为-1 + 分区副本大于等于2 + ISR里应答的最小副本数量大于等于2

副本数是2,但是ISR中不一定有两个,因为会挂掉。

可靠性总结:

acks=0,生产者发送过来数据就不管了,可靠性差,效率高;

acks=1,生产者发送过来数据Leader应答,可靠性中等,效率中等;

acks=-1,生产者发送过来数据Leader和ISR队列里面所有Follwer应答,可靠性高,效率低;

在生产环境中,acks=0很少使用;acks=1,一般用于传输普通日志,允许丢个别数据;

acks=-1,一般用于传输和钱相关的数据,对可靠性要求比较高的场景。

开发环境:你的本地

测试环境:你们公司搭建的测试平台,跟生产环境基本相似

正式环境(生产环境):公司正在使用的(对外提供服务的)

数据重复分析:

acks: -1(all):生产者发送过来的数据,Leader和ISR队列里面的所有节点收齐数据后应答

记录:acks = -1 有可能出现,数据重复问题

数据发送给了Leader,Follower 也同步成功了,此时准备应答为-1的时候,Leader挂了,Follower顶上,由于发送者不知道数据已经发送成功,会给新的Leader再发消息,此时数据重复。

(二)代码示例与可靠性总结

以下是设置 ACK 机制的代码示例:

package com.bigdata.kafka.producer;

import org.apache.kafka.clients.producer.*;

import java.util.Properties;

public class CustomProducerACKs {

    public static void main(String[] args) {
        // 这个里面放置配置相关信息
        Properties properties = new Properties();
        properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop11:9092");
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");

        // 设置应答机制是哪个级别的,默认是all 等同于 -1
        properties.put(ProducerConfig.ACKS_CONFIG,"all");
        // 重试次数 retries,默认是 int 最大值,2147483647
        properties.put(ProducerConfig.RETRIES_CONFIG, 3);


        KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties);
        for (int i=0;i<5;i++) {
            // 回调函数  本次发送并没有指定分区和Key值,仅仅发送的是value
            // 本地发送到底发给哪个分区呢?   1)随机 2)黏住它  使用的是粘性分区
            kafkaProducer.send(new ProducerRecord<>("first", "nihao: " + i), new Callback() {
                @Override
                public void onCompletion(RecordMetadata metadata, Exception exception) {

                    if(exception == null ){
                        // 通过回调函数,可以获取本次发送的内容和分区
                        int partition = metadata.partition();
                        String topic = metadata.topic();
                        System.out.println("本次发送的主题是:"+topic+",发给了哪个分区:"+ partition);
                    }else{
                        exception.printStackTrace();
                    }

                }
            });


        }

        // 此处如果不close() 发送不了数据
        kafkaProducer.close();
    }
}

在生产环境中,acks = 0 很少使用;acks = 1,一般用于传输普通日志,允许丢个别数据;acks = -1,一般用于传输和钱相关的数据等对可靠性要求比较高的场景。

三、数据去重

(一)数据传递语义

  • 至少一次(At Least Once):等于 ACK 级别设置为 -1 + 分区副本大于等于 2 + ISR 里应答的最小副本数量大于等于 2,可以保障数据可靠,但不能保证数据不重复。
  • 最多一次(At Most Once):等于 ACK 级别设置为 0,能保证数据不重复,但不能保证数据不丢失。
  • 精确一次(Exactly Once):对于一些非常重要的信息,如和钱相关的数据,要求数据既不能重复也不丢失。Kafka 0.11 版本以后,引入了幂等性和事务来保障数据精确一次。

(二)幂等性原理与使用

  • 幂等性原理:幂等性就是指 Producer 不论向 Broker 发送多少次重复数据,Broker 端都只会持久化一条,保证了不重复。其判断标准是具有 <PID, Partition, SeqNumber> 相同主键的消息提交时,Broker 只会持久化一条。其中 PID 是 Kafka 每次重启都会分配一个新的;Partition 表示分区号;Sequence Number 是单调自增的。所以幂等性只能保证在单分区单会话(重启会话就是下一次了)内不重复。如果 kafka 集群挂了,重启后以前的数据可能会再次发送,导致数据重复。
  • 如何使用幂等性:开启参数 enable.idempotence 默认为 true,false 关闭。

(三)生产者事务

Kafka 事务原理

        每一个 broker 都有一个事务协调器,有特定算法确定本次事务对应的事务协调器。

Kafka 的事务 API

        包括 initTransactions(初始化事务)、beginTransaction(开启事务)、sendOffsetsToTransaction(在事务内提交已经消费的偏移量,主要用于消费者)、commitTransaction(提交事务)、abortTransaction(放弃事务,类似于回滚事务的操作)。

// 1 初始化事务
void initTransactions();
// 2 开启事务
void beginTransaction() throws ProducerFencedException;
// 3 在事务内提交已经消费的偏移量(主要用于消费者)
void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets,
 String consumerGroupId) throws 
ProducerFencedException;
// 4 提交事务
void commitTransaction() throws ProducerFencedException;
// 5 放弃事务(类似于回滚事务的操作)
void abortTransaction() throws ProducerFencedException;

单个 Producer 使用事务保证消息的仅一次发送代码示例

package com.bigdata.producter;

import org.apache.kafka.clients.producer.*;

import java.util.Properties;

/**
 *   使用事务+幂等性,保证数据唯一
 */
public class CustomProducer09 {

    public static void main(String[] args) {

        // Properties 它是map的一种
        Properties properties = new Properties();
        // 设置连接kafka集群的ip和端口
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"bigdata01:9092");
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                "org.apache.kafka.common.serialization.StringSerializer");

        // 设置应答机制是哪个级别的,默认是all 等同于 -1
        properties.put(ProducerConfig.ACKS_CONFIG,"all");
        // 重试次数 retries,默认是 int 最大值,2147483647
        properties.put(ProducerConfig.RETRIES_CONFIG, 3);
        // 默认幂等性是开启的,所以不用设置
        // 必须设置事务的ID
        // 设置事务 id(必须),事务 id 任意起名
        properties.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "transaction_id_0");



        // 创建了一个消息生产者对象
        KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties);

        // 初始化事务
        kafkaProducer.initTransactions();

        // 调用这个里面的send方法
        // ctrl + p
        /*ProducerRecord<String, String> producerRecord = new ProducerRecord<String, String>("first","告诉你个秘密");
        kafkaProducer.send(producerRecord);*/
        // 开启事务
        kafkaProducer.beginTransaction();
        try {
            for (int i = 0; i < 5; i++) {
                // 发送消息的时候,指定key值,但是没有分区号,会根据 hash(key) % 3 = [0,1,2]
                ProducerRecord<String, String> producerRecord = new ProducerRecord<String, String>("first", "c", "告诉你个找bigdata的好办法:" + i);
                // 回调-- 调用之前先商量好,回扣多少。
                kafkaProducer.send(producerRecord, new Callback() {
                    @Override
                    public void onCompletion(RecordMetadata metadata, Exception exception) {

                        // 获取很多信息,exception == null 说明成功,不为null,说明失败
                        if (exception == null) {
                            System.out.println("消息发送成功");
                            System.out.println(metadata.partition());// 三个分区,我什么每次都是2分区,粘性分区
                            System.out.println(metadata.offset());// 13 14 15 16 17
                            System.out.println(metadata.topic());
                        } else {
                            System.out.println("消息发送失败,失败原因:" + exception.getMessage());
                        }

                    }
                });
                if(i==3){
                    int a = 10 /0 ;
                }
            }
            // 提交事务
            kafkaProducer.commitTransaction();
        }catch (Exception e){
            // 如果出错了,回滚事务
            kafkaProducer.abortTransaction();
        }finally {
            kafkaProducer.close();
        }


    }
}

四、数据有序

        生产者发送的数据,单分区内可以做到有序,多分区则无法保证,除非把多个分区的数据拉到消费者端进行排序,但这样做效率很低,还不如直接设置一个分区。

五、数据乱序

  • kafka在1.x版本之前保证数据单分区有序,条件如下:

    max.in.flight.requests.per.connection=1(不需要考虑是否开启幂等性)。

  • kafka在1.x及以后版本保证数据单分区有序,条件如下:

    开启幂等性

    max.in.flight.requests.per.connection需要设置小于等于5

    未开启幂等性

    max.in.flight.requests.per.connection需要设置为1

    原因说明:因为在kafka1.x以后,启用幂等后,kafka服务端会缓存producer发来的最近5个request的元数据, 故无论如何,都可以保证最近5个request的数据都是有序的。

 

六、总结

        在 Kafka 生产者的实际应用中,需要根据不同的业务场景和需求,合理设置各种参数,以平衡数据的吞吐量、可靠性、去重、有序性等方面的要求。例如,对于普通日志数据,可以适当牺牲一些可靠性,采用 acks = 1 的设置,提高吞吐量;而对于金融交易等对数据准确性要求极高的场景,则需要开启幂等性和事务,确保数据的精确一次处理。同时,要深入理解各个参数的含义和相互关系,以及不同版本 Kafka 的特性差异,才能更好地优化生产者的性能,构建高效稳定的大数据处理管道。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C高级学习笔记

……接上文 硬链接和软连接&#xff08;符号链接&#xff09; 硬链接 硬链接文件可以理解为文件的副本&#xff08;可以理解为复制粘贴&#xff09; ln 根据Linux系统分配给文件的inode(ls -li)号进行建立&#xff0c;没有办法跨越文件系统 格式&#xff1a;ln 被链接的文件&am…

Java基于SpringBoot+Vue的藏区特产销售平台

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

vim 分割窗口后,把状态栏给隐藏

一、基本环境 主机MacOs Sonoma 14.7主机终端Iterm2虚拟机Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659)虚拟机-操作系统Ubuntu 22.04 最小安装 二、分割窗口后的截图&#xff0c;红色线条部分就是状态栏 分割后个布局是&#xff1a;顶部1行高度窗口&#x…

【数据结构】【线性表】栈的基本概念(附c语言源码)

栈的基本概念 讲基本概念还是回到数据结构的三要素&#xff1a;逻辑结构&#xff0c;物理结构和数据运算。 从逻辑结构来讲&#xff0c;栈的各个数据元素之间是通过是一对一的线性连接&#xff0c;因此栈也是属于线性表的一种从物理结构来说&#xff0c;栈可以是顺序存储和顺…

OpenOCD之J-Link下载

1.下载USB Dirver Tool.exe&#xff0c;选择J-Link dirver&#xff0c;替换成WinUSB驱动。&#xff08;⭐USB Dirver Tool工具可将J-Link从WinUSB驱动恢复为默认驱动⭐&#xff09; 下载方式 ①官方网址&#xff1a;https://visualgdb.com/UsbDriverTool/ ②笔者的CSDN链接&…

【JavaEE初阶 — 多线程】定时器的应用及模拟实现

目录 1. 标准库中的定时器 1.1 Timer 的定义 1.2 Timer 的原理 1.3 Timer 的使用 1.4 Timer 的弊端 1.5 ScheduledExecutorService 2. 模拟实现定时器 2.1 实现定时器的步骤 2.1.1 定义类描述任务 定义类描述任务 第一种定义方法 …

ssm168基于jsp的实验室考勤管理系统网页的设计与实现+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;实验室考勤管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本实验室考勤管…

原生微信小程序在顶部胶囊左侧水平设置自定义导航兼容各种手机模型

无论是在什么手机机型下&#xff0c;自定义的导航都和右侧的胶囊水平一条线上。如图下 以上图iphone12&#xff0c;13PRo 以上图是没有带黑色扇帘的机型 以下是调试器看的wxml的代码展示 注意&#xff1a;红色阔里的是自定义导航&#xff08;或者其他的logo啊&#xff0c;返回之…

Python 获取微博用户信息及作品(完整版)

在当今的社交媒体时代&#xff0c;微博作为一个热门的社交平台&#xff0c;蕴含着海量的用户信息和丰富多样的内容。今天&#xff0c;我将带大家深入了解一段 Python 代码&#xff0c;它能够帮助我们获取微博用户的基本信息以及下载其微博中的相关素材&#xff0c;比如图片等。…

springcloud alibaba之shcedulerx实现分布式锁

文章目录 1、shcedulerx简介2、基于mysq分布式锁实现3、注解方式使用分布式锁4、编码方式使用分布式锁 1、shcedulerx简介 springcloud alibaba shcedulerx看起来有点像xxl job那样的任务调度中间件&#xff0c;其实它是一个分布式锁框架&#xff0c;含有两种实现一种基于DB实…

【LLM训练系列02】如何找到一个大模型Lora的target_modules

方法1&#xff1a;观察attention中的线性层 import numpy as np import pandas as pd from peft import PeftModel import torch import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel, BitsAndBytesConfig from typ…

Selenium的八种定位方式

1. 通过 ID 定位 ID 是最直接和高效的方式来定位元素&#xff0c;因为每个页面中的 ID 应该是唯一的。 from selenium import webdriverdriver webdriver.Chrome(executable_pathpath/to/chromedriver) driver.get(https://example.com)# 通过 ID 定位 element driver.find…

MySQL底层概述—1.InnoDB内存结构

大纲 1.InnoDB引擎架构 2.Buffer Pool 3.Page管理机制之Page页分类 4.Page管理机制之Page页管理 5.Change Buffer 6.Log Buffer 1.InnoDB引擎架构 (1)InnoDB引擎架构图 (2)InnoDB内存结构 (1)InnoDB引擎架构图 下面是InnoDB引擎架构图&#xff0c;主要分为内存结构和磁…

丹摩|丹摩智算平台深度评测

1. 丹摩智算平台介绍 随着人工智能和大数据技术的快速发展&#xff0c;越来越多的智能计算平台涌现&#xff0c;为科研工作者和开发者提供高性能计算资源。丹摩智算平台作为其中的一员&#xff0c;定位于智能计算服务的提供者&#xff0c;支持从数据处理到模型训练的全流程操作…

基于企业微信客户端设计一个文件下载与预览系统

在企业内部沟通与协作中&#xff0c;文件分享和管理是不可或缺的一部分。企业微信&#xff08;WeCom&#xff09;作为一款广泛应用于企业的沟通工具&#xff0c;提供了丰富的API接口和功能&#xff0c;帮助企业进行高效的团队协作。然而&#xff0c;随着文件交换和协作的日益增…

LLM的原理理解6-10:6、前馈步骤7、使用向量运算进行前馈网络的推理8、注意力层和前馈层有不同的功能9、语言模型的训练方式10、GPT-3的惊人性能

目录 LLM的原理理解6-10: 6、前馈步骤 7、使用向量运算进行前馈网络的推理 8、注意力层和前馈层有不同的功能 注意力:特征提取 前馈层:数据库 9、语言模型的训练方式 10、GPT-3的惊人性能 一个原因是规模 大模型GPT-1。它使用了768维的词向量,共有12层,总共有1.…

大模型系列11-ray

大模型系列11-ray PlasmaPlasmaStore启动监听处理请求 ProcessMessagePlasmaCreateRequest请求PlasmaCreateRetryRequest请求PlasmaGetRequest请求PlasmaReleaseRequestPlasmaDeleteRequestPlasmaSealRequest ObjectLifecycleManagerGetObjectSealObject ObjectStoreRunnerPlas…

开源动态表单form-create-designer 扩展个性化配置的最佳实践教程

在开源低代码表单设计器 form-create-designer 的右侧配置面板里&#xff0c;field 映射规则为开发者提供了强大的工具去自定义和增强组件及表单配置的显示方式。通过这些规则&#xff0c;你可以简单而高效地调整配置项的展示&#xff0c;提升用户体验。 源码地址: Github | G…

美创科技入选2024数字政府解决方案提供商TOP100!

11月19日&#xff0c;国内专业咨询机构DBC德本咨询发布“2024数字政府解决方案提供商TOP100”榜单。美创科技凭借在政府数据安全领域多年的项目经验、技术优势与创新能力&#xff0c;入选收录。 作为专业数据安全产品与服务提供商&#xff0c;美创科技一直致力于为政府、金融、…

地平线 bev_cft_efficientnetb3 参考算法-v1.2.1

01 概述 在自动驾驶感知算法中 BEV 感知成为热点话题&#xff0c;BEV 感知可以弥补 2D 感知的缺陷构建 3D “世界”&#xff0c;更有利于下游任务和特征融合。 地平线集成了基于 bev 的纯视觉算法&#xff0c;目前已支持 ipm-based 、lss-based、 transformer-based&#xff…