ClickHouse 24.11 版本发布说明

ClickHouse版本升级 clickhouse数据库升级 阅读详情

图片

本文字数:5883;估计阅读时间:15 分钟

作者: ClickHouse官方

本文在公众号【ClickHouseInc】首发

图片

新的一月,又迎来了新版本的发布!

发布概要

本次ClickHouse 24.11 版本包含了9个新功能🎁、15项性能优化🛷、68个bug修复🐛

在本次更新中,并行哈希 Join 成为默认的 Join 策略,WITH FILL 支持 STALENESS 修饰符,可以预热标记缓存。同时,引入 BFloat16 数据类型,显著提升了向量搜索的速度。

新贡献者

正如往常,我们热烈欢迎 24.11 版本中的所有新贡献者!ClickHouse 的持续流行,很大程度上依赖社区的积极贡献。看到社区的不断壮大,令我们倍感荣幸。

以下是本次版本的新贡献者名单:

0xMihalich, Max Vostrikov, Payam Qorbanpour, Plasmaion, Roman Antonov, Romeo58rus, Zoe Steinkamp, kellytoole, ortyomka, qhsong, udiz, yun, Örjan Fors, Андрей

并行哈希 Join 成为默认策略  

贡献者:Nikita Taranov  

在本次版本中,并行哈希 Join 算法取代了哈希 Join,成为默认的 Join 策略。  

并行哈希 Join 是哈希 Join 的一种改进算法,通过将输入数据分片并并发地构建多个哈希表,实现了更快的 Join 操作,但需要更多内存资源。以下是该算法的查询管道示意图:  

图片

关于并行哈希 Join 的更多技术细节,请参阅博客文章《ClickHouse Joins Under the Hood - Hash Join, Parallel Hash Join, Grace Hash Join》【https://clickhouse.com/blog/clickhouse-fully-supports-joins-hash-joins-part2】。  

除了默认启用外,本次更新还对该算法进行了性能优化。现在,线程间分发的块在并行处理时使用零拷贝技术,避免了每次复制块列所带来的额外开销。  

ORDER BY WITH FILL 引入 STALENESS 修饰符  

贡献者:Mikhail Artemenko  

本次版本为 WITH FILL 引入了 STALENESS 修饰符。以下是结合 MidJourney 数据集的使用示例。假设我们已经下载了 Parquet 文件,可以通过以下查询将数据填充到表中:  

CREATE TABLE images (
    id String,
    timestamp DateTime64,
    height Int64,
    width Int64,
    size Int64

)
ENGINE = MergeTree
ORDER BY (size, height, width);


INSERT INTO images WITH data AS (
  SELECT
    assumeNotNull(timestamp) AS ts,
    assumeNotNull(id) AS id,
    assumeNotNull(height) AS height,
    assumeNotNull(width) AS width,
    assumeNotNull(size) AS size,
    parseDateTime64BestEffort(ts) AS ts2
  FROM file('data/0000{00..55}.parquet')
)
SELECT id, ts2 AS timestamp,  height, width, size
FROM data;

如果我们想统计 2023 年 3 月 24 日某一秒内生成的图像数量,可以通过参数定义起始和结束时间:  

SET param_start = '2023-03-24 00:24:02', 
    param_end = '2023-03-24 00:24:03';

接着,我们可以使用 WITH FILL 子句计算每 100 毫秒的计数,同时为空桶填充值 0:  

SELECT
    toStartOfInterval(timestamp, toIntervalMillisecond(100)) AS bucket,
    count() AS count, 'original' as original
FROM MidJourney.images
WHERE (timestamp >= {start: String}) AND (timestamp <= {end: String})
GROUP BY ALL
ORDER BY bucket ASC
WITH FILL
FROM toDateTime64({start:String}, 3)
TO toDateTime64({end:String}, 3) STEP toIntervalMillisecond(100);
┌──────────────────bucket─┬─count─┬─original─┐
│ 2023-03-24 00:24:02.000 │     0 │          │
│ 2023-03-24 00:24:02.100 │     0 │          │
│ 2023-03-24 00:24:02.200 │     0 │          │
│ 2023-03-24 00:24:02.300 │     3 │ original │
│ 2023-03-24 00:24:02.400 │     0 │          │
│ 2023-03-24 00:24:02.500 │     0 │          │
│ 2023-03-24 00:24:02.600 │     1 │ original │
│ 2023-03-24 00:24:02.700 │     1 │ original │
│ 2023-03-24 00:24:02.800 │     2 │ original │
│ 2023-03-24 00:24:02.900 │     0 │          │
└─────────────────────────┴───────┴──────────┘

本次更新新增的 STALENESS 子句,其功能定义如下(摘自文档):  

当定义了 STALENESS const_numeric_expr 时,查询将生成连续的行,直到前一行与当前行的时间差超过 const_numeric_expr。  

在查询中,STALENESS 和 WITH FILL...FROM 子句不能同时使用,因此我们需要移除 WITH FILL...FROM。移除后,查询将如下所示:

SELECT
    toStartOfInterval(timestamp, toIntervalMillisecond(100)) AS bucket,
    count() AS count, 'original' as original
FROM MidJourney.images
WHERE (timestamp >= {start: String}) AND (timestamp <= {end: String})
GROUP BY ALL
ORDER BY bucket ASC
WITH FILL
TO toDateTime64({end:String}, 3) STEP toIntervalMillisecond(100);

删除 WITH FILL...FROM 子句意味着结果集将从第一个实际存在的值开始,而不是从指定的时间戳回填 0 值。

┌──────────────────bucket─┬─count─┬─original─┐
│ 2023-03-24 00:24:02.300 │     3 │ original │
│ 2023-03-24 00:24:02.400 │     0 │          │
│ 2023-03-24 00:24:02.500 │     0 │          │
│ 2023-03-24 00:24:02.600 │     1 │ original │
│ 2023-03-24 00:24:02.700 │     1 │ original │
│ 2023-03-24 00:24:02.800 │     2 │ original │
│ 2023-03-24 00:24:02.900 │     0 │          │
└─────────────────────────┴───────┴──────────┘

如果为 STALENESS 设置 200 毫秒的值,查询将仅填充空行,直到前一行与当前行的时间差超过 200 毫秒:  

SELECT
    toStartOfInterval(timestamp, toIntervalMillisecond(100)) AS bucket,
    count() AS count, 'original' as original
FROM MidJourney.images
WHERE (timestamp >= {start: String}) AND (timestamp <= {end: String})
GROUP BY ALL
ORDER BY bucket ASC
WITH FILL
TO toDateTime64({end:String}, 3) STEP toIntervalMillisecond(100)
STALENESS toIntervalMillisecond(200);
┌──────────────────bucket─┬─count─┬─original─┐
│ 2023-03-24 00:24:02.300 │     3 │ original │
│ 2023-03-24 00:24:02.400 │     0 │          │
│ 2023-03-24 00:24:02.600 │     1 │ original │
│ 2023-03-24 00:24:02.700 │     1 │ original │
│ 2023-03-24 00:24:02.800 │     2 │ original │
│ 2023-03-24 00:24:02.900 │     0 │          │
└─────────────────────────┴───────┴──────────┘

此时,以下行将从结果集中被移除:  

│ 2023-03-24 00:24:02.500 │     0 │          │

HTTP 接口错误检测  

贡献者:Sema Checherinda  

从现在起,HTTP 接口可以在结果流式传输给客户端之后,仍然可靠地检测到错误。在之前的版本中,如果我们在 ClickHouse Server 上运行以下查询:  

curl http://localhost:8123/?output_format_parallel_formatting=0 -d "SELECT throwIf(number > 100000) FROM system.numbers FORMAT Values"

我们会先看到值流输出,随后附加如下的错误消息:  

Code: 395. DB::Exception: Value passed to 'throwIf' function is non-zero: while executing 'FUNCTION throwIf(greater(number, 100000) :: 2) -> throwIf(greater(number, 100000)) UInt8 : 1'. (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO) (version 24.3.1.465 (official build))

退出代码为 0,这表明查询被认为成功运行。而从 24.11 版本开始,我们将会看到如下输出:  

Code: 395. DB::Exception: Value passed to 'throwIf' function is non-zero: while executing 'FUNCTION throwIf(greater(__table1.number, 100000_UInt32) :: 0) -> throwIf(greater(__table1.number, 100000_UInt32)) UInt8 : 1'. (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO) (version 24.11.1.2557 (official build))
curl: (18) transfer closed with outstanding read data remaining

并且返回了非零退出代码 18。  

Mark 缓存预热  

贡献者:Anton Popov  

Mark 文件将主键映射到每列文件的偏移量,是表索引的一部分。每个表的列都对应一个 mark 文件。这些文件可能占用大量内存,并会按需加载到 mark 缓存中。  

从 24.11 版本开始,你可以通过 mark_cache_prewarm_ratio 参数预热 mark 缓存,该参数默认值为 95%。  

服务器会在每次插入、合并或提取数据部分时主动将 mark 文件加载到内存缓存中,直到缓存几乎填满。  

此外,新增了一个系统命令 SYSTEM PREWARM MARK CACHE t,可以立即将所有 mark 文件加载到缓存中。  

BFloat16 数据类型  

贡献者:Alexey Milovidov  

BFloat16 数据类型由 Google Brain 团队开发,专用于表示向量嵌入。顾名思义,它由 16 位组成,其中 1 位为符号位,8 位为指数,7 位为尾数(小数部分)。  

图片

这一数据类型的指数范围与 Float32(单精度浮点数)相同,但尾数位数较少(7 位,而非 23 位)。  

现在,ClickHouse 已支持 BFloat16 数据类型,非常适合用于 AI 和向量搜索场景。要使用这一新类型,需要进行以下参数配置:  

SET allow_experimental_bfloat16_type=1;

我们在 AWS c7a.metal-48xl 实例上进行了一项性能测试,对 28 百万个 384 维向量进行完整扫描的最近邻搜索,结果如下:  

clickhouse-benchmark --query "WITH
[-0.02925783360957671,-0.03488947771094666,...,0.032484047621093616]::Array(BFloat16)
AS center SELECT d FROM (SELECT cosineDistance(vector, center) AS d
    FROM hackernews_llama_memory ORDER BY d LIMIT 10
) SETTINGS allow_experimental_bfloat16_type = 1"
BFloat16: 0.061 sec, 301 GB/sec.
Float32: 0.146 sec, 276 GB/sec.

征稿启示

面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com

​

Ubuntu20安装clickhouse最新版本详细教程 文章目录环境说明:安装步骤:第1步:检查是否支持SSE4.2(一般都支持)第2步:为apt添加clickhouse仓库第3步:添加依赖并更新apt数据库第4步:安装clickhouse服务端及客户端第5步:启动clickhouse第6步:客户端连接测试第7步:DBeaver客户端连接clickhouse 环境说明: 系统版本:Ubuntu20.04 LTS 64位 clickhouse版本:21.2.3.15 说明:以下所有操作都是在有sudo权限的普通用户(wedo)下操作的,你若使用root用户操作的话 阅读详情

相关推荐

ClickHouse 版本升级

ClickHouse 版本升级

style_boy的博客 3449

ClickHouse 24.1 版本发布说明

ClickHouse 在 2024 年的首个新版本发布来了!

ClickHouseDB的博客 2659

【Clickhouse从入门到精通】第60篇:ClickHouse生态总结与未来展望

ClickHouse系列收官总结 本文作为《ClickHouse从入门到精通》系列的第60篇收官之作,系统回顾了整个系列的知识体系。文章从基础概念到高级应用,全面梳理了ClickHouse的核心技术: 知识体系:完整回顾了60篇文章的知识图谱,包括列式存储原理、MergeTree引擎家族、分布式架构等核心内容 生态工具:详细盘点了ClickHouse的企业版工具、运维监控、数据集成和可视化方案 版本演进:分析了从21.x到24.x的主要版本特性升级 未来趋势:展望了向量化引擎、湖仓一体、AI集成等发展方向

xyghehehehe的专栏 439

ClickHouse 23.12 版本发布说明

迎接2024年圣诞节后的第一个新版本。

ClickHouseDB的博客 2130

clickhouse集群的安装与部署

clickhouse集群的安装与部署

风中凌乱的专栏 1980

CentOS 7 部署 ClickHouse 22.8 LTS 实战指南

ClickHouse 是一款面向 OLAP 场景的高性能列式数据库,其核心优势在于向量化执行引擎与极致压缩比带来的亚秒级分析能力。在企业级生产环境中,CentOS 7 因其长期稳定性与广泛兼容性仍被大量政企、金融及交通监控系统采用,但其较旧的 glibc 2.17、OpenSSL 1.0.2k 和 systemd 219 等组件常导致新版 ClickHouse 安装失败或运行异常。本文聚焦于官方兼容的 22.8.12.1 LTS 版本,详解如何在最小化 CentOS 7 环境中绕过依赖冲突、SELinux

weixin_33862993的博客 523

ClickHouse 23.11 版本发布说明

23.11版本新增25个新功能,实现了24项性能优化,修复了70处bug。

ClickHouseDB的博客 1436

Windows 11 上通过 WSL2 与 Docker 部署 ClickHouse 实战指南

本文详细介绍了在Windows 11上通过WSL2与Docker部署ClickHouse的完整实战指南。从环境准备、Docker配置到ClickHouse容器化部署,逐步讲解关键步骤和优化技巧,帮助开发者快速搭建高性能的ClickHouse测试环境。文章还包含常见问题排错和高级配置建议,特别适合数据分析师和数据库管理员参考。

weixin_30897079的博客 228

ClickHouse 25.11 版本发布说明

本次发布新增了 ACME 集成、小型 GROUP BY 的并行合并、投影作为辅助索引等多项实用功能!

ClickHouseDB的博客 997

BERTopic安装指南:hdbscan依赖问题全解析(附解决方案)

本文详细解析了安装BERTopic时常见的hdbscan依赖报错问题,深入剖析了C++编译环境缺失、Python版本兼容性以及包管理渠道混用三大核心原因。针对Windows、macOS和Linux不同系统,提供了创建虚拟环境、使用conda安装预编译包、安装C++编译工具等具体解决方案,帮助用户顺利安装BERTopic并开始文本主题建模实践。

weixin_29061041的博客 212

零基础玩转STM32CubeIDE LL库:5分钟搞定串口通信(附完整代码)

本文为零基础开发者提供了一份STM32CubeIDE LL库串口通信的快速实战指南。通过CubeMX配置、LL库核心API详解,以及中断接收与环形缓冲区的完整代码实现,帮助读者在5分钟内搭建稳定可靠的串口收发框架,解决从HAL切换到LL库的常见困惑,提升嵌入式开发效率。

weixin_29159441的博客 306

ClickHouse 25.9 版本发布说明

ClickHouse 25.9 版本共带来了 25 项新功能 🍎、 22 项性能优化 🍁、 以及 83 个bug修复 🌿。

ClickHouseDB的博客 1928

TLV320AIC3204音频CODEC硬件设计与调试实战

本文深入解析了TLV320AIC3204音频CODEC的硬件设计与调试实战。文章从芯片功能定位入手,详细阐述了电源时钟设计、模拟输入电路等关键硬件设计要点,并提供了软件驱动配置与分层调试方法,帮助工程师有效规避常见陷阱,解决底噪、失真等典型音频调试问题。

zero1的博客 1122

ClickHouse Release 23.10 版本发布说明

新的功能包括SHOW MERGES和SHOW SETTINGS命令,新的byteSwap、arrayRandomSample、jsonMergePatch等等

ClickHouseDB的博客 1448

Windows11安装UE4+Airsim

Windows11安装UE4+Airsim

Legendyyy的博客 3743

机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)

移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大量应用,人们对机器人的要求也越来越高,尤其表现在对机器人的智能化方面的要求,而机器人自主路径规划是实现机器人智能化的重要步骤,路径规划是指规划机器人从起点位置出发,无碰撞、安全到达指定目标位置的最优路径。

IT猿手 1367

ClickHouse 25.1 版本发布说明

本文字数:12318;估计阅读时间:31 分钟作者: ClickHouse Team本文在公众号【ClickHouseInc】首发又到了每月发布新版本的时间!发布概要ClickHouse 25.1 版本正式发布,本次更新带来了🦃、在本次发布中,我们优化了并行哈希连接算法,引入了二级哈希表进行加速;在表级别新增了 MinMax 索引;改进了 Merge 表;增加了自增功能……还有更多精彩更新等你探索!热烈欢迎 25.1 版本的新贡献者!

ClickHouseDB的博客 1841

fpga学习——zynq图像处理中的DVP流接口封装

之前文章介绍了基于zynq的图像处理架构问题。其中,作为开发者,需要重点关注图像传感器接口、处理算法、显示接口,这些模块。现在我们一同学习用于视频数据接口的DVP模块,并将其封装成AXI-stream接口便于直接和VDMA IP通信。 DVP_AXI stream IP v1.0使用说明 1.设计概述 •用于cmos传感器视频数据采集,将cmos输出的8位视频数据拼接成RGB 565模式 •AXI_stream主机接口,用于和PS端内存的数据交互 •基于vivado 18.3软件设计 2.模块分析

weixin_41895751的博客 4581

ClickHouse 23.7 版本发布说明

31个新功能、16项性能优化、47项bug修复,本文描述了一小部分特别值得重点关注的新功能

ClickHouseDB的博客 943

专栏二十:如何选择你的单细胞亚群的分辨率--ROGUE

ROGUE这是继chooseR后第二个计算单细胞亚群分辨率的内容,其实关于代码的运行很简单,网上已经有不少教程,重复这些就没意思了,这里主要是结合探讨一下这个算法。

m0_58549466的博客 981

【Leetcode】269.火星词典(Hard)

应用拓扑排序

明朗晨光的专栏 765

centos7安装clickhouse

yum 方式安装(默认安装的最新版)登录后复制 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo sudo yum install -y ...

weixin_41486350的博客 264

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一文解决 ClickHouse Docker 三大致命报错:版本兼容、ZK DNS、后台合并池参数冲突

本文记录了使用Docker版ClickHouse(24.3.2.23)承载Webfunny埋点业务时遇到的三大生产故障及解决方案。重点解决:1)容器启动失败问题,通过调整merge_tree线程池参数和修复ZK连接配置;2)UPDATE操作不生效问题,需扩容后台线程池并优化表级并发设置;3)Node镜像兼容性问题。文章提供了可直接复用的配置代码和优化建议,涵盖线程池调优、Mutation机制解析、业务隔离方案等核心内容,特别适用于埋点/APM类高并发写入场景的ClickHouse生产运维。

yulei0524的专栏 320

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于OpenTelemetry与ClickHouse构建AI大模型服务监控系统实战

在微服务与云原生架构中,应用性能监控(APM)是保障系统稳定性的关键技术,它通过采集、分析和可视化关键指标来洞察服务运行状态。其核心原理在于利用分布式追踪、指标和日志三大支柱,实现对服务链路、资源利用和业务行为的全方位观测。对于AI大模型服务而言,传统的APM工具难以覆盖其特有的成本与性能维度,如Token消耗和模型推理延迟,这导致成本控制和体验优化成为盲区。因此,构建专门的AI服务监控体系具有重要技术价值,它能实现精细化的成本核算、性能瓶颈定位及异常请求识别。本文聚焦于响应延迟与Token消耗这两个核心可

weixin_34032621的博客 750

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

postgresql+rabbitmq+clickhouse集群搭建方案

本文档介绍了一个基于PostgreSQL和RabbitMQ的高可用集群搭建方案,使用三台服务器(192.168.1.6主节点、192.168.1.89备节点、192.168.1.83兜底节点)。方案包含PostgreSQL集群(Patroni+etcd实现自动故障转移)、PgBouncer连接池、HAProxy负载均衡、Keepalived保障VIP高可用,以及RabbitMQ消息队列集群。详细说明了各组件的功能、端口分配和基础配置步骤,包括PostgreSQL用户创建、网络配置和RabbitMQ安装脚本。

技术分享博客 558

从 MySQL 到 ClickHouse 实时数据同步 —— Debezium + Kafka 表引擎

使用 Debezium + Kafka 表引擎方案从 MySQL 到 ClickHouse 实时同步数据

wzy0623的专栏 2772
上一篇: ClickHouse 官方文档:如何与 OpenTelemetry 集成【4/5】
下一篇: ClickHouse 官方文档:如何使用 Grafana 分析数据【5/5】
ClickHouseDB
博客等级 码龄3年 1707粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值